引言
隨著計(jì)算機(jī)和信息技術(shù)的飛速發(fā)展, 數(shù)字信號處理技術(shù)得到了迅速的發(fā)展。數(shù)字控制使得電力電子變換控制更為靈活, 在CPU 計(jì)算速度允許的情況下, 可實(shí)現(xiàn)模擬控制難以做到的復(fù)雜控制算法, 設(shè)計(jì)者可以根據(jù)自己的系統(tǒng)需求, 方便地更改控制器參數(shù), 即便是在控制對象改變的情況下, 也無需對控制器硬件做修改, 只要改變某些軟件參數(shù)即可, 從而大大增強(qiáng)了系統(tǒng)的兼容性。隨著DSP 的應(yīng)用逐漸普及, 用DSP 取代模擬電路中的專用PWM 集成電路, 已廣泛應(yīng)用于UPS 和逆變器控制中。
作為智能化設(shè)備, 液晶屏和鍵盤等人機(jī)交互裝置是數(shù)字化電源系統(tǒng)所必不可少的。而DSP 的工作頻率較高, 讀寫周期很短, 主要用于處理實(shí)時性要求苛刻、算法復(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ī)型號分別是T I 公司的TMS320F2812 和MCS51 系列。在系統(tǒng)中, DSP實(shí)現(xiàn)與單片機(jī)的串口異步通信, 單片機(jī)將用戶的原始設(shè)置數(shù)據(jù)傳輸?shù)紻SP, 而DSP 將采集到的實(shí)時數(shù)據(jù)信息返回給單片機(jī), 單片機(jī)不斷刷新液晶的顯示。系統(tǒng)的基本結(jié)構(gòu)如圖1 所示。
圖1 系統(tǒng)基本結(jié)構(gòu)框圖
1. 1 串口介紹
本文中DSP 是基于串行通信接口模塊SCI 實(shí)現(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)定時/ 計(jì)數(shù)器產(chǎn)生波特率。串行口的接收和發(fā)送數(shù)據(jù)均可以觸發(fā)中斷, 并含有接收、發(fā)送緩沖器SBUF, 二者共用一個地址。
1. 2 單片機(jī)與DSP 的通信接口電路
SCI 接口分為RXD 和TXD 兩個管腳, 傳統(tǒng)的2 個設(shè)備異步通信采用RS 232 或RS 485 的形式, 須另配置對應(yīng)的RS 232 和RS 485 驅(qū)動芯片。而本文所提及的采用雙CPU 結(jié)構(gòu)的數(shù)字化電源設(shè)備, DSP 和51 單片機(jī)位于同一設(shè)備內(nèi), 距離較短, 可省去RS 232 和RS 485驅(qū)動芯片, 采用2 個CPU 的RXD 和TXD 直接交叉連接即可。但需注意的是, 由于DSP 的工作電壓為3. 3 V, 而MCS51 單片機(jī)的工作電壓為5 V, 因此二者之間的通信電路需要進(jìn)行電平轉(zhuǎn)換, 如圖2 所示。
圖2 電平轉(zhuǎn)換電路
在該電路中, 單片機(jī)的TXD 端電壓高于DSP 的RXD 端, 故僅需要使用分壓電路, 計(jì)算出合適的阻值即可滿足要求, 而從DSP 向單片機(jī)傳送數(shù)據(jù)時, 需要提升電平, 因而采用了光耦電路, 將電平提升到單片機(jī)的工作電平。這樣就能以簡單的電路實(shí)現(xiàn)電平的轉(zhuǎn)換。需要注意的是, 所采用的光耦速率要高于數(shù)據(jù)傳輸速率,這樣才能保證數(shù)據(jù)準(zhǔn)確高效的傳輸, 以免出現(xiàn)數(shù)據(jù)丟失。1. 3 單片機(jī)與DSP通信的軟件實(shí)現(xiàn)
在異步通信中必須先規(guī)定3 件事: 一是字符格式,即傳輸?shù)拿恳粠瑪?shù)據(jù)的格式; 二是通信雙方要設(shè)置為相同的波特率, 且該波特率能適應(yīng)雙方的時鐘頻率; 三是通信雙方要有約定的通信協(xié)議, 也就是雙方要互相確認(rèn)后才能傳輸數(shù)據(jù)。
在本設(shè)計(jì)中, DSP 和單片機(jī)采用的數(shù)據(jù)幀格式是1 位起始位, 8 位數(shù)據(jù)位和1 位停止位。由于數(shù)據(jù)包采用校驗(yàn)和的方式進(jìn)行校驗(yàn), 因而在數(shù)據(jù)幀格式中沒有設(shè)置奇偶校驗(yàn)位。因而MCS51 單片機(jī)應(yīng)設(shè)置工作在串口方式1 狀態(tài)下, 此時串行口為8 位異步通信接口。為了保證數(shù)據(jù)傳輸具有較高的速率, 同時又有比較低的傳輸誤碼率, 因而選擇波特率為9600 b/ s。通過相應(yīng)的波特率設(shè)置計(jì)算公式計(jì)算出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 位停止位, 無奇偶校驗(yàn),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. 5 MH z, 波特率設(shè)為9 600 b/ 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; / / 晶振12 MH z, 設(shè)置波特率為9 600 b/ s
TH 1= 0xfd; PS= 1; / / 串口中斷優(yōu)先
PCON| = 0x 00; / / 波特率不加倍
TR1= 1;
在本設(shè)計(jì)中, 采用自己規(guī)定的通信協(xié)議, 首先DSP發(fā)送出握手信號, C51 收到握手信號后, 進(jìn)入中斷子程序, 判斷握手信號是否正確, 若正確才握手成功, 開始接收數(shù)據(jù)包, 接收完成后對數(shù)據(jù)進(jìn)行和校驗(yà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; / / 重新計(jì)數(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+ + ; / / 計(jì)數(shù)加1
Rx_flag= 1;