본문 바로가기
임베디드 개발/TMS320F2838x (C28x)

TMS320F28388D ] ECAP

by eteo 2023. 8. 14.

 

 

ECAP

 

CAP 은 Capture 의 약자로 펄스 신호의 시간정보를 검출하는 기능을 한다. 펄스의 Rising edge와 Falling edge 시간 정보를 확인하여 주기, 듀티 등을 측정할 수 있고, 펄스의 특정 edge에서 인터럽트를 발생시킬 수도 있다.

 

 

 

 

ECAP의 사용 예

 

  • 회전체의 속도 검출
  • 신호의 Pulse period, Duty ratio 측정
  • 출력이 PWM 타입인 센서의 정보 디코딩

 

 

 

 

ECAP의 특징

 

 

TMS320F28388D 칩에는 7개의 eCAP 모듈이 있다.

 

 

 

 

그리고 eCAP 모듈의 특징은 다음과 같다.

 

 

  • 200MHz 시스템 클럭사용, 5ns의 시간 분해능
  • 캡쳐 핀은 Input X-BAR를 통해 라우팅되므로 어떤 GPIO든 사용 가능
  • 32-bit 타이머 기반
  • 4개의 32-bit 타임 스탬프 캡쳐 레지스터 존재 (CAP1-CAP4)
  • 각 타임 스탬프 캡쳐 이벤트를 발생시키기위한 극성 rising/falling edge 설정 가능
  • 4개의 타임스탬프 레지스터를 cicular buffer로 continuous 캡쳐 가능
  • 4개의 캡쳐 이벤트를 인터럽트 소스로 사용 가능
  • Absolute time-stamp cature 와 Difference (Delta) mode time-stamp cature 존재
  • eCAP을 캡쳐모드로 사용하지 않는경우 단상 PWM출력(APWM)으로 사용 가능

 

 

 

 

 

Input X-Bar

 

 

 

 

Input X-Bar는 eCAP처럼 입력신호가 필요한 모듈이 사용하는 핀을 특정핀으로 고정하지 않고, 모든 GPIO 핀중에 하나를 선택해서 사용할 수 있게하는 것으로 유연한 회로설계를 가능하게 한다.

 

 

 

 

 

 

 

Capture Mode / APWM Mode

 

 

eCAP 모듈을 캡쳐모드로 사용할 경우 CAP1, CAP2, CAP3, CAP4 레지스터들은 입력받는 펄스 신호의 순차적인 edge 이벤트의 타임스탬프 카운터 정보를 저장하는 기능을 한다.

반면 eCAP 모듈을 APWM 모드로 사용할 경우 CAP1, CAP2는 액티브 레지스터로, CAP3, CAP4는 쉐도우 레지스터로 사용된다.

 

 

 

 

 

 

 

 

 

eCAP Block Diagram

 

 

 

세부 블락별로 살펴보자.

 

 

 

 

 

 

 

Event Prescaler

 

 

 

입력신호의 분주를 결정하는 부분이다.

입력신호는 맨처음 Event Prescaler를 거치게 되는데 n(2-62, 2의 배수)으로 분주할 수 있고, 1로 설정하는 경우 원 신호 그대로 바이패스된다.

 

 

 

 

Edge Polarity Select and Qualifier

 

4개의 캡쳐 이벤트를 위한 독립적인 4개의 Edge Polarity Selection muxes가 존재하며,

ECCTL1.CAPxPOL 레지스터의 값이 0이면 상승 edge를 인식, 1이면 하강 edge를 인식한다.

 

그리고 입력 신호에서 순차적으로 설정된 Edge detect 시 CEVTx 이벤트가 발생하고 ECCTL1.CAPLDEN 레지스터에 따라 CAPx 레지스터에 해당 시점에 카운팅 하고 있던 카운터 값이 로드된다.

 

 

 

* CAPxPOL이 전부 0인 경우

 

 

 

* CAP1POL, CAP3POL은 0이고, CAP2POL, CAP4POL은 1인 경우

 

 

 

 

 

 

 

 

 

 

 

 

 

Continuous / One-Shot Control

 

 

Continuous 또는 One-Shot 모드 설정 유닛에는 2-bit의 Modulo4 카운터가 있는데 이 카운터는 CEVTx 신호를 클럭으로 사용하는 카운터인데 CEVTx가 발생할 때마다 0->1->2->3->0 순으로 증가한다.

 

그리고 ECCTL2.STOP_WRAP 레지스터 설정을 통해 Modulo4 카운터를 어떤 값에서 STOP 또는 WRAP할 지 Stop value를 선택할 수 있고 이 bits의 리셋시 기본값은 3이다.

 

모드 설정은 ECCTL2.CONT_ONESHT 레지스터를 통해 가능한데,

Continuous 모드인 경우 별도의 재시작(RE-ARM) 명령없이 Mod4 카운터는 CEVTx 신호에 따라 0~3 값으로 증가 및 초기화를 반복하게 된다.

반면 One Shot 모드인 경우 Mod4 카운터가 Stop value와 동일 할 때 카운터는 멈추며 재시작을 위해선 별도의 ECCTL2.RE-ARM 레지스터 set이 필요하다. (STOP 상태에선 캡쳐 레지스터 로드와 인터럽트가 블락된다.)

 

 

 

 

 

 

 

 

 

 

 

32-Bit Counter and Phase Control

 

 

 

 

32-bit 카운터인 TSCTR은 시스템 클럭을 사용하며, 이벤트 캡쳐를 위한 타임 베이스를 제공한다.

TSCTR[0-31]의 값은 캡쳐 모드로 사용될 때 입력 신호의 Edge에 의해 CEVTx 발생 시 CAPx 레지스터에 로드되는 값으로 사용되고, APWM 모드로 사용될 때는 각 모듈 사이의 위상 오프셋으로 사용된다.

 

또한 ECCTL1.CTRRSTx 레지스터 설정을 통해 각 캡쳐 레지스터 로드 시그널에 맞춰 TSCTR 카운터를 리셋할 수 있다.

 

 

 

* Absolute Time Stamp Operation

 

ECCTL1.CTRRSTx 레지스터가 모두 0인 경우 CEVT 발생과 무관하게 32-bit TSCTR 카운터는 최대값인 0xFFFFFFFF에 도달할 때까지 증가한다.

 

 

* Time Difference (Delta-mode) Operation

 

ECCTL1.CTRRSTx 레지스터가 모두 0인 경우, CEVTx가 발생할 때마다 TSCTR 카운터 값이 초기화되어, CEVT 간의 간격(Delta)을 알 수 있다.

 

 

 

 

 

 

 

 

CAP1-CAP4 Registers

 

캡쳐 모드로 사용할 경우 Polarity Select에서 설정해둔 edge에 의해 CEVT가 발생 시 해당 시점에 카운트 되던 타임스탬프 카운터 값이 CAPx 레지스터에 순서대로 자동 로드된다. 따라서 CAPx 값을 확인하고 연산하면 주파수, 펄스 폭, 속도 등과 같이 필요한 데이터를 얻을 수 있다.

 

 

 

 

 

 

 

Interrupt

 

 

 

캡쳐 모드로 사용시 각 캡쳐 이벤트(CEVTx) 발생 시 인터럽트가 생성되고, 타임스탬프 카운터의 오버플로우(CTROVF)(FFFFFFFF->00000000) 이벤트 역시 인터럽트 소스로 제공된다.

 

 

 

 

 

참고 :

전력전자시스템 제어를 위한 DSP, TMS320F28335 기술