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