專利名稱:一種基于spi總線的雙處理器通信方法
技術領域:
本發(fā)明涉及一種基于SPI總線的雙處理器通信方法,實現(xiàn)雙處理器間使用SPI總線進行高速雙向通信。
背景技術:
系統(tǒng)級處理器間通信的方式有很多種,RS-232、I2C等串行通信總線都已經(jīng)成為較為普遍的選擇之一,但是針對高速處理而言,RS-232和I2C等串行通信總線速率都比較低, RS-232串行通信的通信速率一般在115. 2kHz以下,I2C的通信速率最高達到100kHz。相對而言,SPI作為一種高速的、全雙工、同步的通信總線,其通信速率基本上可以按照通信雙方處理器的處理速度來設定,可以滿足高速處理器對于通信的要求。SPI總線系統(tǒng)是一種同步串行外設接口總線。它采用的是主從工作方式,在這種模式下通常有一個主設備和一個或多個從設備。主機控制數(shù)據(jù)傳輸,從機配合主機完成傳輸任務。硬件資源上,它通常采用的是四線制進行雙向通信,三線制實現(xiàn)單向傳輸,在通信過程中,主機首先通過片選信號線CS選中從機,然后主機將已裝入8位移位寄存器中的數(shù)據(jù)在8個時鐘信號的驅動下,通過MOSI管腳送到從機的移位寄存器中,于此同時,從機中數(shù)據(jù)也通過MISO管腳移送到主機中。在整個通信過程中信號線只能由主設備控制,從機對通信過程沒有控制作用。這種通信方式的缺點包括
1、缺少組幀機制,對于數(shù)據(jù)幀結構沒有作任何規(guī)定;
2、通信過程中沒有指定的數(shù)據(jù)流,缺少應答機制和確認是否收到數(shù)據(jù);
3、無任何校驗,缺少控制傳輸差錯的機制;
4、缺少對數(shù)據(jù)流的控制,發(fā)送方和接收方缺乏匹配機制;
5、缺少對數(shù)據(jù)鏈路的維護機制,無建立、維持、釋放的管理等。從OSI七層模型的角度而言,SPI通信本身僅僅規(guī)定了通信的物理層協(xié)議,而缺少數(shù)據(jù)鏈路層的協(xié)議。
發(fā)明內容
本發(fā)明的目的在于針對已有技術存在的上述缺陷,提供一種基于SPI總線的雙處理器通信方法,物理層能夠支持雙處理器雙向高速通信的要求,數(shù)據(jù)鏈路層能夠滿足雙向高速的透明傳輸——即滿足數(shù)據(jù)鏈路層的鏈路建立、鏈路維持以及數(shù)據(jù)有效等要求。為達到上述目的,本發(fā)明的構思如下
針對背景中的這些缺陷,針對雙處理器通信,作了如下一些處理
1、針對缺少組幀機制,建立一組有效的用于幀結構;
2、針對缺少應答機制等,基于SPI主從通信方式,采用基于單線握手信號的方式使其支持雙向通信;
3、針對無校驗的情況,建立基于CRC校驗方式的可靠通信;
4、針對缺少數(shù)據(jù)流控制的情況,采用緩沖區(qū)控制的方式,實現(xiàn)SPI流量控制;5、針對缺少鏈路維護機制,建立基于握手信號和幀支持相結合的數(shù)據(jù)鏈路維護機制。根據(jù)上述構思,本發(fā)明采用下述技術方案
一種基于SPI總線的雙處理器通信方法,其特征是
1、在物理層上,針對雙處理器SPI通信,增加接有上拉電阻的握手信號線。2、在無數(shù)據(jù)鏈路層的SPI上,建立用于雙處理器通信的完整數(shù)據(jù)鏈路層。上述用于雙處理器通信的SPI總線協(xié)議方法的具體步驟為
a.擴展SPI物理層。在SPI的四線制基礎上增加一條接有上拉電阻握手信號線—— Handshaking。b.建立基于SPI總線雙向通信的幀格式。C.基于SPI總線已經(jīng)規(guī)定的CS信號線和我們新建立的Handshaking握手信號線, 建立基于SPI總線雙向通信的同步機制。d.在發(fā)送幀和接收幀格式的基礎上,建立流量控制機制。e.基于CRC校驗和確認幀校驗,建立錯誤處理機制。上述的SPI物理層擴展的方法為
如
圖1所示,在SPI已有的四線制通信的基礎上,建立五線制用于雙向通信SPI總線。 在SPI的四線制基礎上增加一條接有上拉電阻握手信號線一HancKhaking,這是一條單向 (從機到主機)的信號線。而主機到從機已經(jīng)有了一條CS信號,所以不需要考慮這一方向上的信號。Handshaking信號的作用主要是告知主機,從機有數(shù)據(jù)需要發(fā)送。上述基于SPI總線雙向通信幀格式的方法為
在本發(fā)明所涉及的第a項五線制SPI總線基礎上,采用了“0比特插入法”,并將(0x7f) 作為一個流量控制的標志。作為主從通信方式,我們設計的幀格式主要包括發(fā)送方幀格式和接收方幀格式兩種。1、發(fā)送方幀格式
由于SPI本身可以8位或16位傳輸,并且具有CS選通信號,作為其發(fā)送開始與發(fā)送結束的標志,所以類似于HDLC的起始(結束)標志符(0x7f)可以省略,為了能夠滿足發(fā)送方的業(yè)務需求,增加了地址、控制和CRC校驗段。其幀結構如附圖2所示。發(fā)送幀格式中的地址是指目的地址。發(fā)送幀格式中的控制信息包括了功能ID和長度信息,在采用8位傳輸?shù)那闆r下, 功能ID為4bits,而長度信息為4bits;在采用16位傳輸?shù)那闆r下,功能ID和長度信息均為 8bits。發(fā)送幀格式中的長度信息是指信息段的長度。2、接收方幀格式
作為接收方而言,為了能夠有效控制數(shù)據(jù)流,考慮到SPI接收方的特點,針對LINUX等操作系統(tǒng)的處理機制,接收方的同步反饋信息為奇數(shù)子節(jié)時,為接收處理器的緩沖區(qū)剩余容量,偶數(shù)子節(jié)為該處理器前一接收子節(jié)是否處理器完標志——確認字符(0x7E),如附圖4 所示。上述基于SPI總線雙向通信的同步機制設計如下
基于SPI主從模式,本發(fā)明建立的總線同步機制分為主機發(fā)起通信的同步機制和從機發(fā)起通信的同步機制。
1、主機發(fā)起通信的同步機制
由主機發(fā)起的數(shù)據(jù)傳送與普通的SPI傳送并沒有區(qū)別,也就是說,本發(fā)明的方式完全兼容傳統(tǒng)的SPI通信。如附圖4所示。2、從機發(fā)起通信的同步機制
本發(fā)明中從機發(fā)起的通信由Handshaking信號向主機申請開始發(fā)送,主機在接收到 Handshaking信號后,開始SPI發(fā)送。由于絕大多數(shù)MCU的中斷處理以下降沿處理為主,所以,采用了外部上拉,由從機MCU置0的方式。在主機響應中斷后,Handshaking信號由從機的發(fā)送結束中斷取消。如附圖5所示。上述基于SPI總線雙向通信的總線流量控制機制設計如下
如附圖6所示,發(fā)送方發(fā)送過程中,每兩個Bytes就有一個接收緩沖區(qū)剩余容量(設
該值用Q )單元,當接收方回應的接收緩沖區(qū)容量小于2 ( Q <2 )時,則發(fā)送方應停止發(fā)
送.若當前正在發(fā)送過程中,則中斷當前幀,對于主機起始發(fā)送來說,即將CS信號拉高;對于從機起始發(fā)送來說,即將Handshaking信號拉高。發(fā)送方等待隨機長時間后,重新嘗試發(fā)起發(fā)送。上述基于SPI總線雙向通信的錯誤處理的方法如下
在本發(fā)明中,主要有以下兩種錯誤一是接收方CRC校驗錯誤,二是確認字符錯誤。1、CRC校驗錯誤
本發(fā)明中的CRC校驗采用16bitCRC校驗碼,其生成多項式采用CCITT V4. 1建議的
|M+ifl2+jr3+1。當出現(xiàn)CRC校驗錯誤是,接收方將接收緩沖區(qū)剩余容量(Ci )置為0,
即中止原發(fā)送方的繼續(xù)發(fā)送,然后接收方發(fā)起發(fā)送,將控制段中的控制ID置為錯誤標識符 Oxf,即控制段為OxfO.發(fā)送的數(shù)據(jù)幀如下
權利要求
1.一種基于SPI總線的雙處理器通信方法,其特征在于具體操作步驟為a.擴展SPI物理層;在SPI的四線制基礎上增加一條接有上拉電阻握手信號線—— Handshaking ;b.建立基于SPI總線雙向通信的幀格式;C.基于SPI總線已經(jīng)規(guī)定的CS信號線和我們新建立的Handshaking握手信號線,建立基于SPI總線雙向通信的同步機制;d.在發(fā)送幀和接收幀格式的基礎上,建立流量控制機制;e.基于CRC校驗和確認幀校驗,建立錯誤處理機制。
2.根據(jù)權利要求1所述的基于SPI總線的雙處理器通信方法,其特征在于所述步驟a 的擴展SPI物理層的方法為在SPI四線制通信的基礎上,建立五線制用于雙向通信SPI總線,即在SPI的四線制基礎上增加一條接有上拉電阻握手信號線——HancKhaking,這是一條從機到主機單向的信號線,HancKhaking信號的作用主要是告知主機,從機有數(shù)據(jù)需要發(fā)送。
3.根據(jù)權利要求2所述的基于SPI總線的雙處理器通信方法,其特征在于所述步驟b 建立基于SPI總線雙向通信幀格式的方法為在所述五線制SPI總線基礎上,采用“0比特插入法”,并將(0X7f)作為一個流量控制的標志;作為主從通信方式,幀格式主要包括發(fā)送方幀格式和接收方幀格式兩種①、發(fā)送方幀格式由于SPI本身可以8位或16位傳輸,并且具有CS選通信號,作為其發(fā)送開始與發(fā)送結束的標志,所以類似于HDLC的起始和結束標志符(0x7f)可以省略,為了能夠滿足發(fā)送方的業(yè)務需求,增加了地址、控制和CRC校驗段;發(fā)送方幀格式中的地址是指目的地址;發(fā)送方幀格式中的控制信息包括了功能ID和長度信息,在采用8位傳輸?shù)那闆r下,功能ID為4bits,而長度信息為4bits;在采用16位傳輸?shù)那闆r下,功能ID和長度信息均為 8bits ;發(fā)送方幀格式中的長度信息是指信息段的長度;②、接收方幀格式作為接收方而言,為了能夠有效控制數(shù)據(jù)流,考慮到SPI接收方的特點,針對LINUX操作系統(tǒng)的處理機制,接收方的同步反饋信息為奇數(shù)子節(jié)時,為接收處理器的緩沖區(qū)剩余容量,偶數(shù)子節(jié)為該處理器前一接收子節(jié)是否處理器完標志——確認字符(0x7E)。
4.根據(jù)權利要求3所述的基于SPI總線的雙處理器通信方法,其特征在于所述步驟c 建立基于SPI總線雙向通信的同步機制的方法如下基于SPI主從模式,明建立的總線同步機制分為主機發(fā)起通信的同步機制和從機發(fā)起通信的同步機制①、主機發(fā)起通信的同步機制由主機發(fā)起的數(shù)據(jù)傳送與普通的SPI傳送并沒有區(qū)別,也就是說,完全兼容傳統(tǒng)的SPI 通信;②、從機發(fā)起通信的同步機制從機發(fā)起的通信由Handshaking信號向主機申請開始發(fā)送,主機在接收到Handshaking信號后,開始SPI發(fā)送;由于絕大多數(shù)MCU的中斷處理以下降沿處理為主,所以,采用了外部上拉,由從機MCU置0的方式;在主機響應中斷后,Handshaking信號由從機的發(fā)送結束中斷取消。
5.根據(jù)權利要求4所述的基于SPI總線的雙處理器通信方法,其特征在于所述步驟d 建立流量控制機制的方法如下發(fā)送方發(fā)送過程中,每兩個Bytes就有一個接收緩沖區(qū)剩余容量單元(設該值為,),當接收方回應的接收緩沖區(qū)容量小于2( Q <2 )時,則發(fā)送方應停止發(fā)送.若當前正在發(fā)送過程中,則中斷當前幀,對于主機起始發(fā)送來說,即將CS信號拉高;對于從機起始發(fā)送來說,即將HankShaking信號拉高;發(fā)送方等待隨機長時間后,重新嘗試發(fā)起發(fā)送。
6.根據(jù)權利要求5所述的基于SPI總線的雙處理器通信方法,其特征在于所述步驟e 建立錯誤處理機制的方法如下在本基于SPI總線雙向通信主要有以下兩種錯誤一是接收方CRC校驗錯誤,二是確認字符錯誤①、CRC校驗錯誤CRC校驗采用16bitCRC校驗碼,其生成多項式采用CCITT V4. 1建議的Xlfi+Zn;當出現(xiàn)CRC校驗錯誤是,接收方將接收緩沖區(qū)剩余容量()置為0,即中止原發(fā)送方的繼續(xù)發(fā)送,然后接收方發(fā)起發(fā)送,將控制段中的控制ID置為錯誤標識符 Oxf,即控制段為OxfO.發(fā)送的數(shù)據(jù)幀如下AdcIreHS0xl;0②、確認字符錯誤確認字符錯誤是發(fā)送方?jīng)]有在偶字節(jié)接收到確認字符0X7E,則發(fā)送方中斷本次發(fā)送, 即將主機端CS信號或者從機端Handshaking信號拉高;然后,在隨機時間間隔后重新發(fā)起發(fā)送。
全文摘要
本發(fā)明涉及一種基于SPI總線的雙處理器通信方法。本方法用于雙處理器間使用SPI總線進行高速雙向通信。本方法是在SPI總線物理層四線制的基礎上,增加了一條HandShaking線,構成五線制SPI總線,使之能夠進行雙向通信;在數(shù)據(jù)鏈路層上包括采用“0比特插入法”,使用CS信號和HandShaking信號和反饋消息組合完成對五線制SPI總線的同步機制;使用反饋信息中的“接收緩沖區(qū)剩余容量”對五線制SPI總線的流量控制;采用CRC校驗和反饋信息中的確認字符“0x7F”,完成對該發(fā)明中的五線制SPI總線的錯誤處理。該方法具有擴展簡單、應用方便,且與其他總線兼容的特點,同時可以獲得極高的通信速率,滿足雙處理器間高速通信的要求,可廣泛應用于所有多處理器的系統(tǒng)設計中。
文檔編號G06F13/20GK102508812SQ201110387599
公開日2012年6月20日 申請日期2011年11月30日 優(yōu)先權日2011年11月30日
發(fā)明者劉廷堯, 孫斌, 徐磊, 王昆, 王龍杰, 胡越黎, 虞超 申請人:上海大學