左明偉 馮江榮 王邦靖 曼茂立
摘 要:通過(guò)對(duì)MC9S12XS128單片機(jī)脈沖寬度調(diào)制模塊(PWM)的研究,主要了解了脈沖寬度調(diào)制模塊相關(guān)寄存器的功能,并深入探討脈寬調(diào)制模塊的調(diào)制方法,此外,也設(shè)計(jì)了適用于直流電機(jī)驅(qū)動(dòng)的程序,并在此基礎(chǔ)上進(jìn)行了詳細(xì)講解,以便更為直觀的了解并熟練地使用飛思卡爾單片機(jī)的脈沖寬度調(diào)制模塊。
關(guān)鍵詞:脈沖寬度調(diào)制模塊;寄存器;單片機(jī)
中圖分類號(hào):TM571.6 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2018)23-0035-02
Abstract: By studying the pulse width modulation module PWM of MC9S12XS128 single chip microcomputer, the function of the registers related to the pulse width modulation module is mainly understood, and the modulation method of the pulse width modulation module is discussed in depth. In addition, the modulation method of the pulse width modulation module is discussed. In order to understand and skillfully use the pulse width modulation module of Freescale single-chip microcomputer, a program suitable for direct current (DC) motor drive is also designed and explained in detail.
Keywords: pulse width modulation module; register; single chip microcomputer
引言
飛思卡爾是全球知名的半導(dǎo)體公司[1],該公司為許多行業(yè)設(shè)計(jì)和制作嵌入式半導(dǎo)體產(chǎn)品,現(xiàn)如今幾乎所有市售的單片機(jī)都集成了PWM功能模塊[2]。脈寬調(diào)制技術(shù)是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),可以通過(guò)調(diào)整方波的占空比來(lái)實(shí)現(xiàn)輸出電壓的變壓變頻效果,脈寬調(diào)制技術(shù)以其控制簡(jiǎn)單、靈活和動(dòng)態(tài)響應(yīng)好的優(yōu)點(diǎn)成為電子技術(shù)最廣泛應(yīng)用的控制方式,在電機(jī)調(diào)速等領(lǐng)域的應(yīng)用日益廣泛,所以對(duì)脈寬調(diào)制模塊的學(xué)習(xí)與應(yīng)用是十分必要的。
1 PWM主要寄存器介紹
飛思卡爾單片機(jī)脈沖寬度調(diào)制是通過(guò)設(shè)置其內(nèi)部寄存器來(lái)輸出相應(yīng)的波形。
1.1 時(shí)鐘寄存器
時(shí)鐘寄存器主要包括:PWMCLK、PWMPCLK、PWMSCLA/PWMSCLB,這三個(gè)寄存器分別是PWM時(shí)鐘選擇寄存器、模塊時(shí)鐘源A、B預(yù)分頻寄存器、模塊時(shí)鐘源SA、SB預(yù)分頻寄存器[3]。PWM時(shí)鐘選擇寄存器用來(lái)選擇PWM通道使用A、B時(shí)鐘或者SA、SB時(shí)鐘的哪一個(gè)。它和周期寄存器共同決定了PWM輸出脈沖的頻率。
1.2 周期寄存器
PWMPER寄存器共有8個(gè),每一個(gè)通道都有一個(gè)這樣的周期寄存器。這個(gè)寄存器的值就決定了相關(guān)PWM通道的周期。周期寄存器的值越大,PWM調(diào)制精度越高[4]。
1.3 占空比寄存器
PWMDTY寄存器共有8個(gè),每一個(gè)通道都有一個(gè)這樣的占空比寄存器。這個(gè)寄存器的值就決定了相關(guān)PWM通道的輸出脈沖的占空比。
2 PWM設(shè)置步驟及程序?qū)嵗?/p>
在了解相關(guān)寄存器,并掌握脈沖寬度輸出頻率以及占空比的計(jì)算方法后,便可以進(jìn)行設(shè)置并輸出PWM波形了。
2.1 PWM設(shè)置步驟如下[5]
a.選擇極性PWMPOL;
b.選擇及設(shè)置時(shí)鐘 PWMCLK、PWMPRCLK、PWMSCLA、PWMSCLB;
c.對(duì)齊方式 PWMCAE;
d.是否聯(lián)級(jí)輸出 PWMCTL;
e.周期設(shè)定 PWMPER;
f.占空比設(shè)定 PWMDTY;
g.打開PWM通道PWME;
2.2 程序?qū)嵗?/p>
在直流電機(jī)控制電子節(jié)氣門開度的控制系統(tǒng)中PWM脈沖波形的輸出頻率常為1KHz,因而我們?cè)O(shè)計(jì)了相關(guān)程序。首先是進(jìn)行初始化函數(shù)設(shè)置[6](其中晶振頻率16MHz、總線時(shí)鐘32MHz)。
#include "main.h"
void PWM_Init(void)
{
PWMCTL_CON01=1; //聯(lián)結(jié)0號(hào)和1號(hào)通道形成16位PWM通道號(hào),由PWM1輸出
PWMPOL_PPOL1=1; //通道01的極性為高電平有效
PWMPRCLK=0x22; //A時(shí)鐘和B時(shí)鐘的分頻系數(shù)為4,頻率=32/4=8MHz
PWMSCLA=2; //SA時(shí)鐘設(shè)置寄存器CLOCK SA=CLOCK A/(2*PWMSCLA)=8M/2*2=2MHz
PWMCLK=0x02; //通道01用SA時(shí)鐘作為時(shí)鐘源
PWMPER01=2000; //通道01的頻率=CLOCK SA/2000=1KHz
PWMDTY01=0; //通道01的占空比為0%
PWME_PWME1=1; //使能通道01
}
其次,主函數(shù)調(diào)用相關(guān)初始化函數(shù),并輸出相應(yīng)占空比的脈沖。
void main(void)
{
INIT_PLL(PLL32) ; //初始化PLL為32M
PWM_Init();
EnableInterrupts; //使能中斷
PWMDTY01=1000; //占空比=PWMPER01/PWMDTY01=1000/2000*100%=50%
}
在飛思卡爾MC9S12XS128單片機(jī)中用CodeWarrior5.0編譯并燒錄后,可從示波器讀取到如圖1的脈沖波形。如果我們想輸出占空比=70%的PWM波形,只需要改變主函數(shù)居中寄存器PWMDTY01=PWMPER01*70%=2000*70%=1400即可,圖2是占空比為70%的脈沖波形。
3 結(jié)束語(yǔ)
在完成了對(duì)飛思卡爾單片機(jī)脈沖寬度模塊的分析,并設(shè)計(jì)相關(guān)程序后,總結(jié)了如下幾個(gè)常見(jiàn)問(wèn)題:
3.1 頻率問(wèn)題
針對(duì)直流電機(jī)脈寬調(diào)制的PWM頻率問(wèn)題[7],目前尚待商榷,建議進(jìn)行多次試驗(yàn)選取讓電機(jī)正常工作的頻率。其他如S3010舵機(jī)的使用頻率是50Hz-200Hz[8],對(duì)應(yīng)周期是5ms-20ms,超出頻率的話,舵機(jī)不會(huì)線性工作。
3.2 級(jí)聯(lián)問(wèn)題
80引腳封裝的XS128系列單片機(jī)有8個(gè)8位精度的PWM通道[9],通過(guò)級(jí)聯(lián)可以得到4個(gè)16位精度的PWM通道,當(dāng)處于級(jí)聯(lián)模式時(shí),時(shí)鐘、極性以及對(duì)齊方式等都是受級(jí)聯(lián)后的低8位對(duì)應(yīng)通道的寄存器控制的,即由通道1、3、5、7的寄存器控制,且只有這幾個(gè)通道可以輸出PWM波形。
參考文獻(xiàn):
[1]周鑫玲.飛思卡爾8位單片機(jī)脈寬調(diào)制模塊用法探究[D].天津大學(xué),2010.
[2]李剛.飛思卡爾8位單片機(jī)實(shí)用教程[M].北京:電子工業(yè)出版社,2009.
[3]邵貝貝.單片機(jī)認(rèn)識(shí)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2006.
[4]劉和平.DSP原理及電機(jī)控制系統(tǒng)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007.
[5]李勇.汽車單片機(jī)與車載網(wǎng)絡(luò)技術(shù)[M].北京:電子工業(yè)出版社,2015.
[6]薛濤.單片機(jī)與嵌入式系統(tǒng)開發(fā)方法-HCS12XS[M].北京:清華大學(xué)出版社,2009.
[7]庹朝永.基于單片機(jī)的直流電機(jī)PWM調(diào)速系統(tǒng)設(shè)計(jì)與開發(fā)[J].哈爾濱煤礦機(jī)械研究所,2011.
[8]趙開理.基于單片機(jī)設(shè)計(jì)直流電機(jī)控制系統(tǒng)[D].南京郵電大學(xué),2017.
[9]李瑋.基于單片機(jī)控制的直流電機(jī)PWM調(diào)速系統(tǒng)設(shè)計(jì)[J].河北省科學(xué)技術(shù)學(xué)協(xié)會(huì),2018.