基于雙DSP的并聯(lián)控制系統中串行通信的研究
SPI 部分發(fā)送和接受程序如下:
void spi_TxProcess()
{
while(SpiRegs.SPISTS.bit.BUFFULL_FLAG==1) {}
/*判斷SPISTS.bit.BUFFULL_FLAG)是否為空*/
if(SpiRegs.SPISTS.bit.BUFFULL_FLAG==0)
{
SpiRegs.SPITXBUF=slave_value;
/*向SPITXBUF 寫(xiě)入數據以啟動(dòng)數據發(fā)送*/
}
}
interrupt void SPIRXINTA_ISR(void)
/*中斷方式接受*/
{
TX_data2=SpiRegs.SPIRXBUF;
/*讀取SpiRegs.SPIRXBUF 后自動(dòng)清除中斷標志位*/
return;
}
4 異步通信模塊的設計
4.1 基于SCI 的硬件設計
圖 5 為上位機和DSP 的硬件連接圖。RS-232C 標準采用負邏輯:邏輯“1”為-5V~-15V 之間的低電平,通常用-12V 表示;邏輯“0”為+5V~+15V 之間的高電平,通常用+12V 表示。 上述標準稱(chēng)為EIA 電平。
RS-232C 是用正負電壓來(lái)表示邏輯狀態(tài),并且是負邏輯,而TTL 則以高低TTL 器件電平表示邏輯狀態(tài),且為正邏輯,兩者的規定是不同的。為了能夠將與EIA 器件連接,保證二者之間正常通信,必須在它們之間進(jìn)行電平和邏輯關(guān)系的變換。本Maxim 公司生產(chǎn)的集 成芯片MAX232 來(lái)實(shí)現這一變換[4]。變化后的電平在經(jīng)過(guò)6N137 轉換為適合TMS320F2812 的電平在+3.3V 以?xún)鹊男盘枴?p> 4.2 SCI 通信的軟件實(shí)現
通信前,發(fā)送端和接受端必須使用雙方協(xié)商一致的通信協(xié)議,數據被拆分成為(bit)進(jìn)行傳送。傳送的順序一次為起始位、數據位、奇偶校驗位、停止位。每秒鐘傳送的bit 數由波特率來(lái)決定。本文中的通信協(xié)議設定為:波特率38400bit/s,8 位數據位,無(wú)奇偶校驗,1 位停止位,數據傳輸同時(shí)采用ASCⅡ碼和二進(jìn)制兩種形式。
評論