一种串行通信方法

文档序号:7892456阅读:268来源:国知局
专利名称:一种串行通信方法
技术领域
本发明涉及一种串行通信方法。
背景技术
串行接口作为一种应用广泛的物理层异步通信接口,在星上各下位机和星务中心计算机中均有使用,如用作星上数据通信接口或者用作调试接口等。在这些应用中,通常将两个串口直接相连进行数据的传输。但是由于实际应用中要双向传送多种类型的大量数据,而串口通信一次只能传输一个字节,因此必须自定义数据链路层及应用层协议,来保证数据的可靠和有效传输。一般采用对所传输的同类型数据进行组帧传输方法。现有串行通信技术中,存在以下问题
(I)当收发双方进行数据传输时,一般都采用固定帧长来进行数据传输,而由于数据包大小变化范围很大,用固定的帧长对数据包进行拆分时,会引起效率问题。(2)现有技术中在传输的数据是二进制数据时,数据帧所负载的数据会不可避免的和帧采用的控制字相冲突,传统技术采用了各种编码方法来解决这一问题,但是这将提高发送方和接收方由于对数据的编译码所造成的复杂度。(3)帧头都采用固定格式字节,为通信过程增加了额外的开销。

发明内容
本发明的技术解决问题是针对现有技术的不足,提供了一种串行通信方法。本发明对串行数据通信的接收方和发送方的数据发送行为和数据帧格式进行协调,提高了串行数据通信的灵活性本发明的技术解决方案是一种串行通信方法,包括以下步骤(I)发送方和接收方通过协调帧约定待传输的数据类型、数据帧长度和数据帧间隔;接收方根据数据类型和数据帧长度确定接收缓冲区;(2)发送方按照约定的数据帧长度对待传输的数据段拆分为多个连续的数据块;并按照帧头、校验域、数据域、帧尾的帧格式将数据块组成数据帧并发送到接收方;其中,帧头由帧类型和数据类型组成,所述帧类型用于标识当前数据帧为数据块第一帧、数据块中间帧或数据块最后帧;所述数据类型标识数据块所含数据的类型;校验域由填充于数据域中的数据块通过校验算法生成;(3)接收方按数据帧间隔对数据帧进行接收,并根据步骤(2)中的帧格式提取数据块并存储,并利用校验域对数据块进行校验后记录校验错误的数据块;(4)当接收方完成对最后一个数据帧的接收后,利用重传请求帧通知发送方重发校验错误的数据块,完成对数据块的传输。进一步在所述步骤(2)中,发送方将待填充到数据域中的数据块按字节进行拆分;将每个拆分获得的字节的高四位和低四位分别构成两个字节后,填充到数据域。
本发明与现有技术相比具有如下优点本发明在传输前,发送方和接收方利用协调帧对待传输的数据类型、数据帧长度和数据帧间隔进行协,从而可以根据待传输的数据内容对数据帧进行设定,更加适应对数据的传输需求,并且针对串行通信的发送方和接收方共用同一信道的情形,发送方和接收发通过预先协调的帧间隔进行数据帧的发送,从而保证了半双工通信无冲突。在传输的过程中,发送方利用帧头对对待传输数据的帧类型和数据类型进行标识,与采用固定格式帧头的方式相比,减少了协议的开销。在数据域,本发明对待填充的数据块进行拆分,通过将一个字节拆分为两个字节的方式避免了每一帧的数据域中数据内容与帧头可能发生冲突从而引起的帧同步错误;接收方在接收到数据帧后对每个数据帧进行校验,但只有整个数据包收完之后才利用重传请求帧要求发送方进行重传,相比每帧重传提高了效率。


图I为本发明流程图;图2为本发明帧格式。
具体实施例方式下面就结合附图对本发明做进一步介绍。如图2所示为本发明帧格式示意图。在帧格式中,帧头、校验域、数据域和帧尾。帧头部分为了减少由于通信协议引入的开销,在帧头部分采用帧类型和数据类型的组合方式,帧类型用于标识当前传输的数据帧为待传输数据块的第一帧、中间帧还是最后帧,在帧类型部分,除数据帧外的三种类型还可以包括用于表示包括协调帧、重传请求帧在内的控制帧的帧类型,;数据类型用于区别数据帧所负载的数据块类型标识,以图2所示长度为8bits的帧头为例,高4位可以为0xF、0xE、0xD、0xC、0xB五个值中的某一个。其中,OxF标识该帧为协调帧;0xE标识该帧为重传请求帧;0xD标识该帧为数据块的第一帧;OxC标识该帧为数据块的中间帧;0xB标识该帧为数据块的最后一帧。低4位最多可区分16种数据块类型的数据。帧开始的一个字节的高校验域部分以图2中4字节长度的校验域为例,可以采用16位CRC校验模式,对数据域部分进行校验,生成多项式为G⑴=X16+X12+X5+l ;产生的16位CRC码,被拆分成4个字节,并保持每个字节的高4位为0,而低4位为源数据的相应数字。数据域部分对所要传输的二进制数据按字节进行拆分,然后将每个拆分获得的字节的高四位和低四位分别构成两个字节后,填充到数据域。本发明采用的拆分和填充方法为将要传输的字节char a拆成两个字节b0和bl :其中b0 = a&OxOf,而bl = (a >>4)&0xf0。然后将b0和bl分别作为两个字节填充到数据域中。数据域长度取决于起始通信时协调帧指定的数据长度。数据块的最后一帧的数据域部分可能不够数据块发送起始时协调帧指定的数据长度,这时可以以OxAA填充不满部分。帧尾部分每一帧都以OxAA结束。无论该帧是协调帧、重传请求帧,还是数据帧 。OxAA为协调帧和重传请求帧提供了界定方法;对于数据帧除了事先约定后的长度外,仍可以OxAA来区分帧。
下面进一步结合图I所示的流程图对本发明的方法进行介绍。(I)发送方和接收方通过协调帧约定待传输的数据类型、数据帧长度和数据帧间隔;接收方根据数据类型和数据帧长度确定接收缓冲区。协调帧用于发送方通知接收方数据块类型,及数据帧长度。协调帧的帧头的高4位按上述的OxF进行填充,低4位填充待传输的数据块类型(取值从0x0 OxF);数据域部分指定接下来的数据块传输帧数据域长度可取值(从0到255,即从0x00 OxFF),这个长度值同样按照对数据域字段的拆分和填充规则将长度值拆分为两字字节后再进行填充。(2)发送方按照约定的数据帧长度对待传输的数据段拆分为多个连续的数据块组成数据帧。对每个数据帧均按照帧头、校验域、数据域、帧尾的帧格式将数据块组成一个完整的数据帧并发送到接收方。其中,帧头按照上述对数据帧的填充规则进行填充,所述帧类型用于标识当前数据帧为数据块第一帧、数据块中间帧或数据块最后帧;所述数据类型标识数据块所含数据的类型;校验域由填充于数据域中的数据块通过校验算法生成。(3)接收方按数据帧间隔对数据帧进行接收,并根据步骤(2)中的帧格式提取数据块并存储,并利用校验域对数据块进行校验后记录校验错误的数据块;(4)当接收方完成对最后一个数据帧的接收后,利用重传请求帧通知发送方重发校验错误的数据块,完成对数据块的传输。在接收方接收完每个数据帧内容时会对该帧进行校验(利用校验域中的CRC值),如果错误接收方会做一个标识,等到整个数据块的数据传输完成后,接收方将数据块中需要重传的数据帧标号(接收方和发送方均会维护两个数据块缓冲区,这个标号在传输帧中没有给出,但是对发送实体和接收实体均有自己的计数器来实现)加入重传请求帧的数据域中,传给发送方,其字节拆分方式仍同上所述。如没有数据帧需要重传,仍要发送此帧,但是数据域没有任何值。 本发明未详细说明部分属本领域技术人员公知常识。
权利要求
1.一种串行通信方法,其特征在于包括以下步骤 (1)发送方和接收方通过协调帧约定待传输的数据类型、数据帧长度和数据帧间隔;接收方根据数据类型和数据帧长度确定接收缓冲区; (2)发送方按照约定的数据帧长度对待传输的数据段拆分为多个连续的数据块;并按照帧头、校验域、数据域、帧尾的帧格式将数据块组成数据帧并发送到接收方;其中,帧头由帧类型和数据类型组成,所述帧类型用于标识当前数据帧为数据块第一帧、数据块中间帧或数据块最后帧;所述数据类型标识数据块所含数据的类型;校验域由填充于数据域中的数据块通过校验算法生成; (3)接收方按数据帧间隔对数据帧进行接收,并根据步骤(2)中的帧格式提取数据块并存储,并利用校验域对数据块进行校验后记录校验错误的数据块; (4)当接收方完成对最后一个数据帧的接收后,利用重传请求帧通知发送方重发校验错误的数据块,完成对数据块的传输。
2.如权利要求I所述的一种串行通信方法,其特征在于在所述步骤(2)中,发送方将待填充到数据域中的数据块按字节进行拆分;将每个拆分获得的字节的高四位和低四位分别构成两个字节后,填充到数据域。
全文摘要
本发明公开了一种串行通信方法,包括发送方向接收发发送协调帧的步骤;发送方按照协调帧的约定组帧并发送的步骤;接收方按协调帧的约定接收数据帧并进行校验记录错误数据块的步骤;接收方向发送方发送重传请求帧的步骤。采用本发明对串行数据通信的接收方和发送方的数据发送行为和数据帧格式进行协调,提高了串行数据通信的灵活性和通信效率。
文档编号H04L1/16GK102647252SQ20121008429
公开日2012年8月22日 申请日期2012年3月26日 优先权日2012年3月26日
发明者刘思远, 申泽庶, 谢松 申请人:航天东方红卫星有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1