概 述
在進行電機類、電源類應用開發時,如何使用PWM定時器模塊靈活、高效的實現所需 PWM波形的輸出,是眾多開發者關注的問題。在上篇文章里,我們介紹了PWM定時器模塊內的一些概念,以及如何生成普通PWM的過程。本篇內容將繼續介紹互補PWM、同步 PWM、錯相 PWM以及PWM如何使用ACMP封波等內容。
互補PWM
關于相同的代碼部分,此處不再重復講解,請參考《上篇》的普通PWM的講解。
此處設置了 3 個比較器:cmp_config[0]與 cmp_config[1]用來生成中心對稱 PWM,cmp_config[2]作為 PWM 影子寄存器的更新事件源,當 CNT 等于 cmp_config[2]時,影子寄存器寫入寄存器內生效。
互補 PWM 對的配置,配置左死區寬度為 8000 個 half_clock,右死區寬度為 16000 個 half_clock。
設置 cmp_config[2]作為 PWM 影子寄存器的更新事件源,啟動計數器。
通過修改 CMP0 與 CMP1 的值,每 100ms 更新一次互補 PWM 占空比。運行結果如下:
互補PWM
同步PWM
本節實驗設計:使用 PWM0 的比較器比較事件去做 PWM1、PWM2、PWM3 的同步事件。故輸出波形上看,PWM1、PWM2、PWM3 應完全同步,PWM0 與其則不同步。代碼如下:
使能 4 個 PWM 定時器的 SYNCI 信號。
設置 STA 與 RLD。
cmp_config[0]與 cmp_config[1]用來做中心對稱 PWM 所需的比較器。
cmp_config[2]用來做使 PWM 影子寄存器生效的比較器。
cmp_config[3]設置在 PWM0 CH8 上,用來產生比較事件,同步 PWM1、PWM2、PWM3。
互補 PWM 的死區設置與輸出設置。
設置 PWM0 CH0 CH1 互補輸出,同時設置 PWM1 CH8 使用 CMP3 產生比較事件。
設置 PWM1、PWM2、PWM3 互補輸出。
啟動計數器。
以下代碼是對互聯管理器的配置。配置 PWM0 CH8 的下降沿輸出到TRGM0_OUTX0 上,同時 TRGM0_OUTX0 作為 TRGM1、TRGM2、TRGM3的輸入,路由到 PWM1、PWM2、PWM3 的 SYNCI 信號上。
波形如下:
可見 PWM1、PWM2、PWM3 是完全同步的,PWM0 則與其有 20ns 的不同步。
同步PWM
錯相 PWM
本節實驗設計:使用 SYNT 實現 PWM0、PWM1、PWM2、PWM3 錯相90°。代碼如下:
以上代碼請參考上文 “同步PWM” 章節的講解,主要目的是生成 4 對互補PWM。
配置 TRGM,將 SYNT CH0 的比較事件路由到 PWM0 的 SYNCI 信號上,將 SYNT CH1 的比較事件路由到 PWM1 的 SYNCI 信號上,將 SYNT CH2 的21 / 24先楫半導體比較事件路由到 PWM2 的 SYNCI 信號上,將 SYNT CH3 的比較事件路由到PWM3 的 SYNCI 信號上。
配置 SYNT,分別設置 SYNT CH0 比較器比較值為 0,SYNT CH1 比較器比較值為 reload/4,SYNT CH2 比較器比較值為 reload/2,SYNT CH4 比較器比較值為 reload*3/4。
波形如下:
錯相PWM
PWM+ACMP 封波
本節實驗設計:使用兩個片上 ACMP 對目標模擬電壓進行監控,當電壓超過 1.65V 時停止 PWM 輸出。其基本思路為,將 ACMP 的輸出信號通過互聯管理器 TRGM 路由到 PWM 的內部 Fault 信號上,當 Fault 信號有效時 PWM波停止輸出(故障保護功能)。
代碼如下:
初始化 PWM 引腳,初始化 DAC 時鐘與引腳(使用 DAC 輸出模擬電壓到ACMP 上模擬過壓)。
輸出互補 PWM 波。
設置 Fault 信號高電平有效;使能 FaultI0 與 FaultI1 有效(PWM 共 4 內2 外 fault 信號,哪些信號生效可選)。
設置 DAC 輸出為直接模式,12bit DAC 輸出范圍 0~4095,4030 約為3.247V。該部分代碼請直接參考 DAC 例程。
配置 ACMP,使能 ACMP2 與 ACMP3。
配置互聯管理器,將 ACMP2 與 ACMP3 的輸出信號路由到 PWM 的FaultI0 與 FaultI1 上去。
acmp_config 函數源碼如下:
代碼中將 ACMP 的正極輸入選擇為 IO 引腳,負極輸入選擇為 ACMP 內部專用 DAC,參考電壓設置為 0x80,即 1.65V。
當 IO 引腳電壓 3.247V 時(來自于外設 DAC 輸出),ACMP 正極電壓超過負極電壓 1.65V,ACMP 輸出有效,為高電平;經過互聯管理器路由到PWM 的 Fault 信號上;由于 PWM 模塊內配置了 Fault 信號為高電平有效,因此此時 Fault 信號有效,PWM 波形停止輸出。
當 IO 引腳電壓 0V 時(將引腳與 GND 短接),ACMP 正極電壓未超過負極電壓 1.65V,ACMP 輸出無效,PWM 波形正常輸出。
PWM+ACMP
小 結
本文首先介紹了 PWM 定時器內各模塊的基本概念與功能,而后對 PWM的使用由淺入深依次以代碼實例進行講解。可以看到,PWM 的使用只要配置好 STA、RLD、CMPx、影子寄存器等即可實現輸出;如果有同步需求或與其它外設協同使用需求,則主要通過互聯管理器 TRGM 的配置進行實現。
比較經典的例程還包括使用 PWM 觸發 ADC 采樣,先楫半導體 SDK 中已經有完整的實例與代碼,各位開發者可以到官網下載研究,并歡迎大家多多交流。
-
電源
+關注
關注
184文章
17207瀏覽量
247788 -
PWM
+關注
關注
114文章
5058瀏覽量
212202
發布評論請先 登錄
相關推薦
評論