上一节关注 DMA 和代码实现,本节回到 UART-RVC 协议本身。理解帧结构、单位和坐标系之后,才能判断驱动解析出的数值是否可信。
UART-RVC 用在什么场景
UART-RVC 提供固定格式的旋转与线性加速度数据。与完整 SHTP 相比,它解析简单,适合只需要 Yaw、Pitch、Roll 和线性加速度的控制器。
代价是功能和配置能力更少。若需要动态启停多种传感器报告、精度状态或复杂元数据,应评估 SHTP,而不是继续扩展固定 RVC 帧。
接口与模式选择
手册的 UART-RVC 连接图展示 NRST、HOST_TX/RX、BOOTN、PS0、PS1 等信号。PS0/PS1 用于协议模式选择,模式脚必须在器件规定的采样时机稳定。
具体上拉、下拉、复位驱动和供电去耦应按实际 BNO080 模组原理图实施。裸芯片参考图不能自动等价于某块商品模块。
不同商品模组可能已经集成电平转换、上拉电阻或复位电路。接线前必须核对手中模组原理图,不能把裸芯片参考连接直接套用到所有板卡。
串口参数
手册第 20 页说明 UART-RVC 使用:
- 115200 bit/s;
- 8 数据位;
- 1 停止位;
- 无奇偶校验;
- 空闲线为高电平;
- 低位先发送。
这通常写作 115200 8N1。接收端还应检查串口错误和数据新鲜度,参数正确不等于每一帧都可靠到达。
19 字节数据帧
每帧固定 19 字节:
0xAA 0xAA | Index| Yaw LSB MSB | Pitch LSB MSB | Roll LSB MSB| X accel LSB MSB | Y accel LSB MSB | Z accel LSB MSB| 0x00 0x00 0x00 | Checksum帧头用于同步;Index 是 0—255 循环递增的 8 位计数,可用于发现漏帧;保留字节当前为零,不应被应用层擅自复用。
解析器应先找到帧头,再确认缓冲区至少还有完整 19 字节,最后校验。若校验失败,不能更新姿态输出。
校验和
校验字节由此前各字节相加后取低 8 位得到。实现时使用无符号 8 位累加即可自然保留低 8 位。
校验和能发现多数传输错误,但不是加密或强完整性保护。车辆控制还需要帧序号连续性、时间戳和范围检查。
Yaw、Pitch、Roll 换算
三轴角度均为小端有符号 16 位,每个计数代表 0.01°:
int16_t raw = (int16_t)((uint16_t)msb << 8 | lsb);float degrees = raw * 0.01f;手册给出 Yaw 和 Roll 约为 ±180°,Pitch 约为 ±90°。应用应使用文档定义的轴向和旋转顺序,不能只凭变量名理解方向。
线性加速度
帧内还有 X/Y/Z 线性加速度,采用小端有符号 16 位并按手册单位换算。线性加速度通常表示融合后去除重力影响的结果,但实际使用仍要核对报告定义和模块模式。
加速度进入控制前应检查饱和、尖峰和数据新鲜度。BNO080 工程示例没有消费这六个字节,不代表协议中没有该数据。
坐标系与安装方向
模块坐标系、车辆坐标系和控制器正方向必须形成明确映射。常见错误是数值大小正常,但转动车身时控制器得到相反符号。
建议执行三次单轴动作:保持另外两轴近似不动,分别绕车体 X、Y、Z 正方向旋转,记录模块报告变化,再建立轴交换和符号矩阵。
若模块不是正向安装,应在应用层集中进行坐标变换,不要在多个控制器里分散修改正负号。
丢帧、重启与新鲜度
Index 每帧递增。相邻帧序号不连续可以提示丢帧,但 255 回到 0 是正常回绕。
主控还应记录接收时间。超过允许时间没有新帧时,姿态数据必须标记失效;具体超时阈值应根据实际输出率和安全要求测量确定,本文不臆造固定数值。
模块复位后帧序号和姿态状态可能重新开始。控制器应识别重启,重新建立稳定数据窗口后再恢复闭环。
接入实际模组前还要确认什么
| 检查项 | 协议规定 | 接入要求 |
|---|---|---|
| 串口 | UART-RVC 使用 115200 8N1 | 同时处理串口错误和接收超时 |
| 帧结构 | 固定 19 字节并带校验 | 先验证长度与校验,再更新姿态数据 |
| 角度 | 小端 int16,分辨率为 0.01° | 建立模块坐标到车体坐标的集中映射 |
| 模式与接线 | PS0/PS1、复位和串口信号由器件定义 | 以实际商品模组原理图核对电平与外围电路 |
| 数据新鲜度 | 帧中提供递增 Index | 结合序号、时间戳和范围检查判断数据有效性 |
本篇总结
- UART-RVC 是固定 115200 8N1、固定 19 字节的轻量姿态输出协议。
- 帧头、长度、校验和、序号与时间戳应共同参与可靠性判断。
- 角度是小端有符号 16 位,按
0.01°换算。 - 模块坐标必须显式映射到车体坐标,不能靠零散改负号修补。
- 接线和模式脚必须以实际模组原理图为准,协议说明不能替代电气核对。