从 V4 升级到 V6
V6 在保留 CAN 和 RS485 功能的基础上增加了 CAN FD。USB 经典 CAN 报文基本不变,但 SPI、RS485 封装和通信参数设置方式需要调整。
先确认哪些程序需要修改
使用方式 |
是否需要修改 |
说明 |
|---|---|---|
USB 串口转经典 CAN |
通常不需要 |
V4 和 V6 都使用 |
Linux SocketCAN 经典 CAN |
少量检查 |
V47 和 V6 当前发布固件都支持;重新确认 |
Linux SocketCAN CAN FD |
需要 |
只有 V6 支持 CAN FD,需要增加仲裁段和数据段参数 |
USB 串口转 RS485 |
需要 |
V6 普通模式使用 |
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 传输 |
用途 |
|---|---|---|
|
23 字节 |
经典 CAN、最多 18 字节的 RS485 |
|
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 命令设置,只对当前连接有效。
推荐迁移顺序
先烧录与开发板平台匹配的 V6 发布固件,并用
AT+VER确认两颗 MCU 都返回所选版本号。查询并设置 CAN/CAN FD、RS485 和 SPI 参数。
先用 USB 或 SocketCAN 分别验证 4 路 CAN 和 4 路 RS485。
修改 SPI 固定长度、报文布局和 CRC,再测试 SPI 通信。
最后恢复周期控制、批量任务和上电自动运行。
更新 V6 时不要执行全片擦除,应保留设备身份、授权、通信配置和批量任务数据区。