阅读( 80 ) 我要纠错


2.1协议结构如下:


帧头 

0xA5

(8byte)

包头数据

(16byte)

数据域

(Nbyte)

包校验

(2byte)

帧尾 

0x5A (1byte)


以下为协议中各项数据的说明:

1.   帧头由 8 个字节的 0xA5 组成,帧尾由一个字节的 0x5A 组成。帧头采用 8 个帧头,是为了防止 0xA5 丢失导致数据接收错误。在接收数据时, 只要接收到一个 0xA5 就可认为接收到了帧头, 然后等待下一个不是 0xA5 的数据, 该数据为该帧的第一个有效数据。

2、包头数据包含本包数据的一些属性, 其定义参考包头数据格式定义。

3、数据域为用户协议层数据, 参考数据域定义。

4、包校验为包头数据和数据域的 CRC16 校验值, CRC16 校验算法参考附录。


2.2  协议的分层

协议采用分层模式,分为协议层和物理传输层两层,其中数据域属于协议层数据。物理传输层

又分为 PHY0 和 PHY1 两层,其中 PHY1 层数据结构如下:


包头数据(16byte)

数据域(Nbyte)

包校验(2byte)

PHY1 层实现数据域的封包操作,它为数据域增加包头,并计算包数据的校验值。 


PHY0 层数据结构为:

帧头(8byte)

PHY1 层数据(N +

18byte)

帧尾(1byte)


PHY0 层为 PHY1 层数据增加帧头和帧尾,并对 PHY1 层数据进行转义(参考字符转义)。



数据流向示意图:

数据流向.jpg


在发送端,协议层数据先提交到 PHY1 层,对数据域进行封包操作。然后 PHY1 层数据提交到 PHY0 层,对 PHY1 层数据进行字符转义并增加帧头帧尾,最后数据经过物理底层发送出去。

在接收端,控制器将物理底层接收到的数据发送到 PHY0 层, PHY0 层去除帧头帧尾,并对数 据进行反转义,然后将数据提交到 PHY1 层。 PHY1 层将判断包数据的正确性,并去除包头和包校 验值,向协议层提交有用数据。


×