專利名稱::微控制器片上pwm脈沖波產生方法及系統的制作方法
技術領域:
:本發明涉及一種基于IntelMCS-51指令體系的微控制器片上PWM脈沖波產生方法及系統,可應用于基于8051指令體系的單片微控制器,亦可應用于其它微控制器、微處理器等領域。
背景技術:
:脈寬調制(PWMPulseWidthModulation)是一種可為電機,加熱器甚至是音響等設備提供數字控制方法的技術,即產生一種可調占空比,相位,周期的波形用在電機驅動、D/A變換、電源控制等場合。PWM控制技術以其控制簡單、靈活和動態響應好的優點而成為電力電子技術最廣泛應用的控制方式,也是人們研究的熱點。PWM脈沖波的產生方式1)分立電子元件組成的PWM信號發生器這種方法是用分立的邏輯電子元件組成PWM信號電路。它是最早期的方式,現在已經被淘汰。2)軟件模擬法利用單片機的I/O引腳,通過軟件對該引腳不斷地輸出高低電平來實現PWM波輸出。這種方法要占用CPU大量時間,使單片機無法進行其它的工作,因此也逐漸被淘汰。3)專用PWM集成電路從PWM控制技術出現之日起,就有芯片制造商生產專用的PWM集成電路芯片。4)單片機的PWM口。由于基于IntelMCS-51架構的MCU是應用極為廣泛的一類處理器,使用歷史悠久,有豐富的第三方支持軟件和仿真工具,為廣大工程師所熟悉。因此在不改變指令體系的情況下,在8051IP核的基礎上提供一種PWM脈沖發生方法,使得MCU具備動力驅動的可控性,將大大提高MCU的性能從而提高MCU的設計水平。
發明內容本發明的目的在于提供一種微控制器片上Pmi脈沖波產生方法及系統,在8051IP核的基礎上提供一種Pmi脈沖發生方法,使得MCU具備動力驅動的可控性,能夠產生兩路獨立的可調周期和占空比的P麗波,產生兩路互補的P麗波并且可以自動插入死區時間。為實現上述目的,本發明的構思是本發明微控制器片上P觀脈沖波產生方法,兼容IntelMCS-51指令體系,能夠產生兩路獨立的可調周期和占空比的P麗波,產生兩路互補的PWM波并且可以自動插入死區時間。通過周期寄存器和脈寬寄存器設置PWM波的周期和脈寬寬度,計數器分別對PWM波的周期和脈寬計數,計數器溢出后P麵波的信號值做相應翻轉從而產生預先定義的PWM波,當P麗互補輸出時,首先產生主路P麗波,通過一個反相器產生另一路互補的P麗波,設置死區時間寄存器,設定死區時間的值,使兩路PWM波的上升沿分別延遲一個死區時間的寬度,這樣兩路互補的PWM波插入了死區時間。根據上述發明構思,本發明采用下述技術方案一種微控制器片上PWM脈沖波產生方法,其特征在于兼容IntelMCS-51指令體系,能夠產生兩路獨立的PWM波和兩路互補的PWM波;其具體操作步驟為1.設置P麗波脈寬和周期,用于定義PWM波的周期和占空比;2.設置分頻器,用于向定時/計數器提供計數時鐘;3.設置定時/計數器,用于對PWM波脈寬和周期計數;4.設置PWM波產生單元,產生兩路互補PWM波;5.設置死區時間寄存器,使互補的兩路PWM波插入死區時間;上述PWM波脈寬和周期設置方法如下因為本發明有兩路P麗輸出所以要分別增設兩路P麗的周期和脈寬特殊功能寄存器。P麗0路的周期寄存器和脈寬寄存器定義為周期寄存器UTLO,UTHO,占用片上RAM地址A2H和A3H,脈寬寄存器為UWLO,UWHO,占用片上RAM地址9AH和9BH。PWM1路的周期寄存器和脈寬寄存器定義為周期寄存器UTL1,UTH1,占用內存地址為A4H和A5H,脈寬寄存器UWLl,U冊l,占用內存地址為9CH和9DH。用戶通過向周期寄存器和脈寬寄存器直接寫數據的方式定義PWM波的頻率和占空比。用戶可以直接對周期和脈寬特殊功能寄存器寫數據,從而定義P^I波的周期和脈寬,但還要設置寄存器用來存儲寫入的數據值。設置叩t0(16bit),存儲UTL0、UTH0的值,opw0(16bit)存儲UWLO、UWHO的值,叩tl(16bit),存儲UTLl、UTH1的值,opwl(16bit),存儲UTL1、UTH1的值上述分頻器定義如下分頻器用于向定時計數器提供計數時鐘。本發明定義了兩個分頻寄存器TcaplCON和Tcap2C0N,片上RAM地址為96和97H,TcaplCON用于設定定時計數器T3時鐘的分頻值,Tcap2C0N用于設定定時計數器T4時鐘的分頻值。TcaplCON和Tcap2C0N兩個寄存器各位定義是一樣的,只是TcaplC0N與T3相關聯,Tcap2C0N與T4相關聯。Tc即lC0N各位的定義如表l所示表1分頻寄存器TcaplCON各位定義<table>tableseeoriginaldocumentpage7</column></row><table>表中各位定義如下MODE:分頻選擇00:CLK01:2分頻10:4分頻11:12分頻上述定時/計數器定義如下定時計數器用于對P麗波的周期和脈寬計數,在非PWM輸出時也可以作普通的定時計數器使用。當定時計數器計到P碰波的周期寬度或脈寬寬度時會發出相應的溢出信號,等待PWM輸出模塊處理。本發明在定時/計數模塊增加了兩個16位定時計數器T3和T4。T3用于對PWM0路計數,周期計數溢出信號為t3—ov—opt,脈寬計數溢出信號t3—ov_叩w,T4用于對P畫l路計數,周期溢出信號為t4—ov—opt脈寬溢出信號t4—ov—opw。上述PWM波產生單元定義如下該步驟用于產生PWM波。P麗波由相應的信號值表示,P麗O路用pwm—i表示,P麗l路用用信號pwm一i[l]表示;設置PWM方式寄存器PW畫0D和P麵控制寄存器PWMC0N,片上RAM地址分別為91H和F8H。PWM方式寄存器PW羅0D,用于選擇PWM工作方式,P麗控制寄存器PWMC0N,用于定時/計數器的開啟,互補輸出功能的開啟。PWM方式寄存器PWMMOD各位定義如表2所示,PWM控制寄存器P麗C0N各位的定義如表3所示表2PWM方式寄存器(PWMMOD)<table>tableseeoriginaldocumentpage7</column></row><table>Bit0-1用于控制定時器3方式,Bit4-5用于控制定時器4方式。<table>tableseeoriginaldocumentpage7</column></row><table>T3M:定時器3時鐘選擇當丁31/1=1時,定時器時鐘4分頻,當T3M:0時,定時器時鐘12分頻。在PWM輸出模式下無效,此時計數周期由Tc即lC0N中的MODE決定。T4M:定時器4時鐘選擇當T4M=1時,定時器時鐘4分頻,當T4M=0時,定時器時鐘12分頻。在PWM輸出模式下無效,此時計數周期由Tc即2C0N中的MODE決定。表3PWM控制寄存器(PWMC0N)<table>tableseeoriginaldocumentpage8</column></row><table>TR3:定時器3運行控制位這一位由軟件置1清0,用來控制定時器/計數器運行與否。TF3:定時器3溢出標志位定時器3溢出時此位置1,當定時器3中斷復位程序生效,TF3自動清0。也可用軟件置1清0。TR4:定時器4運行控制位這一位由軟件置1清0,用來控制定時器/計數器運行與否。TF4:定時器4溢出標志位定時器4溢出時此位置1,當定時器4中斷復位程序生效,TF4自動清0。也可用軟件置1清0。CPWM::該位為O時,兩路PWM工作在獨立模式下,為1時工作在互補模式,在互補模式下,自動插入由死區時間寄存器(DT)定義的死區時間。PWMSEL:在互補輸出時選擇以哪路pwm為主路輸出,0:pwmO路為主1:pwm1路為主上述在插入死區時間步驟定義如下在兩路互補波形中插入死區時間,使兩路PWM波的上升沿分別延遲一個死區時間的寬度到達。在該步驟中定義死區時間特殊功能寄存器DT(8bit),死區時間計數器dt(8bit),信號dt—zero,用于和互補的兩路P麵做邏輯運算,從而插入死區時間。與現有技術相比較,具有如下顯而易見的突出實質性特點和顯著優點本發明在不改變原有微控制器指令體系的情況下,提供一種PWM脈沖發生方法,使得微控制器具備動力驅動的可控性,大大提高微控制器的性能,并且不用單獨的芯片去產生PWM脈沖,降低了產品的制造成本。圖l:P麗脈沖波發生方法實現的系統結構圖圖2:定時/計數器T3設計流程圖圖3:pwmO波型產生設計流程圖圖4:死區時間插入方法實現流程圖具體實施例方式本發明的一個優選實施例子結合附圖詳述如下參見圖1,本PWM脈沖波產生方法用的系統包括8051IP核(l),其特征在于所述8051IP核(1)通過MCU總線連接周期脈寬寄存器(2)、死區插入時間寄存器(3)、PWM波產生單元(4)、定時計數器(5)和分頻器(6);—個系統時鐘(7)連接所述分頻器(6);所述分頻器(6)與定時計數器(5)連接;所述PWM波產生單元(4)與死區插入時間寄存器(3)連接。本實施例在8051IP核內提供一種脈沖發生方法,MCU能夠產生兩路獨立的PWM波和兩路互補的PWM波,PWM脈沖發生方法實現的整體結構如圖1所示,MCU通過內部的數據總線和地址總線對特殊功能寄存器讀寫數據,設定相應的值,通過周期和脈寬特殊功能寄存器設定PWM波的頻率和占空比,系統時鐘經分頻器分頻后送定時計數器,分頻值由用戶設定,定時計數器計數,計數溢出后發出相應的溢出信號,如果產生互補的兩路波形,則PWM脈沖信號送死區邏輯處理,插入死區時間后送PWM波產生單元。具體實施方案為1.設置PWM波周期和脈寬MCU通過地址總線選中周期和脈寬特殊功能寄存器的地址,然后通過數據總線將用戶設置好的周期和脈寬值寫入特殊功能寄存器,在系統實際工作的時候特殊功能寄存器的值由相應的寄存器存儲,以方便處理。P麗O路optO={UTHO,UTLO},opwO={UWHO,UWLO};P麗l路optl-OJTHl,UTLlhopwl=UWHl,UWLl}P觀波的周期和脈寬設定好后P碰波占空比就確定下來,實際波形可能有毛刺產生。2.設置分頻器分頻器有兩個特殊功能寄存器TcaplC0N和Tcap2C0N,TcaplCON用于設定定時計數器T3時鐘的分頻值,Tc鄰2C0N用于設定定時計數器T4時鐘的分頻值。MCU直接向特殊功能寄存器寫數據即可確定分頻時鐘。3.設計定時/計數器本發明中定時/計數器T3控制pwmO路,T4控制p誦l路,計數器的計數時鐘由系統時鐘分頻得到,分頻值可通過分頻特殊功能寄存器設定。以定時/計數器T3低8位tl3為例介紹計數器的設計,設計流程圖如圖2所示U3為8位寄存器變量用于計數,t13—load—en是t13重載初值的使能信號,t3_ov—opt是P漏波周期寬度計數溢出信號,當計數器的值與當前周期寄存器的值相等時該位自動置1,、Timer—2XB—BIT為一常量,其值為2,bll,表示系統工作在P麗輸出狀態,t13—count—en是tl3的計數使能信號,相當于tl3的計數時鐘,該信號由系統時鐘分頻得到。4.設置PWM波產生單元本發明中P麗發生的原理是計數器的值與當前脈寬寄存器和周期寄存器中的值相比較,如果計數器的值與當前脈寬寄存器或周期寄存器中的值相等,則pwm的值開始翻轉,翻轉的原則當周期計數溢出,p戰的值為l,當脈寬計數溢出pwm的值為0。以pwmO路為例介紹設計流程,設計流程如圖3所示pwm一i是PWM波信號值,tr3為定時/計數器T3的運行控制位,通過PWMC0N寄存器的TR3bit位設置,t3一ov一opt為pwm0路周期計數溢出信號,當計數器的值與周期寄存器的值相等時該信號自動置1,t3—ov_opw為pwniO路脈寬計數溢出信號,當計數器的值與脈寬寄存器中的值相等時該信號自動置l。5.插入死區時間當產生兩路互補的波形時要插入死區時間,互補輸出由PWMCON寄存器的CP麗位設置,PWMSEL位用來選擇以哪路P觀輸出為主,另一路輸出與其反相的波形,死區時間的值由死區特殊功能寄存器DT設置,當工作在互補輸出狀態時,系統會自動插入死區時間。沒有插入死區時間的兩路互補波形相位是完全相反的,而帶有死區時間的兩路互補波形它們的相位并不是嚴格相反,在死區時間內它們的相位都為0。死區插入方法的實現如圖4所示,首先系統根據用戶的定義產生主路P觀波PWM_H1,通過一個反相器產生另一路互補的PWM波PWM_L1,此時兩路波形還沒有插入死區時間。在PWM_H1和P麗波PWM_L1的上升沿啟動死區時間計數器dt,該計數器是一個8位的向下計數器,直到計到0為止,計數器初值由死區特殊功能寄存器得到,設置dt—zero信號,該信號在在dt計數期間為0電平,當dt停止計數后該信號跳變為1電平,即該信號在PWM—Hl和P麵波P觀一L1的上升沿后維持死區時間寬度的0電平時間,在其它時刻保持高電平。當dt停止計數后,dt—zero信號分別與開始產生的兩路互補的P麗波做邏輯與操作,相與后會使兩路P麗波的上升沿分別延遲一個死區時間的寬度,通過該方法可以將死區時間插入到兩路P麗波中。權利要求1.一種微控制器片上PWM脈沖波產生方法,其特征在于兼容IntelMCS-51指令體系,能夠產生兩路獨立的PWM波和兩路互補的PWM波;其具體操作步驟為1)設置PWM波脈寬和周期,用于定義PWM波的周期和占空比;2)設置分頻器,用于向定時/計數器提供計數時鐘;3)設置定時/計數器,用于對PWM波脈寬和周期計數;4)設置PWM波產生單元,產生兩路互補PWM波;5)設置死區時間寄存器,使互補的兩路PWM波插入死區時間。2.根據權利要求1所述微控制器片上PWM脈沖波產生方法,其特征在于所述步驟1)設置PWM波脈寬和周期中,因為產生兩路PWM波,所以要分別增設兩路PWM的周期和脈寬特殊功能寄存器,具體步驟如下(a)設置PWMO路的周期和脈寬特殊功能寄存器低8位周期寄存器UTL0,占用片上RAM地址A2H,高8位周期寄存器UTH0,占用片上RAM地址A3H;低8位脈寬寄存器UWL0,占用片上RAM地址9AH,高8位脈寬寄存器UWHO,占用片上RAM地址9BH;(b)設置存寄存器optO和opw0用于存儲PWMO路周期和脈寬特殊功能寄存器寫入的值;(c)設置P醫1路的周期和脈寬特殊功能寄存器低8位周期寄存器UTL1,占用片上RAM地址A4H,高8位周期寄存器UTH1,占用片上RAM地址A5H;低8位脈寬寄存器UWL1,占用片上RAM地址9CH,高8位脈寬寄存器UWH1,占用片上RAM地址9DH;(d)設置寄存器optl和叩wl用于存儲P麗l路周期和脈寬特殊功能寄存器寫入的值。3.根據權利要求1所述微控制器片上PWM脈沖波產生方法,其特征在于所述步驟2)設置分頻器的具體方法是分頻器用于設置時鐘的分頻數,映射關系如下MODE:分頻選擇00:CLK01:2分頻10:4分頻11:12分頻。4.根據權利要求1所述微控制器片上PWM脈沖波產生方法,其特征在于所述步驟3)設置定時/計數器,有兩路P觀,需要兩個定時/計數器(a)設置PWM0路的定時/計數器T3,16位;(b)設置T3周期計數溢出信號t3—ov—叩t,脈寬計數溢出信號t3—ov—叩w;(C)設置P觀l路的定時/計數器T4,16位;(d)設置T4周期計數溢出信號t4一ov一叩t,脈寬計數溢出信號號t4—ov—opw。5.根據權利要求1所述微控制器片上PWM脈沖波產生方法,其特征在于所述步驟4)設置P麗波產生單元的方法是設置P麗0路脈沖信號p卿j,PWM1路脈沖信號pwm—i[1];設置PWM方式寄存器PWMM0D和P麗控制寄存器P麗C0N,片上RAM地址分別為91H和F8H。P麗方式寄存器PW麗0D各位定義如表1所示,P麵控制寄存器PWMC0N各位定義如表2所示表1PWM方式寄存器(PWMMOD)<table>tableseeoriginaldocumentpage3</column></row><table>T3M:定時器3時鐘選擇當T3M二1時,定時器時鐘4分頻,當T3M=0時,定時器時鐘12分頻。在PWM輸出模式下無效,此時計數周期由Tc即lCON中的MODE決定;T4M:定時器4時鐘選擇當T4M^1時,定時器時鐘4分頻,當T4M二0時,定時器時鐘12分頻。在PWM輸出模式下無效,此時計數周期由Tc即2C0N中的M0DE決定;表2PWM控制寄存器(PWMCON)<table>tableseeoriginaldocumentpage3</column></row><table>TR3:定時器3運行控制位這一位由軟件置1清0,用來控制定時器/計數器運行與否;TF3:定時器3溢出標志位定時器3溢出時此位置1,當定時器3中斷復位程序生效,TF3自動清0。也可用軟件置1清0;TR4:定時器4運行控制位這一位由軟件置1清0,用來控制定時器/計數器運行與否;TF4:定時器4溢出標志位定時器4溢出時此位置1,當定時器4中斷復位程序生效,TF4自動清0。也可用軟件置1清0;CPWM::該位為0時,兩路PWM工作在獨立模式下,為1時工作在互補模式,在互補模式下,自動插入由死區時間寄存器(DT)定義的死區時間;PWMSEL:在互補輸出時選擇以哪路pwm為主路輸出,0:pwmO路為主,1:pwm1路為主。6.根據權利要求1所述微控制器片上PWM脈沖波產生方法,其特征在于所述步驟5)的插入死區時間方法(a)設置死區特殊功能寄存器DT(DeadTime),8bit寬度,用戶可以通過MCU直接對該寄存器寫數據,設置死區時間;(b)設置死區時間計數器dt,該計數器為8bit向下計數器;(c)設置信號dt—zero,當dt為零時該信號為1,當dt非零時該信號為0。當PWM互補輸出時,首先產生主路PWM波,通過一個反相器產生另一路互補的P麗波,設置了一個8位的死區寄存器DT,片上RAM地址為FEH,使兩路P麗波的上升沿分別延遲一個死區時間的寬度,這樣兩路互補的PWM波的相位并不是嚴格相反。7.—種微控制器片上PWM脈沖波產生方法用的系統,包括8051IP核(1),其特征在于所述8051IP核(1)通過MCU總線連接周期脈寬寄存器(2)、死區插入時間寄存器(3)、PWM波產生單元(4)、定時計數器(5)和分頻器(6);—個系統時鐘(7)連接所述分頻器(6);所述分頻器(6)與定時計數器(5)連接;所述PWM波產生單元(4)與死區插入時間寄存器(3)連接。全文摘要本發明涉及一種微控制器片上PWM脈沖波產生方法及系統。本方法通過周期寄存器和脈寬寄存器設置PWM波的周期和脈寬寬度,計數器分別對PWM波的周期和脈寬計數,計數器溢出后PWM波的信號值做相應翻轉,從而產生預先定義的PWM脈沖,當PWM互補輸出時,首先產生主路PWM波,通過一個反相器產生另一路互補的PWM波,設置死區時間寄存器,設定死區時間的值,使兩路PWM波的上升沿分別延遲一個死區時間的寬度,這樣,兩路互補的PWM波插入了死區時間。本發明使得微控制器具備動力驅動的可控性,大大提高微控制器的性能。文檔編號G06F1/00GK101661302SQ200910196559公開日2010年3月3日申請日期2009年9月27日優先權日2009年9月27日發明者徐曉勇,衛朱,煒汪,胡越黎,科閆申請人:上海大學