接手当前 Arduino UNO R4 WiFi 工程,把它做成一台台架用 CAN 电池遥测终端。
终端持续接收模拟 BMS 的状态报文,在串口和板载 12x8 LED 点阵上显示
电压、SOC 与故障状态,并能识别报文超时、计数跳变和总线异常。
控制板:Arduino UNO R4 WiFi,使用 RA4M1 内置 CAN 控制器
物理层:外接 3.3V 逻辑兼容 CAN 收发器,不直接连接 CAN_H/CAN_L
总线:Classic CAN,500kbit/s,标准 11 位标识符
状态帧 0x180,周期 100ms:电压 mV、电流 mA、SOC 0.1%、滚动计数
告警帧 0x181,周期 500ms:最高温度、最低温度、故障位图
显示:串口输出完整数据,LED 点阵轮播 SOC 与告警图标
报文字节序、缩放系数和故障位定义以项目协议文件为准。
若协议文件缺失,先列出缺口,不得根据抓包猜测字段含义。
完成 CAN 引脚、收发器待机脚、位速率和接收过滤器配置。
只接收 0x180、0x181 和项目明确需要的诊断帧,未知帧只计数不解码。
收到 0x180 后校验 DLC、滚动计数和物理量范围;收到 0x181 后解析
故障位并更新显示。任一状态帧超过 300ms 未更新,立即将数据标记为
STALE,LED 显示离线图标,不能继续展示最后一次数据冒充实时值。
记录接收总数、DLC 错误、计数跳变、超时、CAN error passive、bus-off
和恢复次数。bus-off 后按 RA4M1/Arduino CAN 库允许的流程受控恢复,
连续三次恢复失败则保持离线并等待人工复位,禁止无限重启总线。
- 不得把 UNO R4 的 CAN 控制器当作收发器使用;
- 不得连接真实高压电池包,只能连接隔离的 BMS 仿真台架;
- 没有 CAN 分析仪或抓包时,不得声称 ACK、波形和终端电阻正常;
- 不得硬编码无法追溯到协议文件的字段、单位或故障含义;
- 不得通过关闭错误检测、放宽全部过滤器来掩盖收发问题;
- 不得修改 Wi-Fi 固件、无关外设或项目以外的板级配置。
用 CAN 分析仪回放正常、丢帧、错误 DLC、计数跳变和 bus-off 五组场景。
连续运行 2 小时,统计接收率、最大更新延迟和各类错误次数;断开状态帧
后 300ms 内必须显示离线,恢复报文后 500ms 内恢复正常显示。
交付修改文件、位时序计算、过滤器配置、正常/异常抓包、错误统计和
仍需人工确认的收发器供电、120Ω 终端与共地条件。