※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할수 있습니다.
오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.
아래 글은 STM32F429ZI datasheet와 Reference manual를 기준으로 작성되었습니다.
(임베디드 개발자에게 datasheet와 Reference manual을 지도와 나침판과 다름없이 존재)
STM32 chip에 내장된 타이머 기능들 중 많이 사용하는 기능이 PWM이다.
교류 정현파(SINE)의 파라미터들에서 width(Amplitude) 또는 Frequence 조정하여 전압 제어 방식
- PWM(Pulse Width Modulation, 펄스 폭 변조) : 영어 그대로 펄스 폭을 변조 방식 -> duty ratio 조절
(duty ratio(%)란? 한 주기 안에서 신호가 on time(HIGH) 비율)
사용 분야
- 모터 제어
- LED 점멸 제어
- 부저 제어
- 아날로그 출력
- PFM(Pulse Frequence Modulation, 펄스 주파수 제어)
STM32 PWM 설정 방법
PWM 두가지 결정 요소
- 주파수(1/주기)
- 듀티비(1주기 동안 Clock On Time 비율)
PWM 주기 결정 요소
- 사용 Timer Bus Clock
- Prescaler(PSC, 분주비) : 타이머 클럭을 더 느리게 만들기 위한 값
- AutoReload Register(ARR) : PWM 주파수를 결정하기 위한 값
PWM 듀티비 결정 요소
- Capture / Compare register (CCR) : 펄스 폭을 결정하기 위한 값
- AutoReload Register(ARR) : CCR 분해능 범위 결정
-> ARR이 너무 낮으면 CCR 범위가 제한되기에, 가급적 ARR 값을 높이고, Prescaler 값을 통해 PWM 주기를 결정한다.
듀비티 공식(%) = (CCR / ARR) * 100
PWM 1주기 생성 과정
1.타이머 클럭이 인가될때마다 Timer counter가 1씩 증가한다(up counter로 설정시)
-> Timer counter 1 증가 속도는 Timer Bus Clock과 Prescaler값에 따라 달라진다.
2. Timer Counter 값과 ARR값 같을 때 Update Interrupt 발생.
3. Timer Counter 값이 0부터 다시 증가
4. Timer Counter 값과 ARR값 같을 때 Update Interrupt 발생.
위 과정 반복
PWM 1 Clock 듀비티 생성 과정
1. Timer Counter 값과 CCR과 같을 때 Clock이 반전된다
(위 그림 같은 경우는 LOW->HIGH)
2. Timer Counter 값과 ARR과 같을 때 Clock이 반전된다.
(위 그림 같은 경우는 HIGH -> LOW)
위 과정 반복
'Stm32 > 개인 학습' 카테고리의 다른 글
HAL 라이브러리 I2C 함수 정리 (0) | 2024.07.07 |
---|---|
ADC란?(PCM)[1] (0) | 2024.07.05 |
Timer[2] - 타이머 인터럽트 (0) | 2024.06.13 |
Interrupt(EXTI) (0) | 2024.06.08 |
TIMER [1] (0) | 2024.05.09 |