概 述
在進(jìn)行電機(jī)類、電源類應(yīng)用開發(fā)時(shí),如何使用PWM定時(shí)器模塊靈活、高效的實(shí)現(xiàn)所需 PWM波形的輸出,是眾多開發(fā)者關(guān)注的問題。先楫半導(dǎo)體已發(fā)布的HPM6000系列芯片上,均帶有PWM定時(shí)器模塊。與普通定時(shí)器產(chǎn)生的PWM相比,其產(chǎn)生的PWM可方便的配置為互補(bǔ)PWM對,并帶有強(qiáng)制輸出、死區(qū)插入、故障封鎖、影子寄存器等功能。
本文將簡單介紹PWM定時(shí)器模塊內(nèi)的一些概念,以圖文的形式幫助開發(fā)者理解PWM定時(shí)器模塊的運(yùn)行方式。然后輔以大量代碼實(shí)例,介紹了如何生成普通 PWM、互補(bǔ) PWM、同步 PWM、錯相 PWM,以及PWM如何使用ACMP封波。幫助廣大開發(fā)者更好地使用 PWM 定時(shí)器模塊實(shí)現(xiàn)自己所需的功能。
1
24+4 位向上計(jì)數(shù)器
一個 PWM 定時(shí)器模塊內(nèi)共有 3 個 24+4 位寄存器,分別為 STA、CNT、RLD。STA 與 RLD 為計(jì)數(shù)器計(jì)數(shù)的起點(diǎn)和終點(diǎn);CNT 內(nèi)保存著當(dāng)前時(shí)刻的計(jì)數(shù)值。計(jì)數(shù)器從 STA 開始計(jì)數(shù),達(dá)到 RLD 后重新從 STA 計(jì)數(shù),一個又一個周期的循環(huán)往復(fù),周期為 RLD-STA+1。
4 位拓展位,為開發(fā)者提供了更多樣的計(jì)數(shù)信息:每當(dāng) CNT 計(jì)數(shù)到 RLD時(shí),會產(chǎn)生 RLD 事件(可以生成中斷或 DMA 請求);若 XRLD 不為 0,則每當(dāng) CNT 計(jì)數(shù)到 RLD 時(shí),XCNT 加 1,當(dāng) XCNT 等于 XRLD 時(shí),產(chǎn)生 XRLD 事件(可以生成中斷或 DMA 請求)。
2
一個 PWM 定時(shí)器具有 16~24 個通道,以及 24 個比較器 CMPx(x=1~24)。比較器 CMPx 可以理解為 CNT 計(jì)數(shù)過程中的觸發(fā)開關(guān):每當(dāng)CNT 等于 CMPx 時(shí),該通道 PWM 輸出會進(jìn)行翻轉(zhuǎn)。
開發(fā)者可以配置將哪些 CMPx 安裝在目標(biāo)通道上:配置方法為指定 x,再指定用于該通道比較器的數(shù)量 n,結(jié)果就是 CMPx、CMPx+1、... 、CMPx+n-1 比較器被應(yīng)用于該通道。
假設(shè)我們對通道 1 進(jìn)行配置,x=0,n=2,則如下圖所示:
假設(shè)我們對通道 2 進(jìn)行配置,x=2,n=4,則如下圖所示:
3
影子寄存器
影子寄存器的作用是為 PWM 定時(shí)器的部分關(guān)鍵寄存器提供保護(hù)。在 CPU訪問寄存器的時(shí)候,實(shí)質(zhì)上改變的是它的影子寄存器,新值并不馬上生效。只有在指定的時(shí)刻,才把影子寄存器的值更新到寄存器,防止即時(shí)生效的方式導(dǎo)致 PWM 輸出波形異常,導(dǎo)致炸管子、短路等事故發(fā)生。
在芯片內(nèi),STA、RLD、CMPx、FRCMD 寄存器帶有影子寄存器(這 4 類寄存器的更新會影響 PWM 的波形)??傮w而言,HPM 芯片提供了 4 種方式將影子寄存器更新到控制寄存器內(nèi),分別為:
軟件將 SHCR [SHLK]位置 1 時(shí)生效
即時(shí)生效
某個 CMPx 比較事件發(fā)生時(shí)生效
SHRLDSYNCI 上捕獲到上升沿時(shí)生效
通常建議開發(fā)者配置影子寄存器為“某個 CMPx 比較事件發(fā)生時(shí)生效”,其它 3 種方式更新影子寄存器到寄存器內(nèi)時(shí),多多少少不能保證此時(shí) PWM 輸出的狀態(tài),可能會導(dǎo)致 PWM 波形異常。只有在開發(fā)者確定用其它 3 種更新方式不會導(dǎo)致硬件故障時(shí),才推薦使用。下圖展示了 CPU 以實(shí)時(shí)方式將影子寄存器更新到寄存器內(nèi)可能產(chǎn)生的異常。
4
同步輸入 SYNCI 與同步定時(shí)器 SYNT
同步輸入 SYNCI 的作用是,當(dāng)此信號有效時(shí) CNT 的值被強(qiáng)制為 STA,SYNCI 無效后 CNT 開始正常計(jì)時(shí)。當(dāng)需要多個 PWM 定時(shí)器的時(shí)基相同或錯相時(shí),操作PWM 定時(shí)器的 SYNCI 信號即可達(dá)到目標(biāo)。
同步定時(shí)器 SYNT 是專門用來完成以上操作的計(jì)時(shí)器。SYNT 上有 4 個通道,每個通道有一個 CMP,發(fā)生 CMP 比較事件時(shí),可通過互聯(lián)管理器 TRGM將此事件路由到 SYNCI 信號上,從而實(shí)現(xiàn)了多個 PWM 的同步/錯相。
5
互聯(lián)管理器 TRGM
互聯(lián)管理器是將片上眾多外設(shè)相互關(guān)聯(lián)使用的橋梁。例如可以用 PWM 比較事件觸發(fā) ADC 采樣,使用模擬比較器 ACMP 比較結(jié)果對 PWM 封波,使用IO 輸入觸發(fā) GPTMR 同步計(jì)時(shí)等等。其功能非常強(qiáng)大,且易用。下面以一張圖繪出 TRGM 的基本模型。
簡而言之,TRGM 的每個 output 通道都可以在眾多的 INPUT 中選一個。例如可以將 SYNT 的比較事件做為 INPUT,輸出到 PWM 的 SYNCI,這樣就實(shí)現(xiàn)了 PWM 同步;例如可以將 IO 作為 INPUT,輸出到 IO,這樣就實(shí)現(xiàn)了IO 電平的轉(zhuǎn)移輸出。
TRGM 可以實(shí)現(xiàn)外設(shè)硬件級別的同步與觸發(fā),可以實(shí)現(xiàn)各種外設(shè)互聯(lián)配合使用,是極有用的一個功能模塊。使用 TRGM 時(shí),需要參考 UM 手冊中TRGMx_INPUT_MUX 列表與 TRGMx_OUTPUT_MUX 列表,合理分配資源,選擇需要的 INPUT 與 OUTPUT 信號。
PWM模塊
普通PWM
由上述可知,一路普通PWM的輸出需要配置好以下幾點(diǎn):
PWM 輸出控制:是否互補(bǔ)對、死區(qū)插入等
RLD、STA
CMPx
影子寄存器
函數(shù)如下,逐一進(jìn)行分析:
首先停止 PWM 計(jì)時(shí)器的計(jì)數(shù)器,將 PWM 計(jì)數(shù)器清零,獲取 SDK 提供的 PWM 輸出默認(rèn)配置。程序沒有特別之處,屬于配置前的初始化工作。
配置 PWM 允許輸出,死區(qū)為 0,輸出不反相;
設(shè)置 RLD 與 STA,分別為 reload 和 0;
配置 CMPx,模式為輸出比較模式,比較值為 reload+1,影子寄存器更新方式為寫入 shlk 位更新;此時(shí)由于計(jì)數(shù)器計(jì)數(shù)無法達(dá)到 CMPx,故輸出波形恒為低電平。
配置通道 0 使用 CMP0,比較器數(shù)量為 1 個,因此 CMP0 的大小決定了pwm 的占空比,占空比為(RLD-CMP0)/RLD
啟動計(jì)數(shù)器,更新 CMP0 的影子寄存器為 reload/4,最后將影子寄存器的值提交到寄存器內(nèi)生效。運(yùn)行結(jié)果如下:
普通PWM
本篇內(nèi)容到此結(jié)束,下一篇我們會介紹了如何生成互補(bǔ) PWM、同步 PWM、錯相 PWM,以及PWM如何使用ACMP封波。敬請期待哈~
-
PWM
+關(guān)注
關(guān)注
114文章
5118瀏覽量
213164 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3231瀏覽量
114326
發(fā)布評論請先 登錄
相關(guān)推薦
評論