微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 一种高效的串行通信协议的制定及实现

一种高效的串行通信协议的制定及实现

时间:05-03 来源:电子设计应用 点击:

如果帧头在接收数据缓冲区的不连续字节内(如图2(b)所示),应把从第2个帧头开始的有效数据移到第1个帧头后,如图3所示,使得待处理缓冲区的数据形成连续的一帧数据来继续下一步的处理。

如果帧头分散在两个数据帧中(如图2(c)所示),即PC响应串行中断第1次接收到第1个帧头,第2次响应或者第n次响应串行中断接收到第2个帧头。当接收到第1个帧头后,S赋值为1。当下次响应串行中断时,判断S的值,如果是1,表示第1个帧头已经找到,开始在接收到的帧数据中寻找第2个帧头;如果找到,S赋值为2,并把从第2个帧头开始的有效数据移到第1个帧头后,使待处理缓冲区的数据形成连续的一帧数据来处理。
判断命令字是否为协议中规定的合法命令字。如果是,将根据命令字所对应的长度来判断该帧数据的合法性,因为在制定通信协议时,规定了特定命令字所对应的数据长度,这两点约束条件可以保证接收数据的合法性,从而提高了系统的稳定性。如果命令字和其对应的长度值合法则将S赋值为3,进入下一步的数据处理步骤。

最后,关闭发送定时器,防止处理的过程中有新的接收数据影响处理有效数据的过程。处理完毕,打开发送定时器,根据处理过程中标志位的改变情况继续与控制点进行相应的数据通信。在处理接收数据的步骤中,如果任何一个步骤出现非法数据,则清空ReceBuffer[M]和DealBuffer[M],认为该帧数据传输出错,丢弃该帧数据,并初始化接收变量,重新设定接收超时定时器,接收下一次通信数据。

本文通过完整的串行通信协议的设计,在PC软件发送端始终处于通信状态,能以很快的速度响应系统协议规定的命令字及其数据的发送。同时,在PC软件接收端,采用逐字节处理的方式,通过设定全局变量来确定处理接收数据帧的步骤,细化了处理接收数据的过程,保证了数据高效可靠的传输。本系统已经应用在上海宝钢集团加油站信息管理系统中,实验结果证明,此协议的通信数据准确、通信效率高效可靠、自适应能力强,具有在相关领域推广的价值和意义。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top