S32K144 에는 FTM0~FTM3 네 개가 있고 각각 채널 여럿을 갖는다.
이 프로젝트의 채널 배분
FTM0 CH0~2 RGB LED 12비트 @ 19.5 kHz
FTM1 CH0 공조 팬 @ 25 kHz (4선 팬)
FTM2 CH0/1 펠티어 H-브리지 @ 2 kHz, 데드타임 1 µs, 상보
FTM3 CH0 공조 팬 tach 입력 캡처
CH1 방열팬
모듈을 나눈 이유는 주파수가 다르기 때문이다. 같은 FTM 의 채널은 카운터와 MOD 를 공유한다.
세 가지 일을 한다
① PWM 생성 — 카운터가 CnV 값에 도달하면 출력을 뒤집는다. CnV 쓰기는 다음 주기 경계에서 반영되므로(레지스터 버퍼링) 여러 채널을 연속으로 써도 같은 주기에 함께 적용된다. RGB 색이 순간적으로 어긋나지 않는 이유.
② 입력 캡처 — 외부 신호의 엣지 시각을 기록한다. 팬 tach 펄스 주기 측정이나 초음파 비행 시간 측정이 이걸 쓴다.
③ 데드타임 삽입 — 상보 출력에서 위·아래 스위치가 동시에 켜지지 않게 하드웨어로 공백을 넣는다.
ADC 트리거 소스도 된다
FTM 카운터가 지정 값에 도달하면 TRGMUX 를 거쳐 ADC 변환을 시작시킬 수 있다. PWM ON 구간 중앙에서 전류를 재는 것이 이 경로로 구현된다(PWM 동기 ADC 참고).