概 述
在進(jìn)行電機(jī)類、電源類應(yīng)用開(kāi)發(fā)時(shí),如何使用PWM定時(shí)器模塊靈活、高效的實(shí)現(xiàn)所需 PWM波形的輸出,是眾多開(kāi)發(fā)者關(guān)注的問(wèn)題。在上篇文章里,我們介紹了PWM定時(shí)器模塊內(nèi)的一些概念,以及如何生成普通PWM的過(guò)程。本篇內(nèi)容將繼續(xù)介紹互補(bǔ)PWM、同步 PWM、錯(cuò)相 PWM以及PWM如何使用ACMP封波等內(nèi)容。
互補(bǔ)PWM
關(guān)于相同的代碼部分,此處不再重復(fù)講解,請(qǐng)參考《上篇》的普通PWM的講解。
此處設(shè)置了 3 個(gè)比較器:cmp_config[0]與 cmp_config[1]用來(lái)生成中心對(duì)稱 PWM,cmp_config[2]作為 PWM 影子寄存器的更新事件源,當(dāng) CNT 等于 cmp_config[2]時(shí),影子寄存器寫入寄存器內(nèi)生效。
互補(bǔ) PWM 對(duì)的配置,配置左死區(qū)寬度為 8000 個(gè) half_clock,右死區(qū)寬度為 16000 個(gè) half_clock。
設(shè)置 cmp_config[2]作為 PWM 影子寄存器的更新事件源,啟動(dòng)計(jì)數(shù)器。
通過(guò)修改 CMP0 與 CMP1 的值,每 100ms 更新一次互補(bǔ) PWM 占空比。運(yùn)行結(jié)果如下:
互補(bǔ)PWM
同步PWM
本節(jié)實(shí)驗(yàn)設(shè)計(jì):使用 PWM0 的比較器比較事件去做 PWM1、PWM2、PWM3 的同步事件。故輸出波形上看,PWM1、PWM2、PWM3 應(yīng)完全同步,PWM0 與其則不同步。代碼如下:
使能 4 個(gè) PWM 定時(shí)器的 SYNCI 信號(hào)。
設(shè)置 STA 與 RLD。
cmp_config[0]與 cmp_config[1]用來(lái)做中心對(duì)稱 PWM 所需的比較器。
cmp_config[2]用來(lái)做使 PWM 影子寄存器生效的比較器。
cmp_config[3]設(shè)置在 PWM0 CH8 上,用來(lái)產(chǎn)生比較事件,同步 PWM1、PWM2、PWM3。
互補(bǔ) PWM 的死區(qū)設(shè)置與輸出設(shè)置。
設(shè)置 PWM0 CH0 CH1 互補(bǔ)輸出,同時(shí)設(shè)置 PWM1 CH8 使用 CMP3 產(chǎn)生比較事件。
設(shè)置 PWM1、PWM2、PWM3 互補(bǔ)輸出。
啟動(dòng)計(jì)數(shù)器。
以下代碼是對(duì)互聯(lián)管理器的配置。配置 PWM0 CH8 的下降沿輸出到TRGM0_OUTX0 上,同時(shí) TRGM0_OUTX0 作為 TRGM1、TRGM2、TRGM3的輸入,路由到 PWM1、PWM2、PWM3 的 SYNCI 信號(hào)上。
波形如下:
可見(jiàn) PWM1、PWM2、PWM3 是完全同步的,PWM0 則與其有 20ns 的不同步。
同步PWM
錯(cuò)相 PWM
本節(jié)實(shí)驗(yàn)設(shè)計(jì):使用 SYNT 實(shí)現(xiàn) PWM0、PWM1、PWM2、PWM3 錯(cuò)相90°。代碼如下:
以上代碼請(qǐng)參考上文 “同步PWM” 章節(jié)的講解,主要目的是生成 4 對(duì)互補(bǔ)PWM。
配置 TRGM,將 SYNT CH0 的比較事件路由到 PWM0 的 SYNCI 信號(hào)上,將 SYNT CH1 的比較事件路由到 PWM1 的 SYNCI 信號(hào)上,將 SYNT CH2 的21 / 24先楫半導(dǎo)體比較事件路由到 PWM2 的 SYNCI 信號(hào)上,將 SYNT CH3 的比較事件路由到PWM3 的 SYNCI 信號(hào)上。
配置 SYNT,分別設(shè)置 SYNT CH0 比較器比較值為 0,SYNT CH1 比較器比較值為 reload/4,SYNT CH2 比較器比較值為 reload/2,SYNT CH4 比較器比較值為 reload*3/4。
波形如下:
錯(cuò)相PWM
PWM+ACMP 封波
本節(jié)實(shí)驗(yàn)設(shè)計(jì):使用兩個(gè)片上 ACMP 對(duì)目標(biāo)模擬電壓進(jìn)行監(jiān)控,當(dāng)電壓超過(guò) 1.65V 時(shí)停止 PWM 輸出。其基本思路為,將 ACMP 的輸出信號(hào)通過(guò)互聯(lián)管理器 TRGM 路由到 PWM 的內(nèi)部 Fault 信號(hào)上,當(dāng) Fault 信號(hào)有效時(shí) PWM波停止輸出(故障保護(hù)功能)。
代碼如下:
初始化 PWM 引腳,初始化 DAC 時(shí)鐘與引腳(使用 DAC 輸出模擬電壓到ACMP 上模擬過(guò)壓)。
輸出互補(bǔ) PWM 波。
設(shè)置 Fault 信號(hào)高電平有效;使能 FaultI0 與 FaultI1 有效(PWM 共 4 內(nèi)2 外 fault 信號(hào),哪些信號(hào)生效可選)。
設(shè)置 DAC 輸出為直接模式,12bit DAC 輸出范圍 0~4095,4030 約為3.247V。該部分代碼請(qǐng)直接參考 DAC 例程。
配置 ACMP,使能 ACMP2 與 ACMP3。
配置互聯(lián)管理器,將 ACMP2 與 ACMP3 的輸出信號(hào)路由到 PWM 的FaultI0 與 FaultI1 上去。
acmp_config 函數(shù)源碼如下:
代碼中將 ACMP 的正極輸入選擇為 IO 引腳,負(fù)極輸入選擇為 ACMP 內(nèi)部專用 DAC,參考電壓設(shè)置為 0x80,即 1.65V。
當(dāng) IO 引腳電壓 3.247V 時(shí)(來(lái)自于外設(shè) DAC 輸出),ACMP 正極電壓超過(guò)負(fù)極電壓 1.65V,ACMP 輸出有效,為高電平;經(jīng)過(guò)互聯(lián)管理器路由到PWM 的 Fault 信號(hào)上;由于 PWM 模塊內(nèi)配置了 Fault 信號(hào)為高電平有效,因此此時(shí) Fault 信號(hào)有效,PWM 波形停止輸出。
當(dāng) IO 引腳電壓 0V 時(shí)(將引腳與 GND 短接),ACMP 正極電壓未超過(guò)負(fù)極電壓 1.65V,ACMP 輸出無(wú)效,PWM 波形正常輸出。
PWM+ACMP
小 結(jié)
本文首先介紹了 PWM 定時(shí)器內(nèi)各模塊的基本概念與功能,而后對(duì) PWM的使用由淺入深依次以代碼實(shí)例進(jìn)行講解??梢钥吹?,PWM 的使用只要配置好 STA、RLD、CMPx、影子寄存器等即可實(shí)現(xiàn)輸出;如果有同步需求或與其它外設(shè)協(xié)同使用需求,則主要通過(guò)互聯(lián)管理器 TRGM 的配置進(jìn)行實(shí)現(xiàn)。
審核編輯:劉清
-
電機(jī)控制
+關(guān)注
關(guān)注
3540文章
1896瀏覽量
269174 -
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121006 -
比較器
+關(guān)注
關(guān)注
14文章
1658瀏覽量
107370 -
pwm定時(shí)器
+關(guān)注
關(guān)注
0文章
6瀏覽量
2001
原文標(biāo)題:看完這一篇,HPM6000系列PWM波盡在掌握(下)
文章出處:【微信號(hào):HPMicro,微信公眾號(hào):先楫半導(dǎo)體HPMicro】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論