iT邦幫忙

1

STM32-8 PWM(上)

  • 分享至 

  • xImage
  •  

我手上的板子是L476RG,在當中一共有11個定時器:
https://ithelp.ithome.com.tw/upload/images/20220314/20146325bcNQrE9W8D.png
https://ithelp.ithome.com.tw/upload/images/20220314/20146325aYomniOnY1.png
其中分為基本、通用、高階三種
基本定時器:TIM6,TIM7
通用定時器:TIM2,TIM3,TIM4,TIM5,TIM15,TIM16,TIM17
高階定時器:TIM1,TIM8

  1. 高階定時器:具有6個可輸出PWM通道1個混合通道、輸入捕獲、輸出比較、單脈衝模式、PWM生成
    https://ithelp.ithome.com.tw/upload/images/20220314/20146325rhlNQglDCP.png
  2. 通用定時器:具有4個可輸出PWM通道1個混合通道、輸入捕獲、輸出比較、單脈衝模式、PWM生成(15僅有2個獨立通道,16,17各1個獨立通道)
    https://ithelp.ithome.com.tw/upload/images/20220314/201463250UXgalzIG6.png
  3. 基本定時器:只能做定時功能與單脈衝模式,無獨立通道
    https://ithelp.ithome.com.tw/upload/images/20220314/20146325M37ePDywEg.png
    在使用時可以透過DataSheet查找對應的腳位,或是直接透過IDE當中去的GPIO去查詢相關的腳位~
    https://ithelp.ithome.com.tw/upload/images/20220314/20146325MRMSXOqyGJ.png

PWM工作原理

PWM是將類比信號轉換為脈波,一般轉換後脈波的週期固定,但脈波的占空比會依類比信號的大小而改變。

什麼是佔空比(Duty Cycle)?
佔空比是指輸出的PWM當中,高電位保持的時間與整個週期之比。可以看到下圖當中最上方為50%的佔空比,也就是高電位與低電位各佔50%。

週期:一個脈衝信號的時間(高電位+低電位)
脈衝時間:高電位的時間

https://ithelp.ithome.com.tw/upload/images/20220314/20146325jUIJv3yTlo.png
舉例來說週期是10ms,脈衝時間(高電位)是6ms低電位是4ms,加總就會等於6/6+4=60%,占空比也就等於60%。
https://ithelp.ithome.com.tw/upload/images/20220314/20146325hRX5ag97e1.png
Timer使用PWM輸出模式時,相比前面所介紹到的Timer定時模式CNT與ARR,還會多了一個CCRx。可以看到上方的圖片,在模式2向上計數的情況下,CNT計數值大於CCRx的時候會輸出高電位,相反的低於CCRx時則是低電位。
https://ithelp.ithome.com.tw/upload/images/20220314/20146325XwFCEkiMan.jpg
按照上方的圖來看可以得知 :

ARR : 主要控制的是頻率,也就是綠框的部分
CCRx : 主要為控制佔空比,也就是藍框的部分


計算方法

  1. PWM頻率計算
    Fpwm =Tclk / ((arr+1)*(psc+1))(單位:Hz)
  2. 工作週期(佔空比)
    duty cycle = pulse/ARR * 100%

假如時鐘頻率為16Mhz分頻係數設為15,想要產生一個200hz的工作週期為75%的方波,計算方式如下:
200hz = 16mhz / (arr+1)*(15+1) 這樣arr會等於5000
工作週期計算則會變成
pulse/5000x100% = 75% 這樣pulse會等於3750
https://ithelp.ithome.com.tw/upload/images/20220314/20146325E8Zn3VnDob.png
以上內容如果有誤的話,麻煩各位通知我。感謝~


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言