基于雙DSP的并聯(lián)控制系統(tǒng)中串行通信的研究
TMS320F2812 的SPI 是一個(gè)高速的同步串行輸入/輸出端口,一般用來(lái)實(shí)現(xiàn)DSP 控制器 之間和DSP 與外圍設(shè)備之間的通信。SPI 有兩種操作模式:主操作模式和從操作模式。主片 控制了時(shí)鐘信號(hào)(SPICLK),它可以在任何時(shí)候通過(guò)發(fā)送SPICLK 信號(hào)來(lái)啟動(dòng)數(shù)據(jù)傳輸。無(wú)論是主片還是從片,數(shù)據(jù)都是在SPICLK 的某個(gè)邊沿移出移位寄存器,在SPICLK 相反的邊沿鎖存在移位寄存器中,并且輸出和接受數(shù)據(jù)都是同時(shí)進(jìn)行的。
芯片的 SCI 是一個(gè)雙線通信的異步串行通信接口,也稱UART 口,一般用于接上位機(jī)(以下簡(jiǎn)稱PC 機(jī))。
3 同步通信模塊的設(shè)計(jì)
3.1 基于SPI 模塊的硬件設(shè)計(jì)
讓兩個(gè) DSP 分別工作在主、從操作模式下,兩者的引腳連接如圖2 所示。主處理器通 過(guò)SPICLK 腳向整個(gè)通信網(wǎng)提供串行時(shí)鐘,控制著系統(tǒng)的數(shù)據(jù)傳輸;通過(guò)SPISTE 腳給從處 理器提供片選信號(hào),低電平有效;通過(guò)SPISIMO 腳把數(shù)據(jù)輸出到從處理器的SPISIMO 腳上; 通過(guò)SPISOMI 腳接受從機(jī)處理器SPISOMI 腳上的數(shù)據(jù)。
3.2 同步通信流程設(shè)計(jì)及軟件實(shí)現(xiàn)
在設(shè)計(jì)時(shí),主處理器先向從處理器發(fā)送給定信息,發(fā)送完畢后,循環(huán)發(fā)送0,使SPICLK 不停地有時(shí)鐘脈沖輸出,并等待接受從處理器發(fā)送的數(shù)據(jù)。從處理器先是等待給定信息,如果接收到非零數(shù)據(jù),則進(jìn)行下一步運(yùn)行并不斷向主處理器發(fā)送當(dāng)前數(shù)據(jù)。
SPI 通信主處理器的流程圖和從處理器的流程圖分別如圖3、圖4 所示。
在完成兩個(gè)DSP 時(shí)鐘和中斷初始化后,分別對(duì)其SPI 寄存器進(jìn)行設(shè)置,讓其分別處于 master 和slave 模式。主、從處理器都采用查詢方式發(fā)送數(shù)據(jù),中斷方式接受數(shù)據(jù)。
查詢方式發(fā)送是判斷SPI 發(fā)送緩沖器已滿標(biāo)志位(SPISTS.bit.BUFFULL_FLAG)是否為空,如果為空,則將數(shù)據(jù)寫(xiě)入發(fā)送緩沖寄存器(SPITXBUF)中,啟動(dòng)SPISIMO 引腳的數(shù)據(jù)發(fā)送,數(shù)據(jù)發(fā)送完畢后SPISTS.bit.BUFFULL_FLAG 自動(dòng)清零,等待下一次發(fā)送。
中斷方式接受是在SPI 中斷使能位(SPICTL.bit.SPIINTENA)置位的情況下,如果接收 到數(shù)據(jù)傳送到SPI 串行數(shù)據(jù)寄存器(SPIDAT)中,SPI 中斷標(biāo)志位(SPISTS.bit.INT_FLAG)置位且觸發(fā)中斷,并將數(shù)據(jù)轉(zhuǎn)移到接受緩沖寄存器(SPIRXBUF)中,如果SPIRXBUF 中數(shù)據(jù)被讀取,則SPISTS.bit.INT_FLAG 自動(dòng)清零,等待下一次接受中斷。
評(píng)論