历史上的今天
今天是:2024年09月02日(星期一)
2019年09月02日 | STM32开发 -- UART应用层通信协议分析
2019-09-02 来源:eefocus
拿到一份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 回环测试
上电后可以获取一段数据。
史海拾趣
|
写了VHDL程序后,想功能仿真,verilog中的testbench有很多的书介绍,但是vhdl的testbench却很少很少,原因也有很多吧,主要是VHDL的testbench太麻烦,但是我却学到VHDL了,所以写testbench也只有用vhdl,现在才开始学习,希望与大家讨论学习。 这 ...… 查看全部问答> |
|
我用示波器测得时候总达不到微妙级延时示波器显示为2.5us - 7us范围,请帮分析一下? void Delay_us(int time) //1us { unsigned int val = (PCLK>>1)/1000000 - 1; //1us v_pPWMregs ...… 查看全部问答> |
|
我用的arm是at91rm9200 现在要通过串口向一个GPRS模块(gr64)发送AT命令 先定义了一个字符数组\"AT\\n\" 把它往串口里面写,貌似写是没问题的 按道理GR64应该返回“ATOK” 但是我接下来读串口却总是读出“AT\\n” 也就是说你写的什么,读出 ...… 查看全部问答> |
|
我们知道,PCI设备有三个空间——内存地址空间、IO地址空间和配置空间。由于PCI支持即插即用,所以PCI设备不是占用固定的内存地址空间或I/O地址空间,而是可以由操作系统决定其映射的基址。怎么配置呢?这就是配置空间的作用。 DW | Byte3 | Byte2 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 04:02 编辑 手上只有2章!1、微控制器电路模块制作2、微控制器外围电路模块制作三章--八章欢迎大家补充! … 查看全部问答> |




