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