0 引言
隨著計算機和信息技術的飛速發(fā)展,數(shù)字信號處理技術得到了迅速的發(fā)展。數(shù)字控制使得電力電子變換控制更為靈活,在CPU計算速度允許的情況下,可實現(xiàn)模擬控制難以做到的復雜控制算法,設計者可以根據(jù)自己的系統(tǒng)需求,方便地更改控制器參數(shù),即便是在控制對象改變的情況下,也無需對控制器硬件做修改,只要改變某些軟件參數(shù)即可,從而大大增強了系統(tǒng)的兼容性。隨著DSP的應用逐漸普及,用DSP取代模擬電路中的專用PWM集成電路,已廣泛應用于UPS和逆變器控制中。
作為智能化設備,液晶屏和鍵盤等人機交互裝置是數(shù)字化電源系統(tǒng)所必不可少的。而DSP的工作頻率較高,讀寫周期很短,主要用于處理實時性要求苛刻、算法復雜的關鍵性任務,例如對功率開關管的控制,數(shù)據(jù)采集、分析、處理等,而液晶顯示和鍵盤掃描的任務可由普通的51系列單片機來完成,而DSP和51單片機間的數(shù)據(jù)交流可采用異步通信方式,即系統(tǒng)采用雙CPU結構。
1 系統(tǒng)的結構原理
本文中所采用的DSP和單片機型號分別是TI公司的TMS320F2812和MCS51系列。在系統(tǒng)中,DSP實現(xiàn)與單片機的串口異步通信,單片機將用戶的原始設置數(shù)據(jù)傳輸?shù)紻SP,而DSP將采集到的實時數(shù)據(jù)信息返回給單片機,單片機不斷刷新液晶的顯示。系統(tǒng)的基本結構如圖1所示。
圖1 系統(tǒng)基本結構框圖
1.1 串口介紹
本文中DSP是基于串行通信接口模塊SCI實現(xiàn)通信的。SCI支持CPU與其他使用標準格式的異步外設之間的數(shù)據(jù)通信。SCI僅需要2根數(shù)據(jù)線進行數(shù)據(jù)傳輸,雖然傳輸速度不快,但已經(jīng)能滿足一般的通信要求,而且外圍接口電路非常簡單。傳輸?shù)臄?shù)據(jù)長度在一定范圍內(nèi)也是可變的。
MCS51系列單片機內(nèi)部具有一個全雙工串行口,該串行口有4種工作方式,可以通過軟件進行設置,由片內(nèi)定時/計數(shù)器產(chǎn)生波特率。串行口的接收和發(fā)送數(shù)據(jù)均可以觸發(fā)中斷,并含有接收、發(fā)送緩沖器SBUF,二者共用一個地址。
1.2 單片機與DSP的通信接口電路
SCI接口分為RXD和TXD兩個管腳,傳統(tǒng)的2個設備異步通信采用RS232或RS485的形式,須另配置對應的RS232和RS485驅動芯片。而本文所提及的采用雙CPU結構的數(shù)字化電源設備,DSP和51單片機位于同一設備內(nèi),距離較短,可省去RS232和RS 485驅動芯片,采用2個CPU的RXD和TXD直接交叉連接即可。但需注意的是,由于DSP的工作電壓為3.3V,而MCS51單片機的工作電壓為5V,因此二者之間的通信電路需要進行電平轉換,如圖2所示。
圖2 電平轉換電路
在該電路中,單片機的TXD端電壓高于DSP的RXD端,故僅需要使用分壓電路,計算出合適的阻值即可滿足要求,而從DSP向單片機傳送數(shù)據(jù)時,需要提升電平,因而采用了光耦電路,將電平提升到單片機的工作電平。這樣就能以簡單的電路實現(xiàn)電平的轉換。需要注意的是,所采用的光耦速率要高于數(shù)據(jù)傳輸速率,這樣才能保證數(shù)據(jù)準確高效的傳輸,以免出現(xiàn)數(shù)據(jù)丟失。
1.3 單片機與DSP通信的軟件實現(xiàn)
在異步通信中必須先規(guī)定3件事:一是字符格式,即傳輸?shù)拿恳粠瑪?shù)據(jù)的格式;二是通信雙方要設置為相同的波特率,且該波特率能適應雙方的時鐘頻率;三是通信雙方要有約定的通信協(xié)議,也就是雙方要互相確認后才能傳輸數(shù)據(jù)。
在本設計中,DSP和單片機采用的數(shù)據(jù)幀格式是1位起始位,8位數(shù)據(jù)位和1位停止位。由于數(shù)據(jù)包采用校驗和的方式進行校驗,因而在數(shù)據(jù)幀格式中沒有設置奇偶校驗位。因而MCS51單片機應設置工作在串口方式1狀態(tài)下,此時串行口為8位異步通信接口。為了保證數(shù)據(jù)傳輸具有較高的速率,同時又有比較低的傳輸誤碼率,因而選擇波特率為9600b/s。通過相應的波特率設置計算公式計算出DSP和單片機的初始化時寄存器的初值,即可完成設置。這樣就保證了通信雙方幀格式的統(tǒng)一和波特率的統(tǒng)一,從而使數(shù)據(jù)通信正確、可靠。
DSP的串口初始化設置程序如下:
EALLOW;
GpioMuxReg s. GPGMUX. bit. SCIRXDB_GPIOG5 = 1;/ / 設置SCI??RX引腳外設功能
GpioMuxReg s. GPGMUX. bit. SCIT XDB_GPIOG4 = 1;/ / 設置SCI??TX引腳外設功能EDIS;
ScibRegs. SCICCR. all = 0x07; / / 1位停止位,無奇偶校驗,8位字符長度,使用空閑線模式協(xié)議
ScibRegs. SCICTL1. all = 0x 03;/ / 使能發(fā)送和接收緩沖
ScibRegs. SCICTL2. all= 0x 02;/ / 使能RXRDY中斷,禁止T XRDY中斷
ScibRegs. SCIPRI. all = 0x0000;/ / 禁止接收錯誤中斷和休眠模式
ScibRegs. SCIH BAUD= 0x01;/ / LSPCLK = 37.5MH z,波特率設為9600b/s
ScibRegs. SCILBAUD = 0xE1; ??
ScibRegs. SCICTL1. all = 0x 0023;/ / 重新使能SCI
51單片機串口初始化程序如下:
TMOD= 0x 21;/ / 定時器1工作在方式2,用于產(chǎn)生0串口的波特率
SCON= 0x 50;/ / 串行口0工作在方式1,允許接收,清標志位
TH 0= 0xfd; / / 晶振12MHz,設置波特率為9600b/s
TH 1= 0xfd; PS= 1; / / 串口中斷優(yōu)先
PCON| = 0x 00; / / 波特率不加倍
TR1= 1;
在本設計中,采用自己規(guī)定的通信協(xié)議,首先DSP發(fā)送出握手信號,C51收到握手信號后,進入中斷子程序,判斷握手信號是否正確,若正確才握手成功,開始接收數(shù)據(jù)包,接收完成后對數(shù)據(jù)進行和校驗,正確后刷新液晶的顯示數(shù)據(jù)存儲區(qū);若錯誤則放棄本次數(shù)據(jù),并將接收數(shù)據(jù)存儲區(qū)清零,等待下一次通信。其程序流程圖如圖3所示。
圖3 DSP和單片機的通信程序流程圖
DSP向單片機的定時發(fā)送程序如下:
ScibRegs. SCITXBUF = Sci_VarRx [ i] ;/ / 將數(shù)據(jù)包寫入發(fā)送緩沖區(qū)
i+ + ; / / 依次發(fā)送數(shù)據(jù)包
if(i= = 12)i= 0; / / 重新計數(shù)
IER | = M_INT1; / / 清除中斷標志位
EINT;
PieCtr lReg s. PIEACK. all = PIEACK_GROUP1;
51單片機串口中斷服務程序如下:
Rx0_Buffer[ Rx0_Ptr] = SBUF; / / 讀取數(shù)據(jù)到接收數(shù)組
RI= 0; / / 清除接收標志位
Rx0_Ptr+ + ; / / 計數(shù)加1
Rx_flag= 1;
1.4 單片機與液晶和鍵盤的接口
系統(tǒng)采用的是D6128×4圖形點陣液晶顯示器,它主要由行驅動器/列驅動器及128×64全點陣液晶顯示器組成,既可以完成圖形顯示,也可以顯示8×4個(16×16點陣)漢字。單片機與液晶模塊和鍵盤的接口電路如圖4所示。
圖4 單片機與液晶和鍵盤的接口電路
單片機與液晶之間通過8位數(shù)據(jù)線進行并口通信,將DSP傳來的實時數(shù)據(jù)傳輸?shù)揭壕э@示器進行實時顯示。對液晶驅動器的控制具體是通過各個內(nèi)部寄存器和標志位的操作實現(xiàn)的,單片機寫入不同的控制字就能讓液晶執(zhí)行各種不同的功能。DG12864是點陣型液晶,它主要通過對點陣中各點的亮滅來顯示不同的內(nèi)容,通過取模軟件可以方便地獲得漢字和英文符號等的字模,將程序中所要用到的字模存儲在特定的文件中,在程序中根據(jù)所要顯示的內(nèi)容調(diào)用相應的字模,最終通過并口傳輸?shù)揭壕寗悠鞯娘@示RAM區(qū)中實現(xiàn)顯示。
圖5 展示了系統(tǒng)實際運行時的界面
2 結語
本文設計了TMS320F2812和MCS51單片機的串行異步通信接口,并通過單片機實現(xiàn)驅動液晶的實時顯示和鍵盤設置功能。經(jīng)過實驗,證明本方案能夠高效準確地實現(xiàn)了上述功能,而且其硬件簡單、操作方便。目前這種方案已經(jīng)可靠地應用于智能充電器的人機界面模塊中。