王 霞
?
一種SPI全雙工通信方法討論
王 霞
深圳市中興微電子技術有限公司,江蘇 南京 210012
使用SPI全雙工通信方法,可以有效提高SPI的讀寫速率,為雙處理器連接的項目提供一種高速可靠的總線接口方式。
SPI;全雙工;雙處理器;通信
SPI總線是一種通用的同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。SPI傳輸為主從模式,需要Master提供時鐘,Slave被動接收或發送。若Slave主動發送數據到Master,需要通知Master以提供時鐘發起數據傳輸過程[1]。
本文描述SPI的全雙工通信方式以及數據包格式。
方案采用雙線通知模式,SPIMO_INT和SPISO_INT兩根通知線。當Master發起數據傳輸時,通過SPIMO_INT通知Slave。
當Slave發起數據傳輸時,通過SPISO_INT通知Matser,而后Master發起數據傳輸。這里Master采用SPIMO_INT輸出至Slave,原因為可使Slave不需要對數據包解析,通過檢測SPIMO_INT變化來結束傳輸過程。同時,也可以使Slave在傳輸出錯時,能夠識別出下一次傳輸的起始。Slave采用SPISO_INT輸出至Master,主要作用為以此來喚起Master發起數據傳輸過程。

圖1 SPI連接圖
在Master和Slave發送數據包不等長條件下,Master需要解析Slave發送的數據包頭,判斷傳輸過程結束。使用如下方法:
Master傳輸完一包數據后,若沒有超過MAX_TRANS_SIZE,則查看是否有待發數據。若有待發數據,則繼續下一包發送。若沒有待發數據,則解析從Slave接收數據的包頭,查看是否從Slave接收完畢。若接收完畢,則結束傳輸。若Slave還有待發數據,則Master再增補一段零傳輸,直到Slave的待發數據發送完畢為止。最后,結束當前傳輸,將SPIMO_INT拉低。狀態流程轉換如圖 2描述,其中Master是否發起再次傳輸,可根據調試情況變動,但以累計發送量不超過MAX_TRANS_SIZE為基準。

圖2 Master發起全雙工流程
2.1 連續包處理
Master:發送完一包數據時,若不超MAX_TRANS_SIZE,可繼續進行發送。按照連續包格式發送[2]。
Slave:發送完一包數據時,若不超MAX_TRANS_SIZE,可繼續進行發送。若產生FIFO溢出時,放棄傳輸。由于Slave傳輸受到Master控制,若使用連續包發送,中間可能會有FIFO溢出的可能,也需要增加判別手段。因此,方案中Slave不使用連續發送方式。
由于SPI需要傳輸變長數據,會存在無效數據,因此,需要規劃一種數據包格式,將無效數據過濾掉。當Master和Slave間進行傳輸時,以此數據包作為單位,對接收數據進行解析。數據的包頭信息,用于解析隨后傳輸的數據。
3.1 單數據包
單數據包格式如圖3描述:

圖3單數據包格式
數據發送方需要按照最小MIN_TRANS_SIZE來發送數據包,不足時需要增補無效的0x00數據。在發送數據時,數據長度以MIN_TRANS_SIZE對齊,不足時補0x00數據。軟件在配置SPI FIFO觸發門限時,可以配置MIN_TRANS_SIZE。最大傳輸數據包長度為MAX_TRANS_SIZE,其長度為以上包格式中所有字段的長度和。
1)包起始標志:標示數據包的起始。
2)包長度:數據包數據區的長度,單位byte。
3)數據:數據區,需要傳輸的數據。
4)包結束標志:標示數據包的結束,可用此標志來判斷數據包的合法性。尤其,當Slave FIFO下溢出時,Master用此標志可以確定數據包是否正常傳輸完畢,以判斷數據的正確性[3]。
3.2 連續數據包
連續數據包格式如圖4描述:

圖4連續數據包格式
連續包是在一次數據傳輸過程中完成,接收方需要能夠解析數據包。一包數據長度對齊至MIN_TRANS_SIZE,其起始標志作為一包數據的開始,用結束標志判斷數據的合法性。解析時,能夠過濾掉增補的無效0數據。
方案中,只允許Master使用連續數據包格式進行發送。Slave進行解析時,可參考DMA實際傳輸長度為解析的最大基準長度。
[1]陳楊,胡偉圣,馬陸.應用于Wi-Fi衛星通信系統的驗證平臺實現[J].信息技術,2016(6):21-26.
[2]魏小景.異步串行通信(UART)在DSP系統中的研究實現[J].科學與財富,2015(2):142.
[3]翟瑞永,張文棟,周兆英,等.SPI串行DataFlash在MEMS姿態測量系統中的應用[J].電子技術應用,2013,39(8):37-39.
A method of SPI full duplex communication
Wang Xia
Shenzhen Zhongxing Microelectronics Technology Co., Ltd., Jiangsu 210012
SPI full duplex communication method can effectively improve the read and write rate of SPI, providing a high-speed and reliable bus interface for the dual processor connected projects.
SPI; full duplex; dual processor; communication
TP368.12
A
1009-6434(2016)12-0053-02