관리 메뉴

Leo's Garage

AURIX™ MCU: PWM signal generation using CCU6 – KBA236919 본문

Embedded/AURIX

AURIX™ MCU: PWM signal generation using CCU6 – KBA236919

LeoBehindK 2023. 6. 27. 21:55
728x90
반응형

* 아래 글은 제가 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 신호를 생성하려면 다음을 수행합니다:

  1. CCU61_CLC.DISR bit를 clear하여 CCU61 커널을 사용하도록 설정합니다.
  2. CCU61_TCTR0 control register에서 divider의 T12(T12CLK) 및 presaler 값(T12PRE)에 대한 입력 클럭을 설정하여 CCU61 커널의 주파수를 구성합니다.
  3. CCU61_TCTR0 control register에서 T12의 업카운트 방향(CDIR)을 구성합니다.
  4. CCU61_TCTR0 control register에서 T12의 center-aligned 작동 모드(CTM)를 구성합니다.
  5. CCU61_T12PR period register 내의 T12에 대한 주기 값을 설정합니다.
  6. CCU61_CC6xSR(x = 0 - 2) register에서 채널 CC6x에 대한 shadow compare value(CCS)을 설정합니다.
  7. CCU61_T12DTC.DTEx(x = 0 - 2) 비트를 설정하여 T12의 비교 채널 CC6x에 대해 데드 타임 생성을 활성화합니다.
  8. CCU61_T12DTC.DTM 비트 필드를 사전에 선택한 출력의 수동 상태에서 활성 상태로 전환하는 사이의 지연을 설정합니다.
  9. CCU61_MCMCTR register에서 MCMPS에서 MCMP로의 shadow transfer MCM_ST에 대한 트리거 요청 소스(SWSEL)로 T12 주기 일치(카운트업 중)를 선택합니다.
  10. CCU61_MCMCTR register에서 shadow transfer 이벤트의 동기화 메커니즘(SWSYN)을 구성합니다.
  11. CCU61_MCMOUTS register에서 다중 채널 PWM 패턴 shadow(MCMPS) 비트 필드를 구성합니다.
  12. CCU61_T12MSEL(x = 0 - 2) register에서 CC6x 채널에 대한 비교 작동 모드(MSEL6x)를 구성합니다.
  13. CC6x 및 COUT6x 출력의 패시브 상태(x = 0 - 2)를 선택합니다:[ - 비트 CCU61_CMPSTAT를 삭제합니다.CC6xPS, CC6xST가 0인 동안 CC6x 출력은 패시브 상태입니다.- 비트 CCU61_CMPSTAT를 설정합니다.COUT6xPS, COUT6x 출력은 패시브 상태이고 CC6xST는 1입니다.]
  14. CCU61_MODCTR.T12MODEN 비트에서 T12에 의해 생성된 PWM 패턴에 의해 해당 출력 신호의 변조를 활성화합니다.
  15. CCU61_MODCTR.MCMEN 비트을 설정하여 MCMOUT 비트 필드에 따라 멀티 채널 패턴으로 해당 출력 신호를 변조할 수 있습니다.
  16. CCU61_TCTR0.STE12 비트을 설정하여 T12 그림자 전송 이벤트가 감지되면 그림자 register에서 실제 레지스터로 T12 주기 값, 비교 값, 패시브 상태 선택 비트 및 레벨의 그림자 전송을 활성화합니다.
  17. 포트 입력/출력 제어 register 구성(예: P00_IORC0 및 P00_)IORC4). CCU61)에 연결된 핀에 대한 자세한 내용은 데이터시트를 참조하십시오.
  18. CCU61_TCTR4.T12RS 비트를 설정하여 타이머 T12를 시작합니다.
  19. 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 주파수의 보완적인 신호입니다.:

Figure1 생성된 신호들

수정된 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

 

728x90
반응형
Comments