基于串口通信的通信协议的设计方法

文档序号:25297721发布日期:2021-06-04 12:02阅读:216来源:国知局
基于串口通信的通信协议的设计方法

1.本发明属于串口通信技术领域,特别是一种基于串口通信的通信协议的设计方法。


背景技术:

2.串口指的是串行通信接口,串口通信具有传输成本低、抗干扰能力强等优点。串口通信通常用于mcu与mcu,以及mcu与pc之间的数据传输,被广泛应用于计算机通信领域。串口通信的数据传输过程以位(bit)为单位一位一位地进行传输,一个字节的数据在传输过程中被拆分为8位,每一位表示为0或1。
3.一般而言,在串口通信参数的配置方面会选择数据位为8位,即主体数据长度为一个字节,串口通信的数据发送与接收过程面向字节进行。但是面向单个字节的串口通信方式通常满足不了通信双方的性能需求,所以一般会在应用层根据需要将多个字节的数据组装成一个数据帧,面向帧进行数据传输。在理想条件下,不需要采取任何措施也能实现数据可靠传输,但是在实际的数据传输过程中,传输信道并不可靠,可能会导致传输数据的某些位发生翻转,造成数据传输出错。传统的串口通信协议只是进行了简单的数据校验和出错重发,不能满足高效、可靠的数据传输要求,鉴于此,急需一种新的串口通信协议解决该问题。


技术实现要素:

4.本发明的目的在于提供一种基于串口通信的通信协议的设计方法,将多个字节的数据组装成数据帧进行传输,可以充分利用cpu资源,提高串口通信效率,对通信连接过程进行三次握手,对传输数据进行校验、确认应答、否定重传与超时重传,确保数据传输的可靠性。
5.实现本发明目的的技术解决方案为:
6.一种基于串口通信的通信协议的设计方法,具体包括以下步骤:
7.步骤1:初始化串口相关配置;
8.步骤2:通信双方建立连接,完成三次握手动作;
9.步骤3:将串口通信数据封装成数据帧,并添加到发送队列;
10.步骤4:当检测到串口空闲时,将发送队列中的队首元素执行发送;
11.步骤5:数据接收方接收数据,并将数据通过dma搬运到数据缓冲区;
12.步骤6:数据接收方对接收数据进行解析、校验、与确认应答,保证数据可靠传输。
13.本发明与现有技术相比,其显著优点是:
14.1)本发明将多个字节的数据组装成数据帧进行传输,能够充分利用cpu资源,提高串口通信效率;
15.2)本发明对通信连接过程进行三次握手,对传输数据进行校验、确认应答、否定重传与超时重传,确保了数据传输的可靠性;
16.3)本发明利用dma进行数据传输,减少cpu处理时间,提高了串口通信稳定性。
附图说明
17.图1为本发明基于串口通信的通信协议的设计方法的流程示意图。
18.图2为本发明的应用层状态示意图。
19.图3为本发明确认应答与超时重传机制原理图。
具体实施方式
20.下面结合附图及具体实施例对本发明做进一步的介绍。
21.在介绍本发明之前,先介绍本发明所使用的关键术语:
22.dma:直接存储器访问,不需要依赖于cpu的控制权就能将数据从一个地址空间复制到另一地址空间。
23.数据帧:数据在传输过程中的协议数据单元,包括三个基本部分(帧头、帧尾和数据部分)。
24.帧头:数据帧的开始位置,一般由固定字节大小的特殊字符表示。
25.帧尾:数据帧的结束位置,一般由固定字节大小的特殊字符表示(需要区别于帧头)。
26.序列号:表示数据帧在整个数据流中的位置或序号。
27.应答号:表示接收方响应的是来自发送方的哪帧数据,对应于数据帧的序列号。
28.应答码:用于表示数据是否被接收方正确接收。
29.校验码:通常是一帧数据的最后一个字节,由前面的多个字段数据通过某种运算得出,用以检验该数据帧的正确性。
30.本实施例的一种基于串口通信的通信协议的设计方法,具体步骤为:
31.步骤1:初始化串口相关配置,包括波特率、数据位、校验位、停止位等。
32.步骤2:通信双方建立连接,完成三次握手动作。进一步地,三次握手的目的是让通信双方都能明确己方与对方的发送与接收能力正常,具体包括:数据发送方先向数据接收方发送一个连接请求,其内容为一个随机数r,数据接收方收到这个连接请求后,将这个随机数+1,发送给数据发送方,数据发送方检查接收到的数据是否为r+1,若是,继续向数据接收方发送数据r+2,数据接收方检查接收到的数据是否为r+2,若是,通信双方连接建立成功,可以开始传输数据。
33.步骤3:将串口通信数据封装成数据帧,并添加到发送队列。进一步地,数据帧内容为帧头+序列号+通信数据+帧尾+校验码,帧头与帧尾选用固定长度的特殊字符(指的是不常出现在数据帧的通信数据字段的字符)表示,选用特殊字符可以尽量避免在通信数据字段出现这些字符,但却不能完全避免,还是有可能出现数据帧界定出错的现象。当发送数据的通信数据字段出现帧头或帧尾使用的特殊字符时,会采用增添转义字符的方式,在此特殊字符前增添一个自定义的转义字符,而在接收数据的通信数据字段忽略这个转义字符,如果在通信数据字段中使用了这个转义字符,也在这个转义字符前再增添一个转义字符,用两个字节的转义字符表示该字节,而在接收数据的通信数据字段忽略一个转义字符。
34.步骤4:当检测到串口空闲时,将发送队列中的队首元素执行发送。进一步地,数据
发送方发送完一帧数据时,开启一个超时定时器,如果超时定时器定时时间到还没有收到接收方的应答帧,则认为发送数据丢失,需要重发这帧丢失的数据。当重传了三次,仍没有收到接收方的应答帧,则认为传输信道出错,停止发送,上报错误。若在定时时间内收到应答帧,确认接收方正确接收收据,则将发送队列队首元素出队。
35.步骤5:数据接收方接收数据,并将数据通过dma搬运到数据缓冲区。
36.步骤6:数据接收方对接收数据进行处理。具体地,步骤6进一步包括:
37.1)数据解析:根据数据帧中各个字段的字节长度与位置解析出各个字段具体内容。
38.2)数据校验:对数据区内容采用异或校验码进行校验,校验内容包括序列号字段和通信数据字段。
39.3)确认应答:数据接收方对接收数据进行响应,向数据发送方发送一个应答帧,应答帧内容为帧头+应答号+应答码+帧尾+校验码,发送方会根据应答帧中的应答码来判断发送数据是否被正确接收。若确认接收方正确接收了数据,则允许发送方继续发送下一帧数据;若确认接收方数据接收出错,则对这帧数据进行否定重发,若重发第三次时,仍收到来自接收方的出错应答帧,则认为通信线路干扰严重,停止发送,上报错误。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1