一个单片机和ARM cpu之间通信协议的示例

一个单片机和ARM cpu之间通信协议的示例

在进行soc之间进行通信时,往往需要制定通信协议,以下是我制定的一个示例,供大家参考:

  1. 格式:

1)magic
magic头长度为2字节,内容为0x55,0xAA,这是字节出现顺序,不区分little endian还是big endian。
magic头的作用是为了实现在发送和接收同步丢失时,快速找到同步。
2)type
type长度为2字节,内容为具体的message id号。message id采用little endian字节序。
3)length
length为后面的data字段的长度,单位为字节数。length占两个字节。length采用little endian字节序。
4) verify head
verify
head为head的校验码,可以迅速知道head是否正确。 head包括从magic到length整个内容。如果内容不对,那么需要重新搜索magic头,再检查head是否正确,从而可以快速同步。校验head的正确性后,length就可以正常使用,正确定位数据的长度。
verify_ head占2个字节。 verifyhead的算法可以采用简单的16bit异或算法,或者CRC16算法,或者其他算法。为简单方便,目前采用16bit异或算法。
verify
head采用little endian字节序。
5) data
data为任意长度的数据。具体格式根据具体的message id来定。
6) verify_data
verify_data为data段的校验。可以采用各种算法。verify_data根据算法的需求来确定长度。
为简单方便,目前采用8bit异或算法,即这里采用1字节长度。




另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html

另外我的免费的linux各种驱动开发课程如下:
https://edu.51cto.com/course/17138.html

我的新的更多优惠的打包课程链接如下:
https://edu.51cto.com/sd/0a9d4

转载于:https://blog.51cto.com/8906847/2370320

你可能感兴趣的:(一个单片机和ARM cpu之间通信协议的示例)