单片机2.4G或蓝牙通信为什么要自定义数据格式(

有必要。

通信就像聊天一样,对方发来一连串没有带空格和标点的英文句子,读起来不但非常费劲,而且还会引起非常多的歧义,因为根本不知道该如何断词和断句。

通信也是一样的,如果对方连续发来好几串数据,没有头码和尾部,你也很难区别哪个命令对应着什么意思,该从哪里开始数起,头码和尾码就是解决这个问题出现的。有头码作用就是判断一包数据的开头,当头码正确的时候,你就可以把下一个在串口缓存寄存器里面的值存起来了,尾码正确时,就代表送接收完成,你可以开始处理这串命令了。

但是这时候又有一个问题,万一发送过程中,受到干扰,本来要发0x01的发成了0x02,那怎么办,机器不就误动作了?头码和尾码只能保证你能正常的断句,但是却无法保证里面的数据是否受到干扰而接收到了错误的数据。所以这时候校验码就成了保证数据正确性的重要手段,常见的校验方式有和校验、异或校验、CRC校验等等,当在数据包里加了一位校验码后,接收数据完成后,用相同的方法进行计算,如果得到的结果与接收到的校验码相同,那就代表数据接收正确,可以对接收到的数据进行解析了,然后执行对应的动作。

以上就是要加头码、校验码的重要性,尾码一般可以不加,可以加入数据长度这个信息,即数据格式为:头码+数据包长度+校验码。

新闻聚焦
热门推荐
返回列表
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。