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