반도체 Study/STM32

STM32 - TIM 이론

잇(IT) 2024. 6. 11. 20:04
728x90

STM32F429의 Clock은 최대 180MHz 속도로 동작할 수 있다. 단 동작 속도가 빠르면 전력 소모가 많기 때문에 전력 소모를 고려하여 최대 속도로 동작 시킬 필요가 없다.

 

STM32F429

Nucleo Board는 내부에 16MHz의 CPU clock과 32KHz의 RTC(Real Time Clock)가 있다.

CPU clock은 HSE, HSI 중 하나를 선택할 수 있고 초단위 시간을 측정하는 RTC LSE, LSI 중 하나를 선택 가능하다.

HSE : High Speed External

HSI : High Speed Internal

LSE : Low Speed External (32.768KHz)

LSI : Low Speed Internal (32KHz)

 

RTC clock에 해당하는 LSE 32.768KHz 크리스탈을 사용할 수 있다.

 

내부 클럭의 경우 오차가 빈번하게 발생하므로, 가급적 외부 크리스탈을 사용하는 것이 좋다.


타이머의 종류

 

SysTick : 항상 동작하는 시스템 타이머, HAL_Delay() 함수등에 사용된다.

WatchDog Timer(IWDG, WWDF) : CPU의 오동작을 탐지하여 문제가 발생하면 재부팅 시켜주는 타이머

Basic Timer : 입출력 기능은 없고 시간 기반 타이머나 DAC의 트리거 용도로만 사용되는 타이머, TIMx(x: 6, 7)

General purpose Timer : Up/Down, 입력캡쳐, 출력비교, PWM, 원펄스, 센서 인터페이스(엔코더, 홀 센서) 용도로 범용으로 사용하는 타이머, TIMx(x : 2~5, 9~14)

Advanced-control Timer : 고급 제어 타이머로 범용 타이머보다 많은 기능을 가지는 타이머, 주로 모터 제어와 디지털 파워변환 용도로 사용가능하며 데드 타임을 가지는 3상 출력, 비상 셧다운 입력등의 기능이 추가된다. TIM(x : 1, 8)

Timer Type Resolution Prescaler Channels MAX INTERFACE CLOCK MAX TIMER CLOCK* APB
TIM1, TIM8 Advanced 16bit 16bit 4 SysClk/2 SysClk 2
TIM2, TIM5 General purpose 32bit 16bit 4 SysClk/4 SysClk/2 1
TIM3, TIM4 General purpose 16bit 16bit 4 SysClk/4 SysClk/2 1
TIM9 General purpose 16bit 16bit 2 SysClk/2 SysClk 2
TIM10, TIM11 General purpose 16bit 16bit 1 SysClk/2 SysClk 2
TIM12 General purpose 16bit 16bit 2 SysClk/4 SysClk/2 1
TIM13, TIM14 General purpose 16bit 16bit 1 SysClk/4 SysClk/2 1
TIM6, TIM7 Basic 16bit 16bit 0 SysClk/4 SysClk/2 1

타이머의 특징

 

범용 타이머의 주요 구성 요소

- PSC : Prescaler

- CNT : Counter

- ARR : Auto Reload Register

- CCR : Capture / Compare Register

 

엔코더 및 홀(Hall) 센서 인터페이스가 가능하다.

 

6개의 독립적인 IRQ/DMA 요청 신호를 발생한다.

- 업데이트 이벤트 발생시

- 캡쳐/비교 이벤트 발생시

- 입력 트리거 발생시

 

PSC(Prescaler)

- 16bit의 프리스케일러는 공급되는 클럽(TIMx_CLK 또는 CK_PSC)을 1~65536(16bit)의 값으로 나누어 카운터의 동작 클럭(CK_CNT)을 만들어 내는 분주기

 

Counter

- 16bit의 카운터는 타이머의 핵심적인 요소로 공급되는 클럭을 이용한 Up / Down / UpDown 카운팅이 가능하다.

 

ARR(Auto Reload Register)

- 업 카운터의 경우 [CNT 값 == ARR의 설정 값] => CNT는 0부터 다시 카운팅 시작

- 다운 카운터의 경우 [CNT값 == ARR의 설정 값] => CNT는 ARR의 설정 값부터 다시 카운팅 시작

 

CCR(Capture / Compare Register)

- 입력 신호가 주어질 때 Counter 값을 캡쳐 하거나 CNT == CCR(비교)이 되면 인터럽트를 발생하거나 출력 채널로 0 또는 1을 출력한다.


타이머의 주요 모드

 

업 카운팅(Up Counting) 모드

- 카운터의 값이 증가하면서 카운팅을 하는 모드

 - 카운터 CNT = 0부터 시작해서 CNT == ARR 값까지 증가한 후 다시 0부터 카운팅을 시작하는 작업을 계속하여 반복 실행

 - CNT = 0이 될 때 오버플로우, 업데이트 이벤트(UEV)와 업데이트 인터럽트 (UI) 발생

 

다운 카운팅(Down Counting) 모드

- 카운터의 값이 감소하면서 카운팅을 하는 모드

 - 카운터 CNT = ARR부터 CNT = 0까지 감소한 후 다시 CNT = ARR부터 카운팅을 시작하는 작업을 계속하여 반복 실행

 - CNT = ARR이 될 때 언더플로우, 업데이트 이벤트(UEV)와 업데이트 인터럽트(UI), 업데이트 인터럽트 플래그(UIF)가 발생

 

업/다운 카운팅(Up/Down Counting) 모드

- 카운터의 값이 증가한 후 다시 감소하면서 카운팅을 하는 모드 
 - 카운터는 0부터 ARR 값 까지 증가한 후 다시 0가지 감소

 - 이후에 동작으로는 증가->감소->증가->감소 계속 반복하면서 카운팅
 - 업 카운팅 동작시 CNT=ARR이 되면 오버플로우, 업데이트 이벤트, 업데이트 인터럽트가 발생
 - 다운 카운팅 동작시 CNT=0이 되면 언더플로우, 업데이트 이벤트, 업데이트 인터럽트가 발생
 - 업/다운 카운팅 모드를 센터 얼라인(Center Aligned) 모드라고 한다.

 

입력 캡쳐(Input Capture) 모드

 

출력 비교(Output Compare) 모드

 

PWM 출력 모드


원 펄스(One Pulse) 모드
- 외부 입력이 인가될 경우 이로부터 일정 시간이 지난 후에 펄스를1번 발생시키는 모드 
- 펄스가 발생하는 시간과 지속하는 시간은 프로그래밍 가능하다.

 

728x90