專利名稱:一種基于spi的全雙工通信裝置及其方法
技術領域:
本發(fā)明涉及一種通訊裝置及其方法,具體涉及一種基于SPI的全雙工通信裝置及其方法。
背景技術:
SPI (Serial Peripheral Interface—串行外設接口)總線系統(tǒng)是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。SPI —般使用4條線時鐘信號線(CLK)、主機輸入/從機輸出數(shù)據(jù)線MIS0、主機輸出/從機輸入數(shù)據(jù)線MOSI和低電平有效的從機選擇線CS,由于SPI在芯片的管腳上只占用四根線,節(jié)約了芯片 的管腳,同時為PCB的布局上節(jié)省空間,提供方便,同時,數(shù)據(jù)傳輸速度也比較快,最高速度可達到幾Mbps。正是出于這種簡單易用且數(shù)據(jù)傳輸速度快的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,目前SPI通信普遍為半雙工通信方式,這種通信方式在相同速率、單位時間內(nèi)所發(fā)送的數(shù)據(jù)量有限,這樣會造成大量的通信延時,消耗通信資源,導致系統(tǒng)響應速度降低,進而影響到用戶使用。即使某些SPI通信實現(xiàn)了全雙工通信,但也存在沒有指定的流控制、沒有應答機制確認是否接收到數(shù)據(jù)等缺點。
發(fā)明內(nèi)容
針對目前SPI通信存在的上述問題,本發(fā)明所要解決的技術問題是提供一種高效率的基于SPI的全雙工通信裝置及其通信方法方法,用以下技術方案實現(xiàn)
一種基于SPI的全雙工通信裝置,包括主器件與從器件,以及設置在主器件與從器件之間用于主器件與從器件相互通信的信號線。所述信號線包括數(shù)據(jù)線MISO與M0SI,同步時鐘信號線CLK,從器件選擇信號線CS,主器件請求從器件接收數(shù)據(jù)的信號線M_REQ,以及從器件請求主器件接收數(shù)據(jù)信號線S_REQ ;所述信號線M_REQ由主器件控制,連接于主器件的I/O 口與從器件的中斷觸發(fā)口之間,所述信號線S_REQ由從器件控制,連接于從器件的I/O 口與主器件的中斷觸發(fā)口之間。一種基于權(quán)利要求I所述裝置的通信方法,包括主器件與從器件同時向?qū)Ψ桨l(fā)送數(shù)據(jù)的步驟、主器件向從器件發(fā)送數(shù)據(jù)的步驟、從器件到主器件發(fā)送數(shù)據(jù)的步驟以及主器件與從器件之間通信所使用的數(shù)據(jù)幀;所述數(shù)據(jù)幀數(shù)據(jù)結(jié)構(gòu)包括由用戶自定義特殊字符表示的開始信號、用于表示當前發(fā)送幀數(shù)的循環(huán)計數(shù)器的幀序列號、用于表示本幀數(shù)據(jù)長度的數(shù)據(jù)長度、數(shù)據(jù)內(nèi)容、用于檢測數(shù)據(jù)的完整性和準確性的校驗值、用于表示接收成功的應答字符ACK。具體的,所述主器件與從器件同時向?qū)Ψ桨l(fā)送數(shù)據(jù)的步驟包括
(I)主器件和從器件準備好各自需要發(fā)送的數(shù)據(jù)后,同時拉低M_CRQ和S_CRQ信號線的電平,觸發(fā)對方中斷;(2)主器件接收到從器件發(fā)送的S_CRQ中斷后,主器件通過同步時鐘信號線CLK發(fā)送時
鐘信號;
(3)主器件通過MOSI發(fā)送主器件數(shù)據(jù),從器件同步通過MISO發(fā)送從器件數(shù)據(jù);當一個字節(jié)發(fā)送完畢后,從器件拉高信號線S_CRQ的電平,主器件和從器件分別處理接收到的字節(jié);
(4)如果從器件的一幀數(shù)據(jù)沒有發(fā)送完畢,則重新拉低信號線S_CRQ的電平,然后重復步驟(2)和(3);
(5 )主器件或從器件在數(shù)據(jù)發(fā)送結(jié)束后,若在設定時間內(nèi)沒有接收到對方的ACK信號,則重新發(fā)送該幀數(shù)據(jù);若接收到對方的ACK信號且此時正處于數(shù)據(jù)發(fā)送狀態(tài)則等待數(shù)據(jù)發(fā)送完畢之后再經(jīng)過一個預定的時延后向?qū)Ψ交貜虯CK信號;若此刻處于數(shù)據(jù)發(fā)送空閑且預定的時延已經(jīng)超時,則無需等待,立即發(fā)送ACK信號。 具體的,所述主器件向從器件發(fā)送數(shù)據(jù)的步驟包括
(1)主器件需發(fā)送數(shù)據(jù)到從器件時,拉低信號線M_CRQ的電平觸發(fā)從器件中斷;
(2)從器件收到中斷后首先判斷自身狀態(tài),若從器件此時處于數(shù)據(jù)發(fā)送狀態(tài),則等待當前字節(jié)的數(shù)據(jù)發(fā)送完成;若從器件此時處于空閑狀態(tài)則準備接收數(shù)據(jù),從器件拉低信號線
S.REQ電平觸發(fā)主器件中斷;
(3)主器件收到從器件信號線S_CRQ的信號后,通過同步時鐘信號線CLK發(fā)送時鐘信號,再通過數(shù)據(jù)線MOSI發(fā)送數(shù)據(jù)給從器件;從器件收到數(shù)據(jù)后拉高信號線S_CRQ的電平,如果一幀沒有接收完畢,則重復執(zhí)行步驟(2 )和(3 );
(4)從器件接收完一幀數(shù)據(jù)后,校驗通過后由數(shù)據(jù)線MISO返回ACK信號并拉高S_CRQ信號;主器件接收到ACK信號后拉高M_CRQ的電平。具體的,所述從器件向主器件發(fā)送數(shù)據(jù)的步驟包括
(1)從器件需要發(fā)送數(shù)據(jù)給主器件時,首先判斷自身狀態(tài),如從器件處于空閑狀態(tài)則拉低信號線S_CRQ的電平觸發(fā)主器件中斷,若此時處于數(shù)據(jù)接收狀態(tài)則等待當前字節(jié)數(shù)據(jù)接收完畢后再觸發(fā)主器件中斷;
(2)主器件接收到信號線S_CRQ信號后通過同步時鐘信號線CLK發(fā)送時鐘信號,同時從器件通過數(shù)據(jù)線MISO發(fā)送數(shù)據(jù)給主器件;一個字節(jié)數(shù)據(jù)發(fā)送完畢后從器件拉高信號線S_CRQ的電平,一幀數(shù)據(jù)沒有發(fā)送完畢前,重復執(zhí)行步驟(I)和(2);
(3)主器件接收完一幀數(shù)據(jù)后,校驗通過后由數(shù)據(jù)線MOSI返回ACK信號;
(4)從器件接收到主器件返回的ACK信號,拉高信號線S_CRQ的電平;然后主器件再拉高信號線1_0^的電平。進一步的,當主器件或從器件接收到的校驗值與內(nèi)部計算的校驗值不一致時,則對應的主器件或從器件不發(fā)送ACK信號,對應的主器件或從器件在設定時間內(nèi)未收到ACK信號則按上述對應的方法重新發(fā)送對應的數(shù)據(jù)幀。更進一步的,主器件向從器件發(fā)送數(shù)據(jù)時,主器件拉低信號線M_CRQ電平后在設定時間內(nèi)沒有接收到從器件信號線S_CRQ的信號,則主器件按照主器件向從器件發(fā)送數(shù)據(jù)的方法重新發(fā)送本幀數(shù)據(jù)。更進一步的,從器件到主器件發(fā)送數(shù)據(jù)時,從器件拉低信號線S_CRQ電平后,在設定時間內(nèi)沒有收到主器件的CLK時鐘信號,則從器件按從器件到主器件發(fā)送數(shù)據(jù)的方法重新發(fā)送本幀數(shù)據(jù)。具體的,所述重新發(fā)送對應的數(shù)據(jù)幀以及重新發(fā)送本幀數(shù)據(jù)的步驟為結(jié)束本次數(shù)據(jù)的發(fā)送,將本幀數(shù)據(jù)已接收部分刪除,并將主器件與從器件的狀態(tài)重置為初始狀態(tài),準備重新發(fā)送數(shù)據(jù)。優(yōu)選的,主器件與從器件均設置有用于統(tǒng)計一幀數(shù)據(jù)發(fā)送錯誤次數(shù)的錯誤計數(shù)器,當錯誤計數(shù)器的數(shù)值大于設定的閾值時,則將該幀數(shù)據(jù)丟棄,同時生成錯誤信息報告。綜上所述,本發(fā)明具有以下顯著有益效果(1)實現(xiàn)了全雙工的通信方式,在通信速率不變的情況下,提高了通信效率、提升了系統(tǒng)響應時間,將理想狀態(tài)下通信的數(shù)據(jù)吞吐量提升一倍;(2)通過數(shù)據(jù)校驗以及ACK信號收發(fā),保證SPI通信雙發(fā)同時發(fā)送數(shù)據(jù)時各自數(shù)據(jù)幀的完整性和準確性。
圖I為主器件與從器件通信接口示意 圖2為主器件和從器件同時發(fā)送數(shù)據(jù)示意 圖3為主器件向從器件發(fā)送數(shù)據(jù)示意 圖4為從器件向主器件發(fā)送數(shù)據(jù)示意 圖5為加入容錯設計的主器件與從器件通信示意圖。
具體實施例方式為了便于本領域技術人員理解,下面將結(jié)合附圖以及實施例對本發(fā)明進行進一步詳細描述。本發(fā)明揭示了一種基于SPI的全雙工通信裝置,如圖I所示,包括主器件與從器件,以及設置在主器件與從器件之間用于主器件與從器件相互通信的信號線。所述信號線包括數(shù)據(jù)線MISO與MOSI,同步時鐘信號線CLK,從器件選擇信號線CS,主器件請求從器件接收數(shù)據(jù)的信號線M_REQ,以及從器件請求主器件接收數(shù)據(jù)信號線S_REQ。信號線M_REQ連接于主器件的I/O 口與從器件的中斷觸發(fā)口之間,由主器件控制,信號線S_REQ連接于從器件的I/O 口與主器件的中斷觸發(fā)口之間,由從器件控制。同時,本發(fā)明也揭示了一種基于上述裝置的通信方法,包括主器件與從器件同時向?qū)Ψ桨l(fā)送數(shù)據(jù)的步驟、主器件向從器件發(fā)送數(shù)據(jù)的步驟、從器件到主器件發(fā)送數(shù)據(jù)的步驟以及主器件與從器件之間通信所使用的數(shù)據(jù)幀;所述數(shù)據(jù)幀數(shù)據(jù)結(jié)構(gòu)包括由用戶自定義特殊字符表示的開始信號、用于表示當前發(fā)送幀數(shù)的循環(huán)計數(shù)器的幀序列號、用于表示本幀數(shù)據(jù)長度的數(shù)據(jù)長度、數(shù)據(jù)內(nèi)容、用于檢測數(shù)據(jù)的完整性和準確性的校驗值、用于表示接收成功的應答字符ACK。如圖2所示,主器件與從器件之間同時向?qū)Ψ桨l(fā)送數(shù)據(jù)的步驟包括
(1)主器件和從器件準備好各自需要發(fā)送的數(shù)據(jù)后,同時拉低M_CRQ和S_CRQ信號線的電平,觸發(fā)對方中斷;
(2)主器件接收到從器件發(fā)送的S_CRQ中斷后,主器件通過同步時鐘信號線CLK發(fā)送時
鐘信號;
(3)主器件通過MOSI發(fā)送主器件數(shù)據(jù),從器件同步通過MISO發(fā)送從器件數(shù)據(jù);當一個字節(jié)發(fā)送完畢后,從器件拉高信號線S_CRQ的電平,主器件和從器件分別處理接收到的字節(jié);
(4)如果從器件的一幀數(shù)據(jù)沒有發(fā)送完畢,則重新拉低信號線S_CRQ的電平,然后重復步驟(2)和(3);
(5 )主器件或從器件在數(shù)據(jù)發(fā)送結(jié)束后,若在設定時間內(nèi)沒有接收到對方的ACK信號,則重新發(fā)送該幀數(shù)據(jù);若接收到對方的ACK信號且此時正處于數(shù)據(jù)發(fā)送狀態(tài)則等待數(shù)據(jù)發(fā)送完畢之后再經(jīng)過ー個預定的時延(Tframe_delay)后向?qū)Ψ交貜虯CK信號;若此刻處于數(shù)據(jù)發(fā)送空閑且預定的時延(Tframe_delay)已經(jīng)超吋,則無需等待,立即發(fā)送ACK信號。至此,主器件與從器件同時向?qū)Ψ桨l(fā)送ー幀數(shù)據(jù)結(jié)束。如圖3所示主器件向從器件發(fā)送數(shù)據(jù)的步驟包括 (O主器件需發(fā)送數(shù)據(jù)到從器件時,拉低信號_M_CRQ的電平觸發(fā)從器件中斷;
(2)從器件收到中斷后首先判斷自身狀態(tài),若從器件此時處于數(shù)據(jù)發(fā)送狀態(tài),則等待當前字節(jié)的數(shù)據(jù)發(fā)送完成;若從器件此時處于空閑狀態(tài)則準備接收數(shù)據(jù),從器件拉低信號線
S.REQ電平觸發(fā)主器件中斷;
(3)主器件收到從器件信號線S_CRQ的信號后,通過同步時鐘信號線CLK發(fā)送時鐘信號,同時通過數(shù)據(jù)線MOSI發(fā)送數(shù)據(jù)給從器件;從器件收到數(shù)據(jù)后拉高信號線S_CRQ的電平,當從器件處理完已接收的字節(jié)后,若如果ー幀沒有接收完畢,則重復執(zhí)行步驟(2)和(3);
(4)若主器件在一個時間周期內(nèi)沒有繼續(xù)發(fā)送數(shù)據(jù)(也就是說數(shù)據(jù)發(fā)送完畢),此時從器件接收完此幀數(shù)據(jù)后,校驗通過后由數(shù)據(jù)線MISO返回ACK信號并拉高S_CRQ信號;同時主器件接收到ACK信號后拉高M_CRQ。如圖4所示,從器件到主器件發(fā)送數(shù)據(jù)的步驟包括
(1)從器件需要發(fā)送數(shù)據(jù)給主器件吋,首先判斷自身狀態(tài),如從器件處于空閑狀態(tài)則拉低信號線S_CRQ的電平觸發(fā)主器件中斷,若此時處于數(shù)據(jù)接收狀態(tài)則等待當前字節(jié)數(shù)據(jù)接收完畢后再觸發(fā)主器件中斷;
(2)主器件接收到S_CRQ信號后通過同步時鐘信號線CLK發(fā)送時鐘信號,同時從器件通過數(shù)據(jù)線MISO發(fā)送數(shù)據(jù)給主器件;一個字節(jié)數(shù)據(jù)發(fā)送完畢后從器件拉高S_CRQ,一幀數(shù)據(jù)沒有發(fā)送完畢前,重復執(zhí)行步驟(I)和(2);
(3)主器件接收完ー幀數(shù)據(jù)后,校驗通過后由數(shù)據(jù)線MOSI返回ACK信號;
(4)從器件接收到主器件返回的ACK信號,拉高信號線S_CRQ的電平;然后主器件再拉高信號_M_CRQ的電平。為保證通訊過程中數(shù)據(jù)的完整性,當主器件或從器件接收到的校驗值與內(nèi)部計算的校驗值不一致吋,則對應的主器件或從器件不發(fā)送ACK信號,對應的主器件或從器件在設定時間內(nèi)未收到ACK信號則按照上述對應的方法重新發(fā)送對應的數(shù)據(jù)幀。為了進一步保證通信過程中數(shù)據(jù)的完整性,另外的兩種情況也需要重新發(fā)送本幀數(shù)據(jù)
主器件向從器件發(fā)送數(shù)據(jù)步驟,主器件拉低信號_M_CRQ電平后在設定時間內(nèi)沒有接收到從器件信號線S_CRQ的信號,則主器件則按照主器件向從器件發(fā)送數(shù)據(jù)的方法重新發(fā)送本幀數(shù)據(jù)。
從器件到主器件發(fā)送數(shù)據(jù)步驟,從器件拉低信號線S_CRQ電平后,在設定時間內(nèi)沒有收到主器件的CLK時鐘信號,則按從器件到主器件發(fā)送數(shù)據(jù)的方法重新發(fā)送本幀數(shù)據(jù)。本實施例以主器件向從器件發(fā)送數(shù)據(jù)為例,如圖5所示,當主器件發(fā)送完數(shù)據(jù)之后,Tbyte_Timeout (延遲時間,發(fā)送或者接收ー個字節(jié)的最大延時)時間內(nèi)沒有接收到從器件的S_CRQ信號,則主器件需要重新發(fā)送本幀數(shù)據(jù)。重新發(fā)送對應的數(shù)據(jù)幀以及重新發(fā)送本幀數(shù)據(jù)的步驟為結(jié)束本次數(shù)據(jù)的發(fā)送,將本幀數(shù)據(jù)已接收部分刪除,并將主器件與從器件的狀態(tài)重置為初始狀態(tài),準備重新發(fā)送數(shù)據(jù)。為了更好地處理數(shù)據(jù)幀發(fā)送錯誤的問題,本發(fā)明的主器件與從器件均設置有用于統(tǒng)計ー幀數(shù)據(jù)發(fā)送錯誤次數(shù)的錯誤計數(shù)器,當錯誤計數(shù)器的數(shù)值大于設定的閾值吋,則將該幀數(shù)據(jù)丟棄,同時生成錯誤信息報告。
需要指出的是,無論主器件還是從器件要發(fā)送數(shù)據(jù),都必須先由從器件的S_CRQ觸發(fā)主機中斷,然后由器件輸出CLK時鐘信號,并將數(shù)據(jù)的發(fā)出,而主器件的M_CRQ信號僅僅表示主機需要發(fā)送數(shù)據(jù)。上述實施例為本發(fā)明實現(xiàn)的優(yōu)選方案,需要說明的是,在不脫離本發(fā)明構(gòu)思前提下,任何顯而易見的替換和微小變化均在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種基于SPI的全雙エ通信裝置,包括主器件與從器件,以及設置在主器件與從器件之間用于主器件與從器件相互通信的信號線,其特征在干 所述信號線包括數(shù)據(jù)線MISO與MOSI,同步時鐘信號線CLK,從器件選擇信號線CS,主器件請求從器件接收數(shù)據(jù)的信號線M_REQ,以及從器件請求主器件接收數(shù)據(jù)信號線S_REQ ; 所述信號_M_REQ由主器件控制,連接于主器件的I/O ロ與從器件的中斷觸發(fā)ロ之間,所述信號線S_REQ由從器件控制,連接于從器件的I/O ロ與主器件的中斷觸發(fā)ロ之間。
2.一種基于SPI的全雙エ通信方法,其特征在于包括主器件與從器件同時向?qū)Ψ桨l(fā)送數(shù)據(jù)的步驟、主器件向從器件發(fā)送數(shù)據(jù)的步驟、從器件到主器件發(fā)送數(shù)據(jù)的步驟以及主器件與從器件之間通信所使用的數(shù)據(jù)幀; 所述數(shù)據(jù)幀數(shù)據(jù)結(jié)構(gòu)包括由用戶自定義特殊字符作為數(shù)據(jù)開始發(fā)送的標志的開始信號、用于表示當前發(fā)送幀數(shù)的循環(huán)計數(shù)器的幀序列號、用于表示本幀數(shù)據(jù)長度的數(shù)據(jù)長度、數(shù)據(jù)內(nèi)容、用于檢測數(shù)據(jù)的完整性和準確性的校驗值以及用于表示接收成功的應答字符ACK。
3.根據(jù)權(quán)利要求2所述的基于SPI的全雙エ通信方法,其特征在于所述主器件與從器件同時向?qū)Ψ桨l(fā)送數(shù)據(jù)的步驟包括 (1)主器件和從器件準備好各自需要發(fā)送的數(shù)據(jù)后,同時拉低M_CRQ和S_CRQ信號線的電平,觸發(fā)對方中斷; (2)主器件接收到從器件發(fā)送的S_CRQ中斷后,主器件通過同步時鐘信號線CLK發(fā)送時鐘信號; (3)主器件通過MOSI發(fā)送主器件數(shù)據(jù),從器件同步通過MISO發(fā)送從器件數(shù)據(jù);當ー個字節(jié)發(fā)送完畢后,從器件拉高信號線S_CRQ的電平,主器件和從器件分別處理接收到的字節(jié); (4)如果從器件的一幀數(shù)據(jù)沒有發(fā)送完畢,則重新拉低信號線S_CRQ的電平,然后重復步驟(2)和(3); (5 )主器件或從器件在數(shù)據(jù)發(fā)送結(jié)束后,若在設定時間內(nèi)沒有接收到對方的ACK信號,則重新發(fā)送該幀數(shù)據(jù);若接收到對方的ACK信號且此時正處于數(shù)據(jù)發(fā)送狀態(tài)則等待數(shù)據(jù)發(fā)送完畢之后再經(jīng)過ー個設定的時延后向?qū)Ψ交貜虯CK信號;若此刻處于數(shù)據(jù)發(fā)送空閑且設定的時延已經(jīng)超吋,則無需等待,立即發(fā)送ACK信號。
4.根據(jù)權(quán)利要求2所述的基于SPI的全雙エ通信方法,其特征在于所述主器件向從器件發(fā)送數(shù)據(jù)的步驟包括 (1)主器件需發(fā)送數(shù)據(jù)到從器件時,拉低信號線M_CRQ的電平觸發(fā)從器件中斷; (2)從器件收到中斷后首先判斷自身狀態(tài),若從器件此時處于數(shù)據(jù)發(fā)送狀態(tài),則等待當前字節(jié)的數(shù)據(jù)發(fā)送完成;若從器件此時處于空閑狀態(tài)則準備接收數(shù)據(jù),從器件拉低信號線S.REQ電平觸發(fā)主器件中斷; (3)主器件收到從器件信號線S_CRQ的信號后,通過同步時鐘信號線CLK發(fā)送時鐘信號,再通過數(shù)據(jù)線MOSI發(fā)送數(shù)據(jù)給從器件;從器件收到數(shù)據(jù)后拉高信號線S_CRQ的電平,如果ー幀沒有接收完畢,則重復執(zhí)行步驟(2)和(3); (4)從器件接收完ー幀數(shù)據(jù)后,校驗通過后由數(shù)據(jù)線MISO返回ACK信號并拉高S_CRQ信號;主器件接收到ACK信號后拉高M_CRQ的電平。
5.根據(jù)權(quán)利要求2所述的基于SPI的全雙エ通信方法,其特征在于所述從器件向主器件發(fā)送數(shù)據(jù)的步驟包括 (1)從器件需要發(fā)送數(shù)據(jù)給主器件吋,首先判斷自身狀態(tài),如從器件處于空閑狀態(tài)則拉低信號線S_CRQ的電平觸發(fā)主器件中斷,若此時處于數(shù)據(jù)接收狀態(tài)則等待當前字節(jié)數(shù)據(jù)接收完畢后再觸發(fā)主器件中斷; (2)主器件接收到信號線S_CRQ信號后通過同步時鐘信號線CLK發(fā)送時鐘信號,同時從器件通過數(shù)據(jù)線MISO發(fā)送數(shù)據(jù)給主器件;一個字節(jié)數(shù)據(jù)發(fā)送完畢后從器件拉高信號線S_CRQ的電平,一幀數(shù)據(jù)沒有發(fā)送完畢前,重復執(zhí)行步驟(I)和(2); (3)主器件接收完ー幀數(shù)據(jù)后,校驗通過后由數(shù)據(jù)線MOSI返回ACK信號; (4)從器件接收到主器件返回的ACK信號,拉高信號線S_CRQ的電平;然后主器件再拉高信號_M_CRQ的電平。
6.根據(jù)權(quán)利要求3-5所述的基于SPI的全雙エ通信方法,其特征在于當主器件或從器件接收到的校驗值與內(nèi)部計算的校驗值不一致吋,則對應的主器件或從器件不發(fā)送ACK信號,對應的主器件或從器件在設定時間內(nèi)未收到ACK信號則按照權(quán)利要求3-5中所述對應的方法重新發(fā)送對應的數(shù)據(jù)幀。
7.根據(jù)權(quán)利要求4所述的基于SPI的全雙エ通信方法,其特征在于主器件拉低信號線M_CRQ電平后在設定時間內(nèi)沒有接收到從器件信號線S_CRQ的信號,則主器件則按照權(quán)利要求4中所述方法重新發(fā)送本幀數(shù)據(jù)。
8.根據(jù)權(quán)利要求5所述的基于SPI的全雙エ通信方法,其特征在于從器件拉低信號線S_CRQ的電平后,在設定時間內(nèi)沒有收到主器件的CLK時鐘信號,則按照權(quán)利要求5中所述方法重新發(fā)送本幀數(shù)據(jù)。
9.根據(jù)權(quán)利要求6-8所述的基于SPI的全雙エ通信方法,其特征在于所述重新發(fā)送對應的數(shù)據(jù)幀以及重新發(fā)送本幀數(shù)據(jù)的步驟為 結(jié)束本次數(shù)據(jù)的發(fā)送,將本幀數(shù)據(jù)已接收部分刪除,并將主器件與從器件的狀態(tài)重置為初始狀態(tài),準備重新發(fā)送數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的基于SPI的全雙エ通信方法,其特征在于主器件與從器件均設置有用于統(tǒng)計ー幀數(shù)據(jù)發(fā)送錯誤次數(shù)的錯誤計數(shù)器,當錯誤計數(shù)器的數(shù)值大于設定的閾值時,則將該幀數(shù)據(jù)丟棄,同時生成錯誤信息報告。
全文摘要
本發(fā)明涉及一種基于SPI的全雙工通信裝置及其方法,裝置包括主器件與從器件,以及設置在主器件與從器件之間用于主器件與從器件相互通信的數(shù)據(jù)線,同步時鐘信號線,從器件選擇信號線,主器件請求從器件接收數(shù)據(jù)以及從器件請求主器件接收數(shù)據(jù)的信號線。其通信方法包括主器件與從器件同時向?qū)Ψ桨l(fā)送數(shù)據(jù)的步驟、主器件向從器件發(fā)送數(shù)據(jù)的步驟、從器件到主器件發(fā)送數(shù)據(jù)的步驟以及主器件與從器件之間通信所使用的數(shù)據(jù)幀。本發(fā)明實現(xiàn)了全雙工的通信方式,在通信速率不變的情況下,提高了通信效率、提升了系統(tǒng)響應時間,將理想狀態(tài)下通信的數(shù)據(jù)吞吐量提升一倍;并通過數(shù)據(jù)校驗等,保證SPI通信雙方同時發(fā)送數(shù)據(jù)時各自數(shù)據(jù)幀的完整性和準確性。
文檔編號G06F13/38GK102819512SQ20121021593
公開日2012年12月12日 申請日期2012年6月28日 優(yōu)先權(quán)日2012年6月28日
發(fā)明者張裁會, 秦青春 申請人:惠州市德賽西威汽車電子有限公司