Author :tiger-john
WebSite :blog.csdn.net/tigerjb Email :jibo.tiger@gmail.com -------------------------------------------------------------------------- 众所周知嵌入式系统之间采用通信方式交换数据,由于各类CPU均集成了UART部件。所以串行通信是一种最基本的通信手段。因此,我们也对它进行深入的了解 本**针对串口编程时如何设计串口通信协议,以及对RS232接口进行了说明。为下一步进行串口编程进行热身
1. 通信协议设计 在进行通信时,每次需要传送的信息一般超过1字节。为此,通信双方必须约定通信数据的排列格式,即通信协议。通常把一次通信过程的全部内容称为一个“通信帧”。通信协议设计就是帧结构设计。 在一帧内容中,通常包括以下部分。 1> 起始码:由一个或若干个包含特定内容的字节,表示一个通信帧的开始。起始码的内容必须与通信数据内容有明显区别(不能在通信数据里出现与起始码相同的内容) 注: 当通信帧的总长度比较短,信道质量比较高时,为了提高效率,可以不设置起始码。 2> 地址码:在主从结构的多机组网通信系统中,用来指明分机号。 l 当分机总数在255台之内时,地址码为1字节。可以定义一个特殊的地址码作为广播地址,代表所有的分机。 l 在多主多从(无主从)结构的多机组网通信系统中,地址码包含收发双方的地址。 注: 如果是两台设备之间进行点对点的通信,帧结构中就步需要包含地址码。 3> 长度码:在数据长度不固定的通信场合(变长帧),表示本帧数据内容的字节数。当长度肯定不超过255字节时,长度码用1字节表示。 注: 如果每次通信数据内容的长度为双方约定的固定值(定长帧),帧结构中就不需要包含长度码。 4> 数据段:通信的实质内容。 5> 校验码:由于通信信道存在干扰,为了判断接收的内容是否受到干扰,需要加入效验码。 效验码算法可以采用 l 简单的异或校验码。 l 也可以像HEX文件那样采用算术加法校验。 l 采用功能极强的CRC校验。 注:当通信环境非常好时(如室内设备之间的通信),帧结构中就不需要包含校验码。
|