从 V4 升级到 V6

V6 在保留 CAN 和 RS485 功能的基础上增加了 CAN FD。USB 经典 CAN 报文基本不变,但 SPI、RS485 封装和通信参数设置方式需要调整。

先确认哪些程序需要修改

使用方式

是否需要修改

说明

USB 串口转经典 CAN

通常不需要

V4 和 V6 都使用 ST/ET 报文

Linux SocketCAN 经典 CAN

少量检查

V47 和 V6 当前发布固件都支持;重新确认 canX 与物理接口的对应关系

Linux SocketCAN CAN FD

需要

只有 V6 支持 CAN FD,需要增加仲裁段和数据段参数

USB 串口转 RS485

需要

V6 普通模式使用 RT + Channel + Len + Data + CRLF

SPI 转 CAN / RS485

需要

V6 的 23 字节 SHORT 布局与 V4 不同

SPI 转 CAN FD

需要

先切换 LONG,并固定收发 73 字节

依赖 USB 串口波特率自动配置总线

需要

V6 改为使用 AT 命令独立配置并保存

USB 经典 CAN

V4 和 V6 的发送格式一致:

扩展帧:ET + Channel + ExtID(4B) + Len + Data + 0D 0A
标准帧:ST + Channel + 00 00 + StdID(2B) + Len + Data + 0D 0A

迁移时仍需注意 V6 的回包 Channel 是当前 MCU 的本地编号 1/2,不是整板的 3/4

USB RS485

V4 使用“设备数据在前、Channel 和长度在尾部”的格式。V6 普通模式统一改为:

52 54 Channel Len Data... 0D 0A

RT + Channel + Len + Data + CRLF,并且回包也使用同一布局。

如果要直接运行宇树等厂家的原始串口程序,可临时开启无封装透传:

AT+RS485RAWCH=1
AT+RS485RAW=1

原始透传回包不带 Channel。RAWCH 会保存,RAW 开关在重新上电后自动关闭。

SPI 协议

V4 和 V6 虽然都可使用 23 字节传输,但填充和尾部格式不同,不能直接复用旧报文。

V6 提供两种固定长度:

模式

每次 SPI 传输

用途

SHORT

23 字节

经典 CAN、最多 18 字节的 RS485

LONG

73 字节

经典 CAN、CAN FD、最多 68 字节的 RS485

V6 的最后一个字节都是对前 22 或 72 字节计算的 CRC-8。CAN 和 RS485 的报文头分别沿用 ST/ET/SF/EF/RT,不再使用 V4 的尾部长度布局。详细格式见各 SPI 协议页面。

使用 CAN FD 前先通过 USB 串口发送:

AT+SPIMODE=LONG

设置成功后,主控必须把每次 SPI 传输从 23 字节改为 73 字节。

通信参数

V6 不再根据 USB 串口工具选择的波特率修改外部总线。请明确发送:

AT+SETFDCAN=1000000,5000000
AT+SETRS485=4000000,1,0,8

这些参数会保存到 Flash,重新上电后继续生效。SocketCAN 的波特率仍由 Linux 的 ip link 命令设置,只对当前连接有效。

推荐迁移顺序

  1. 先烧录与开发板平台匹配的 V6 发布固件,并用 AT+VER 确认两颗 MCU 都返回所选版本号。

  2. 查询并设置 CAN/CAN FD、RS485 和 SPI 参数。

  3. 先用 USB 或 SocketCAN 分别验证 4 路 CAN 和 4 路 RS485。

  4. 修改 SPI 固定长度、报文布局和 CRC,再测试 SPI 通信。

  5. 最后恢复周期控制、批量任务和上电自动运行。

更新 V6 时不要执行全片擦除,应保留设备身份、授权、通信配置和批量任务数据区。