STM32F0 PWM 설정 부록 설명

STM32F0 PWM 설정 부록 설명

STM32F091RC PWM목차

  1. STM32F0XX CUBEMX로 PWM클럭 설정하기
  2. STM32F0XX PWM 코드 작성하기
  3. STM32F0XX PWM 설정 부록 설명 (현재 포스트)
  4. STM32F0XX PWM Duty 조절하기

설정 포스팅 보신 분들은 아마 설정만 보아서는 바로 이해가 안가시는 분들도 계시리라 생각합니다.

  • Prescaler : 분주기니 뭐니 이야기를 하는데, 그냥 간단히 클럭을 나누는것이다. 이를테면 48Mhz는  48 \times 10^6이므로 매우 주파수가 높다.  육안으로 PWM제어하는 것을 보고 싶다면 속도를 느리게 해줄 필요가 있다. 그래서 48000으로 나누어 1000hz로 동작하게 설정하였다.
  • Counter Mode : 카운터가 0부터 올라가게 할 것인지, 끝에서 내려가게 할 것인지를 설정한다.
  • Counter Period : 카운터의 주기를 정하는 것이다. 1000hz를 1초에 1주기로 돌게 하고 싶다면 1000으로 설정하고, 1초에 10번 주기를 돌게하고 싶다면, 100을 입력한다. 즉, TIM Clock / Prescaler / Counter Period = 한 주기
    라고 보면 될 것이다. 나는 1초 간격의 주기를 가지게 하고 싶으므로 1000으로 설정하였다.
  • auto-reload preload : PWM 신호를 계속 반복해서 생성하고 싶으면 Enable, 아니면 Disable이다. 난 반복해서 보고싶어서 Enable로 하였다.

 

바로 위부분을 더 설명하고자 한다.

발로 그린 그림으로 설명하려니 쑥쓰럽다

Prescaler의 값을 48000으로 하면 48Mhz/48000이므로 1000hz의 주파수를 가지는 것을 알 수 있다.(엄밀히 이야기하면 0부터 시작하므로 47999로 설정하는 것이 맞다)

이 말은 카운터 1이 증가하는데 소요되는 시간이  \frac{1}{1000}초라는 의미다. 

Counter Period는 그 카운터의 상한선을 지정하는 개념에 가깝다.

1000으로 놓는다면 카운터가 1000까지 도달할때까지 소요되는 시간은 \frac{1}{1000} \times 1000 =1s, 즉 1초이다. (엄밀히 이야기하면 0부터 카운터를 시작하므로 999로 설정하는 것이 맞다)

따라서 정확하게 설정한다면, Counter Period는 999로 설정하여야 한다.(이하 Counter Period가 999로 설정했다고 가정)

카운터가 999가 넘어가면 다시 카운터가 0으로 돌아간다. 이 상황을 반복하므로, 해당 설정에서 PWM의 주기는 1초라고 볼 수있다.

 

  • Pulse : 듀티를 설정할 수 있다. Counter Period가 1000이라면, 500으로 해야 50%로 설정이 되는 셈이다.
     \frac{Pulse}{Counter Period} \times 100 = Duty(%)

 

위의 경우도 간단하다. 전체 카운터가 0~999까지므로 499로 설정하면 전체 50%의 듀티를 차지하므로 0.5초 간격으로 토글이 될 것이다.

 

끝.

 

4 Replies to “STM32F0 PWM 설정 부록 설명”

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 블로거가 이것을 좋아합니다: