일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- probability
- backtest
- 토플
- 퀀트
- 토플 라이팅
- 백테스트
- 클라우드
- 암호화폐
- 블록체인
- AUTOSAR
- 자동매매
- 프로그래밍
- python
- 비트코인
- TOEFL
- it
- AWS
- can
- 확률
- 아마존 웹 서비스
- Cloud
- 개발자
- Bitcoin
- 오토사
- backtrader
- toefl writing
- 백트레이더
- GeorgiaTech
- 자동차sw
- Today
- Total
Leo's Garage
AURIX™ MCU: PWM signal generation using CCU6 – KBA236919 본문
AURIX™ MCU: PWM signal generation using CCU6 – KBA236919
LeoBehindK 2023. 6. 27. 21:55* 아래 글은 제가 Infineon Developer Community에 작성한 글입니다.
CCU6는 주로 AC 드라이브 제어를 위한 애플리케이션별 모드를 갖춘 고해상도 16비트 Caputre 및 Compare 장치(CCU)입니다. CCU6 모듈은 CCU60 및 CCU61이라는 두 개의 동일한 커널로 구성됩니다. 각 커널에는 타이머 T12 및 타이머 T13이라는 두 개의 타이머가 있습니다. T12는 center-aligned 또는 edge-aligned 동기화된 PWM 신호를 최대 3개까지 생성할 수 있는 세 개의 Comparator로 구성됩니다.
CCU61 커널을 사용하여 데드타임이 있는 세 쌍의 complemetary center-aligned PWM 신호를 생성하려면 다음을 수행합니다:
- CCU61_CLC.DISR bit를 clear하여 CCU61 커널을 사용하도록 설정합니다.
- CCU61_TCTR0 control register에서 divider의 T12(T12CLK) 및 presaler 값(T12PRE)에 대한 입력 클럭을 설정하여 CCU61 커널의 주파수를 구성합니다.
- CCU61_TCTR0 control register에서 T12의 업카운트 방향(CDIR)을 구성합니다.
- CCU61_TCTR0 control register에서 T12의 center-aligned 작동 모드(CTM)를 구성합니다.
- CCU61_T12PR period register 내의 T12에 대한 주기 값을 설정합니다.
- CCU61_CC6xSR(x = 0 - 2) register에서 채널 CC6x에 대한 shadow compare value(CCS)을 설정합니다.
- CCU61_T12DTC.DTEx(x = 0 - 2) 비트를 설정하여 T12의 비교 채널 CC6x에 대해 데드 타임 생성을 활성화합니다.
- CCU61_T12DTC.DTM 비트 필드를 사전에 선택한 출력의 수동 상태에서 활성 상태로 전환하는 사이의 지연을 설정합니다.
- CCU61_MCMCTR register에서 MCMPS에서 MCMP로의 shadow transfer MCM_ST에 대한 트리거 요청 소스(SWSEL)로 T12 주기 일치(카운트업 중)를 선택합니다.
- CCU61_MCMCTR register에서 shadow transfer 이벤트의 동기화 메커니즘(SWSYN)을 구성합니다.
- CCU61_MCMOUTS register에서 다중 채널 PWM 패턴 shadow(MCMPS) 비트 필드를 구성합니다.
- CCU61_T12MSEL(x = 0 - 2) register에서 CC6x 채널에 대한 비교 작동 모드(MSEL6x)를 구성합니다.
- CC6x 및 COUT6x 출력의 패시브 상태(x = 0 - 2)를 선택합니다:[ - 비트 CCU61_CMPSTAT를 삭제합니다.CC6xPS, CC6xST가 0인 동안 CC6x 출력은 패시브 상태입니다.- 비트 CCU61_CMPSTAT를 설정합니다.COUT6xPS, COUT6x 출력은 패시브 상태이고 CC6xST는 1입니다.]
- CCU61_MODCTR.T12MODEN 비트에서 T12에 의해 생성된 PWM 패턴에 의해 해당 출력 신호의 변조를 활성화합니다.
- CCU61_MODCTR.MCMEN 비트을 설정하여 MCMOUT 비트 필드에 따라 멀티 채널 패턴으로 해당 출력 신호를 변조할 수 있습니다.
- CCU61_TCTR0.STE12 비트을 설정하여 T12 그림자 전송 이벤트가 감지되면 그림자 register에서 실제 레지스터로 T12 주기 값, 비교 값, 패시브 상태 선택 비트 및 레벨의 그림자 전송을 활성화합니다.
- 포트 입력/출력 제어 register 구성(예: P00_IORC0 및 P00_)IORC4). CCU61)에 연결된 핀에 대한 자세한 내용은 데이터시트를 참조하십시오.
- CCU61_TCTR4.T12RS 비트를 설정하여 타이머 T12를 시작합니다.
- CCU61_TCTR4.T12STR 비트를 설정하여 섀도 전송을 활성화합니다.
Compare mode에서 CCU61_CC6xR(x = 0 - 2) register는 T12의 실제 compare register입니다. CCU61_CC6xR(x = 0 - 2)에 저장된 값은 T12의 카운터 값과 비교되며(3개 채널 모두 병렬로) SW에서만 읽을 수 있습니다.
값 수정은 CCU61_CC6xSR(x = 0 - 2) register에서 shadow register transfer을 통해 수행되며, 해당 shadow register는 SW에서 읽고 쓸 수 있습니다.
계산 예제
20 kHz 주파수와 25%, 50%, 75%의 듀티 사이클을 갖는 중앙 정렬 PWM 신호를 생성하기 위한 올바른 비교 값을 찾으세요. 각 PWM 쌍마다 필요한 데드 타임은 1ms입니다.
만약 fT12 = fCC6 = 100 MHz (CCU61_TCTR0.T12CLK = 0x0), 프리스케일러가 비활성화되어 있고 (CCU61_TCTR0.T12PRE = 0x0), 중앙 정렬 모드가 선택된 경우 (CTM = 0x1), 주기 값(CCU61_T12PR)은 다음과 같이 계산될 수 있습니다:
중앙 정렬 모드가 사용되므로, 주어진 주기값을 기반으로 duty cycle 값을 계산할 수 있습니다. :
각 채널에 대한 데드타임 생성이 활성화되면, 파워 스테이지에서의 단락을 방지할 수 있습니다. 데드타임 값은 틱으로 계산할 수 있습니다.:
아래는 생성된 PWM 신호를 보여줍니다. 중앙 정렬된 PWM 신호는 채널당 1ms의 dead time을 가진 20kHz 주파수의 보완적인 신호입니다.:
수정된 Register 목록:
CCU61_CLC
CCU61_TCTR0
CCU61_T12PR
CCU61_CC6xSR (x = 0 - 2)
CCU61_T12DTC
CCU61_MCMCTR
CCU61_MCMOUTS
CCU61_T12MSEL
CCU61_CMPSTAT
CCU61_MODCTR
CCU61_TCTR4
Note: 모든 나열된 register는 Infineon의 low level driver pacakges에서 찾을 수 있습니다. (…/Infra/Sfr).
Note : 이 KBA는 다음 시리즈의 AURIX™ MCU에 적용됩니다.
:
AURIX™ TC2xx series
AURIX™ TC3xx series
'Embedded > AURIX' 카테고리의 다른 글
[AURIX] SCR(Standby Controller) 개요 (0) | 2023.11.27 |
---|---|
AURIX TC3xx EVADC Self Diagnostic - Converter Diagnostics (0) | 2023.07.20 |
MCAL IRQ과 AUTOSAR OS ISR 연결 (0) | 2023.07.18 |
AURIX™ MCU: Determining the clock tree path from source to derive SPI bus baud rate - KBA237424 (0) | 2023.06.27 |
TC387 PMS(Power Management System) - PBIST와 internal Monitor (0) | 2023.02.08 |