Louie NRT Story

[펌웨어] STM32F4 강의 - PWM 본문

전기차충전기

[펌웨어] STM32F4 강의 - PWM

hyeok0724.kim@gmail.com 2021. 1. 22. 09:50
반응형

최초작성일: 21년 3월 10일

준비물: STM32F105, ST-LINK, 오실로스코프

 

Index

1. PWM 설명

2. PWM 타이머 설정

3. PWM Duty Rate 설정

4. PWM Duty Rate 실시간 변경

 

 

1. PWM 설명

- 기본은 Timer 인터럽트에 배경을 두고 있음

- Prescale을 이용하여 HCLK를 일정 줄여줌

- AutoReload Register를 이용하여 해당 값에 도달하면 인터럽트가 발생하며 다시 처음으로 돌아감.

- 타이머 인터럽트 주기 만큼 PWM의 주기가 됨.

- 아래 그림과 같이 타이머가 Up Count 하는 동안 CCR(Capture Compare Register)을 통해 Duty를 조절함.

 

2. PWM 타이머 설정

1) HCLK 값은 72 MHz 임을 확인함

2) 타이머 설정

- Prescaler = 1+1, Counter Period(AutoReload Register) = 35999 + 1.

- HCLK(72,000,000) ÷ Prescaler(1+1) ÷ AutoReload Register(35999+1) = 0.001.

- 즉 1번 펄스가 발생할 때 0.001초 걸리므로 1초면 1000번 발생하므로 1000 Hz 임을 알 수 있음.

- Pulse(35999+1) 이므로 현재 Duty Rate는 100% 임을 알수 있음.

 

3. PWM Duty Rate 설정

- PWM을 시작한다는 Start 함수를 실행함

- Channel의 CCR1 값을 변경해줌으로써 Duty Rate를 변경해줌

 

 

4. PWM Duty Rate 실시간 변경

- 값을 0 -> 100 으로 1씩 증가하여 Duty Rate를 변경함

※ 강좌에서는 arr을 변경하게 되면 중간에 PWM이 멈춘다고 하여 Prescaler를 변경하였지만

   현재 작성하고 있는 시점에는 괜찮음. 버그? 가 해결 된것 같음

 

 

Referece:

www.youtube.com/watch?v=2Y_QoSYBJ0U

 

반응형
Comments