STM32开发 -- UART应用层通信协议分析

拿到一份UART的通信协议,上手来操作之前先做一下分析。

一、帧格式说明

先看一下它的帧格式说明:

1、 帧头标志Head
不论是命令帧还是响应帧,帧头标志都是0x92。
2、 协议版本
协议版本号(4bit),目前值为1
加密方式(4bit),0表示采取“数据不加密+校验和”方式。
所以,当前此字段完整值为0x10
3、 控制字段中的C/R比特
用于指示该帧是命令帧还是应答帧,1表示命令帧,0表示应答帧。
4、 控制字段中的T/F比特
用于指示传输数据类型,1表示透明的非结构化数据,0表示正常的数据帧。
5、 虚拟通道
虚拟地址(4bit):代表数据帧的源地址标识。目前为保留位,取值为0。
通道序号(4bit):0表示虚通道0,1表示虚通道1,其他值暂不使用。
6、 帧序号
帧的编号一般由发送节点填充,按递增加一的原则(溢出后归零重新开始)使用,不能重复,以保证“虚拟通道+帧序号”在某个相对时间段内是唯一的。但目的节点在应答主控节点的命令时仍使用源节点的帧序号,以实现命令与应答的一一对应。节点在主动上报时,帧序号由节点自己填充,但仍坚持递增加一的原则。
7、 用户数据长度指示
指“用户数据部分”的总长度。一帧的总长度不超过64K。
8、 用户数据帧
根据命令的不同而不同。
命令字由两个字节构成,分别称为CmdHi和CmdLo,高8比特在前,低8比特在后。
9、 校验和
指从帧头开始到校验和之前所有字节的累加和,发送方在发送时,通过计算填充帧的校验和部分;接收方在接收到一个帧时,应通过计算并与校验和部分进行比较,以确保接收到的帧是完整正确的。
10、用户状态字定义
应答状态字说明 :0 成功
1 没有此命令
2 帧长度错误
3 参数错误
4 设置失败
5 忙,请等待

二、数据分析

串口回环测试,就不做介绍了。
参看:日常生活小技巧 – UART 回环测试

上电后可以获取一段数据。
这里写图片描述
其中计算校验和,用win10自带计算器太难受了。
推荐:
科学计算器
校验和计算工具

猜你喜欢

转载自blog.csdn.net/qq_29350001/article/details/79456410