專利名稱:一種串行通信方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種串行通信方法。
背景技術(shù):
串行接口作為一種應(yīng)用廣泛的物理層異步通信接口,在星上各下位機和星務(wù)中心計算機中均有使用,如用作星上數(shù)據(jù)通信接口或者用作調(diào)試接口等。在這些應(yīng)用中,通常將兩個串口直接相連進(jìn)行數(shù)據(jù)的傳輸。但是由于實際應(yīng)用中要雙向傳送多種類型的大量數(shù)據(jù),而串口通信一次只能傳輸一個字節(jié),因此必須自定義數(shù)據(jù)鏈路層及應(yīng)用層協(xié)議,來保證數(shù)據(jù)的可靠和有效傳輸。一般采用對所傳輸?shù)耐愋蛿?shù)據(jù)進(jìn)行組幀傳輸方法?,F(xiàn)有串行通信技術(shù)中,存在以下問題
(I)當(dāng)收發(fā)雙方進(jìn)行數(shù)據(jù)傳輸時,一般都采用固定幀長來進(jìn)行數(shù)據(jù)傳輸,而由于數(shù)據(jù)包大小變化范圍很大,用固定的幀長對數(shù)據(jù)包進(jìn)行拆分時,會引起效率問題。(2)現(xiàn)有技術(shù)中在傳輸?shù)臄?shù)據(jù)是二進(jìn)制數(shù)據(jù)時,數(shù)據(jù)幀所負(fù)載的數(shù)據(jù)會不可避免的和幀采用的控制字相沖突,傳統(tǒng)技術(shù)采用了各種編碼方法來解決這一問題,但是這將提高發(fā)送方和接收方由于對數(shù)據(jù)的編譯碼所造成的復(fù)雜度。(3)幀頭都采用固定格式字節(jié),為通信過程增加了額外的開銷。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是針對現(xiàn)有技術(shù)的不足,提供了一種串行通信方法。本發(fā)明對串行數(shù)據(jù)通信的接收方和發(fā)送方的數(shù)據(jù)發(fā)送行為和數(shù)據(jù)幀格式進(jìn)行協(xié)調(diào),提高了串行數(shù)據(jù)通信的靈活性本發(fā)明的技術(shù)解決方案是一種串行通信方法,包括以下步驟(I)發(fā)送方和接收方通過協(xié)調(diào)幀約定待傳輸?shù)臄?shù)據(jù)類型、數(shù)據(jù)幀長度和數(shù)據(jù)幀間隔;接收方根據(jù)數(shù)據(jù)類型和數(shù)據(jù)幀長度確定接收緩沖區(qū);(2)發(fā)送方按照約定的數(shù)據(jù)幀長度對待傳輸?shù)臄?shù)據(jù)段拆分為多個連續(xù)的數(shù)據(jù)塊;并按照幀頭、校驗域、數(shù)據(jù)域、幀尾的幀格式將數(shù)據(jù)塊組成數(shù)據(jù)幀并發(fā)送到接收方;其中,幀頭由幀類型和數(shù)據(jù)類型組成,所述幀類型用于標(biāo)識當(dāng)前數(shù)據(jù)幀為數(shù)據(jù)塊第一幀、數(shù)據(jù)塊中間幀或數(shù)據(jù)塊最后幀;所述數(shù)據(jù)類型標(biāo)識數(shù)據(jù)塊所含數(shù)據(jù)的類型;校驗域由填充于數(shù)據(jù)域中的數(shù)據(jù)塊通過校驗算法生成;(3)接收方按數(shù)據(jù)幀間隔對數(shù)據(jù)幀進(jìn)行接收,并根據(jù)步驟(2)中的幀格式提取數(shù)據(jù)塊并存儲,并利用校驗域?qū)?shù)據(jù)塊進(jìn)行校驗后記錄校驗錯誤的數(shù)據(jù)塊;(4)當(dāng)接收方完成對最后一個數(shù)據(jù)幀的接收后,利用重傳請求幀通知發(fā)送方重發(fā)校驗錯誤的數(shù)據(jù)塊,完成對數(shù)據(jù)塊的傳輸。進(jìn)一步在所述步驟(2)中,發(fā)送方將待填充到數(shù)據(jù)域中的數(shù)據(jù)塊按字節(jié)進(jìn)行拆分;將每個拆分獲得的字節(jié)的高四位和低四位分別構(gòu)成兩個字節(jié)后,填充到數(shù)據(jù)域。
本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點本發(fā)明在傳輸前,發(fā)送方和接收方利用協(xié)調(diào)幀對待傳輸?shù)臄?shù)據(jù)類型、數(shù)據(jù)幀長度和數(shù)據(jù)幀間隔進(jìn)行協(xié),從而可以根據(jù)待傳輸?shù)臄?shù)據(jù)內(nèi)容對數(shù)據(jù)幀進(jìn)行設(shè)定,更加適應(yīng)對數(shù)據(jù)的傳輸需求,并且針對串行通信的發(fā)送方和接收方共用同一信道的情形,發(fā)送方和接收發(fā)通過預(yù)先協(xié)調(diào)的幀間隔進(jìn)行數(shù)據(jù)幀的發(fā)送,從而保證了半雙工通信無沖突。在傳輸?shù)倪^程中,發(fā)送方利用幀頭對對待傳輸數(shù)據(jù)的幀類型和數(shù)據(jù)類型進(jìn)行標(biāo)識,與采用固定格式幀頭的方式相比,減少了協(xié)議的開銷。在數(shù)據(jù)域,本發(fā)明對待填充的數(shù)據(jù)塊進(jìn)行拆分,通過將一個字節(jié)拆分為兩個字節(jié)的方式避免了每一幀的數(shù)據(jù)域中數(shù)據(jù)內(nèi)容與幀頭可能發(fā)生沖突從而引起的幀同步錯誤;接收方在接收到數(shù)據(jù)幀后對每個數(shù)據(jù)幀進(jìn)行校驗,但只有整個數(shù)據(jù)包收完之后才利用重傳請求幀要求發(fā)送方進(jìn)行重傳,相比每幀重傳提高了效率。
圖I為本發(fā)明流程圖;圖2為本發(fā)明幀格式。
具體實施例方式下面就結(jié)合附圖對本發(fā)明做進(jìn)一步介紹。如圖2所示為本發(fā)明幀格式示意圖。在幀格式中,幀頭、校驗域、數(shù)據(jù)域和幀尾。幀頭部分為了減少由于通信協(xié)議引入的開銷,在幀頭部分采用幀類型和數(shù)據(jù)類型的組合方式,幀類型用于標(biāo)識當(dāng)前傳輸?shù)臄?shù)據(jù)幀為待傳輸數(shù)據(jù)塊的第一幀、中間幀還是最后幀,在幀類型部分,除數(shù)據(jù)幀外的三種類型還可以包括用于表示包括協(xié)調(diào)幀、重傳請求幀在內(nèi)的控制幀的幀類型,;數(shù)據(jù)類型用于區(qū)別數(shù)據(jù)幀所負(fù)載的數(shù)據(jù)塊類型標(biāo)識,以圖2所示長度為8bits的幀頭為例,高4位可以為0xF、0xE、0xD、0xC、0xB五個值中的某一個。其中,OxF標(biāo)識該幀為協(xié)調(diào)幀;0xE標(biāo)識該幀為重傳請求幀;0xD標(biāo)識該幀為數(shù)據(jù)塊的第一幀;OxC標(biāo)識該幀為數(shù)據(jù)塊的中間幀;0xB標(biāo)識該幀為數(shù)據(jù)塊的最后一幀。低4位最多可區(qū)分16種數(shù)據(jù)塊類型的數(shù)據(jù)。幀開始的一個字節(jié)的高校驗域部分以圖2中4字節(jié)長度的校驗域為例,可以采用16位CRC校驗?zāi)J剑瑢?shù)據(jù)域部分進(jìn)行校驗,生成多項式為G⑴=X16+X12+X5+l ;產(chǎn)生的16位CRC碼,被拆分成4個字節(jié),并保持每個字節(jié)的高4位為0,而低4位為源數(shù)據(jù)的相應(yīng)數(shù)字。數(shù)據(jù)域部分對所要傳輸?shù)亩M(jìn)制數(shù)據(jù)按字節(jié)進(jìn)行拆分,然后將每個拆分獲得的字節(jié)的高四位和低四位分別構(gòu)成兩個字節(jié)后,填充到數(shù)據(jù)域。本發(fā)明采用的拆分和填充方法為將要傳輸?shù)淖止?jié)char a拆成兩個字節(jié)b0和bl :其中b0 = a&OxOf,而bl = (a >>4)&0xf0。然后將b0和bl分別作為兩個字節(jié)填充到數(shù)據(jù)域中。數(shù)據(jù)域長度取決于起始通信時協(xié)調(diào)幀指定的數(shù)據(jù)長度。數(shù)據(jù)塊的最后一幀的數(shù)據(jù)域部分可能不夠數(shù)據(jù)塊發(fā)送起始時協(xié)調(diào)幀指定的數(shù)據(jù)長度,這時可以以O(shè)xAA填充不滿部分。幀尾部分每一幀都以O(shè)xAA結(jié)束。無論該幀是協(xié)調(diào)幀、重傳請求幀,還是數(shù)據(jù)幀 。OxAA為協(xié)調(diào)幀和重傳請求幀提供了界定方法;對于數(shù)據(jù)幀除了事先約定后的長度外,仍可以O(shè)xAA來區(qū)分幀。
下面進(jìn)一步結(jié)合圖I所示的流程圖對本發(fā)明的方法進(jìn)行介紹。(I)發(fā)送方和接收方通過協(xié)調(diào)幀約定待傳輸?shù)臄?shù)據(jù)類型、數(shù)據(jù)幀長度和數(shù)據(jù)幀間隔;接收方根據(jù)數(shù)據(jù)類型和數(shù)據(jù)幀長度確定接收緩沖區(qū)。協(xié)調(diào)幀用于發(fā)送方通知接收方數(shù)據(jù)塊類型,及數(shù)據(jù)幀長度。協(xié)調(diào)幀的幀頭的高4位按上述的OxF進(jìn)行填充,低4位填充待傳輸?shù)臄?shù)據(jù)塊類型(取值從0x0 OxF);數(shù)據(jù)域部分指定接下來的數(shù)據(jù)塊傳輸幀數(shù)據(jù)域長度可取值(從0到255,即從0x00 OxFF),這個長度值同樣按照對數(shù)據(jù)域字段的拆分和填充規(guī)則將長度值拆分為兩字字節(jié)后再進(jìn)行填充。(2)發(fā)送方按照約定的數(shù)據(jù)幀長度對待傳輸?shù)臄?shù)據(jù)段拆分為多個連續(xù)的數(shù)據(jù)塊組成數(shù)據(jù)幀。對每個數(shù)據(jù)幀均按照幀頭、校驗域、數(shù)據(jù)域、幀尾的幀格式將數(shù)據(jù)塊組成一個完整的數(shù)據(jù)幀并發(fā)送到接收方。其中,幀頭按照上述對數(shù)據(jù)幀的填充規(guī)則進(jìn)行填充,所述幀類型用于標(biāo)識當(dāng)前數(shù)據(jù)幀為數(shù)據(jù)塊第一幀、數(shù)據(jù)塊中間幀或數(shù)據(jù)塊最后幀;所述數(shù)據(jù)類型標(biāo)識數(shù)據(jù)塊所含數(shù)據(jù)的類型;校驗域由填充于數(shù)據(jù)域中的數(shù)據(jù)塊通過校驗算法生成。(3)接收方按數(shù)據(jù)幀間隔對數(shù)據(jù)幀進(jìn)行接收,并根據(jù)步驟(2)中的幀格式提取數(shù)據(jù)塊并存儲,并利用校驗域?qū)?shù)據(jù)塊進(jìn)行校驗后記錄校驗錯誤的數(shù)據(jù)塊;(4)當(dāng)接收方完成對最后一個數(shù)據(jù)幀的接收后,利用重傳請求幀通知發(fā)送方重發(fā)校驗錯誤的數(shù)據(jù)塊,完成對數(shù)據(jù)塊的傳輸。在接收方接收完每個數(shù)據(jù)幀內(nèi)容時會對該幀進(jìn)行校驗(利用校驗域中的CRC值),如果錯誤接收方會做一個標(biāo)識,等到整個數(shù)據(jù)塊的數(shù)據(jù)傳輸完成后,接收方將數(shù)據(jù)塊中需要重傳的數(shù)據(jù)幀標(biāo)號(接收方和發(fā)送方均會維護(hù)兩個數(shù)據(jù)塊緩沖區(qū),這個標(biāo)號在傳輸幀中沒有給出,但是對發(fā)送實體和接收實體均有自己的計數(shù)器來實現(xiàn))加入重傳請求幀的數(shù)據(jù)域中,傳給發(fā)送方,其字節(jié)拆分方式仍同上所述。如沒有數(shù)據(jù)幀需要重傳,仍要發(fā)送此幀,但是數(shù)據(jù)域沒有任何值。 本發(fā)明未詳細(xì)說明部分屬本領(lǐng)域技術(shù)人員公知常識。
權(quán)利要求
1.一種串行通信方法,其特征在于包括以下步驟 (1)發(fā)送方和接收方通過協(xié)調(diào)幀約定待傳輸?shù)臄?shù)據(jù)類型、數(shù)據(jù)幀長度和數(shù)據(jù)幀間隔;接收方根據(jù)數(shù)據(jù)類型和數(shù)據(jù)幀長度確定接收緩沖區(qū); (2)發(fā)送方按照約定的數(shù)據(jù)幀長度對待傳輸?shù)臄?shù)據(jù)段拆分為多個連續(xù)的數(shù)據(jù)塊;并按照幀頭、校驗域、數(shù)據(jù)域、幀尾的幀格式將數(shù)據(jù)塊組成數(shù)據(jù)幀并發(fā)送到接收方;其中,幀頭由幀類型和數(shù)據(jù)類型組成,所述幀類型用于標(biāo)識當(dāng)前數(shù)據(jù)幀為數(shù)據(jù)塊第一幀、數(shù)據(jù)塊中間幀或數(shù)據(jù)塊最后幀;所述數(shù)據(jù)類型標(biāo)識數(shù)據(jù)塊所含數(shù)據(jù)的類型;校驗域由填充于數(shù)據(jù)域中的數(shù)據(jù)塊通過校驗算法生成; (3)接收方按數(shù)據(jù)幀間隔對數(shù)據(jù)幀進(jìn)行接收,并根據(jù)步驟(2)中的幀格式提取數(shù)據(jù)塊并存儲,并利用校驗域?qū)?shù)據(jù)塊進(jìn)行校驗后記錄校驗錯誤的數(shù)據(jù)塊; (4)當(dāng)接收方完成對最后一個數(shù)據(jù)幀的接收后,利用重傳請求幀通知發(fā)送方重發(fā)校驗錯誤的數(shù)據(jù)塊,完成對數(shù)據(jù)塊的傳輸。
2.如權(quán)利要求I所述的一種串行通信方法,其特征在于在所述步驟(2)中,發(fā)送方將待填充到數(shù)據(jù)域中的數(shù)據(jù)塊按字節(jié)進(jìn)行拆分;將每個拆分獲得的字節(jié)的高四位和低四位分別構(gòu)成兩個字節(jié)后,填充到數(shù)據(jù)域。
全文摘要
本發(fā)明公開了一種串行通信方法,包括發(fā)送方向接收發(fā)發(fā)送協(xié)調(diào)幀的步驟;發(fā)送方按照協(xié)調(diào)幀的約定組幀并發(fā)送的步驟;接收方按協(xié)調(diào)幀的約定接收數(shù)據(jù)幀并進(jìn)行校驗記錄錯誤數(shù)據(jù)塊的步驟;接收方向發(fā)送方發(fā)送重傳請求幀的步驟。采用本發(fā)明對串行數(shù)據(jù)通信的接收方和發(fā)送方的數(shù)據(jù)發(fā)送行為和數(shù)據(jù)幀格式進(jìn)行協(xié)調(diào),提高了串行數(shù)據(jù)通信的靈活性和通信效率。
文檔編號H04L1/16GK102647252SQ20121008429
公開日2012年8月22日 申請日期2012年3月26日 優(yōu)先權(quán)日2012年3月26日
發(fā)明者劉思遠(yuǎn), 申澤庶, 謝松 申請人:航天東方紅衛(wèi)星有限公司