# V4 到 V6 协议迁移对比 开发板当前有两个大的版本,老版本V4和新版本V6。老版本支持 CAN/RS485,新版本除了继续支持 CAN/RS485,还加入对 CAN FD。由于需要支持 FDCAN 通信,新版本使用 STM32G4 系列芯片替代原 STM32F4 芯片。 ## 协议差异表 | 功能 | V4 协议定义 | V6 协议定义 | 上位机/主机控制程序从V4迁移到V6 | | --- | --- | --- | --- | | USB CDC串口转 CAN 扩展帧 | `ET + Channel + ExtID(4B) + Len + Data(0~8B) + 0x0D 0x0A` | `ET + Channel + ExtID(4B) + Len + Data(0~8B) + 0x0D 0x0A` | 无需改动 | | USB CDC串口转 CAN 标准帧 | `ST + Channel + 0x00 0x00 + StdID(2B) + Len + Data(0~8B) + 0x0D 0x0A` | `ST + Channel + 0x00 0x00 + StdID(2B) + Len + Data(0~8B) + 0x0D 0x0A` | 无需改动 | | USB CDC串口转 RS485 | `Data + Channel(1B) + Len(1B) + 0x0D 0x0A` | SANPO `RT` 封装帧:`RT + Channel + Len + Data(0~64B) + 0x0D 0x0A` | 需要修改,V6 使用 SANPO `RT` 封装帧,可逐帧指定 RS485 通道 | | SocketCAN(gs_usb) | 不支持 | 支持 Linux SocketCAN,经典 CAN 和 CAN FD 均可通过 `canX` 使用 | SocketCAN 程序不使用 `ST/ET/SF/EF` 帧头,直接使用 `ip`、`cansend`、`candump` 或 `python-can` | | SPI 转 CAN 扩展帧 | 固定 23 字节,`ET + Channel + ExtID(4B) + Len + Data + 0x0D 0x0A + 0x00 0x00 0x00 0x12 + CRC(1B)` | `SHORT`短帧模式,固定 23 字节,`ET + Channel + ExtID(4B) + Len + Data(8B) + 0x00 0x00 0x00 0x00 0x00 0x00 + CRC(1B)` | 需要修改。V6版本协议更简洁 | | SPI 转 CAN 标准帧 | 固定 23 字节,`ST + Channel + 0x00 0x00 + StdID(2B) + Len + Data + 0x0D 0x0A + 0x00 0x00 0x00 0x12 + CRC(1B)` | `SHORT`短帧模式,固定23字节,`ST + Channel + 0x00 0x00 + StdID(2B) + Len + Data(8B) + 0x00 0x00 0x00 0x00 0x00 0x00 + CRC(1B)` | 需要修改。V6版本协议更简洁 | | SPI 转 RS485 | 固定 23 字节。`Data + Channel + Len + CRC(1B)` | `SHORT` 短帧模式,固定 23 字节。SANPO `RT` 封装帧:`RT + Channel + Len + Data(18B) + CRC(1B)` | 需要修改。V6 使用 SANPO `RT` 封装帧 | | CAN 波特率配置 | 可使用旧配置方式或跟随 USB CDC串口波特率同步 | 统一使用 `AT+SETFDCAN=,`;串口工具发送结束符选择 `CRLF`;`arb_baud` 同时作为经典 CAN 波特率和 CAN FD 仲裁段波特率 | 需要修改。需要改为发送 AT+ 指令设置波特率,波特率会持久化存储在固件,下次上电无需重复配置。串口工具发送结束符选择 `CRLF` | | RS485 波特率配置 | 可跟随 USB CDC串口参数同步 | 使用 `AT+SETRS485=,,,`,配置写入固件Flash | 需要修改。需要改为发送 AT+ 指令设置波特率,波特率会持久化存储在固件,下次上电无需重复配置。串口工具发送结束符选择 `CRLF` | | SocketCAN 波特率配置 | 不支持 | 使用 Linux `ip link set canX type can ...` 配置当前运行时 CAN 参数 | 该配置不写入固件Flash;重新上电或重新枚举后应重新配置 | | 小米原厂上位机软件 | 兼容 | 兼容 | 无需改动 | | 宇树原厂上位机软件 | 兼容 | 兼容;使用前通过 `AT+RS485RAW=1` 临时开启 RS485 原始数据透传 | 使用第三方上位机调试或设置参数前先开启透传;完成后发送 `AT+RS485RAW=0` 或重新上电恢复非透传模式。生产通信建议使用 SANPO `RT` 封装帧 | | USB CDC串口转 CAN FD(标准帧/扩展帧) | 不支持 | 支持 | V6版本支持CAN FD 64字节数据段| | SPI 转 CAN FD(标准帧/扩展帧) | 不支持 | 通过 `AT+SPIMODE=LONG` 切换到 `LONG`长帧模式,73字节,支持CAN FD;串口工具发送结束符选择 `CRLF` | V6版本支持CAN FD长帧73字节模式 |