管理入口

请输入管理密码。此密码门槛仅用于前端原型,不提供真正的仓库权限保护。

0%
滤波算法与陀螺仪驱动

07|BNO080 UART-RVC 基础:协议、坐标系与可靠性

从 115200 8N1、19 字节帧和校验开始,讲清角度与加速度换算、车体坐标映射、丢帧识别和数据新鲜度。

上一节关注 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° 换算。
  • 模块坐标必须显式映射到车体坐标,不能靠零散改负号修补。
  • 接线和模式脚必须以实际模组原理图为准,协议说明不能替代电气核对。

输入标题、正文关键词或标签,查找文章。