# 版本沿革与兼容性 本文面向 SANPO SPINE 客户,汇总目前能够从正式固件、发布清单、迁移说明和公开仓库记录中核对的主要版本变化。 ## 当前发布的版本 | 产品代际 | MCU 平台 | 当前发布固件 | 适用说明 | | --- | --- | --- | --- | | V8 | STM32G0B1RCT6,外部 HSE 晶振 | V83 | V8 硬件;原生透传接口和 V6 兼容协议模式 | | V6 | STM32G0A 系列 | V68 | 使用 V6 协议的 G0A 硬件,不能与 G473 固件混刷 | | V6 | STM32G473 | V67 | V6 FDCAN 升级版;CAN FD、经典 CAN 和 RS485 | | V4 | STM32F407 | V47 | V4 标准版、隔离版;经典 CAN 和 RS485 | 一块完整的 SPINE 开发板包含两颗 MCU。正常升级时应分别烧录并验证两颗 MCU,使用管理串口发送 `AT+VER`,确认两颗芯片都返回预期版本。 ## 三代产品的主要区别 | 能力 | V8 | V6 | V4 | | --- | --- | --- | --- | | 经典 CAN | 支持 | 支持 | 支持 | | CAN FD | 支持 | 新增 | 不支持 | | Linux SocketCAN | 支持经典 CAN/CAN FD | 支持经典 CAN/CAN FD | V47 支持经典 CAN | | USB 管理口协议 | 保留 V6 兼容协议模式 | 使用 `ST/ET/SF/EF/RT` 统一封装 | 支持 V4 报文 | | USB RS485 | 每路独立 USB 串口直接透传,同时保留 `RT` 协议模式 | `RT` 封装,可切换 RAW 通道 | V4 协议封装 | | SPI | 保留 V6 SPI 协议 | `SHORT/LONG` 固定长度、CRC-8 | 支持 V4 固定布局 | | CAN 原生透传 | Linux `gs_usb`/SocketCAN;Windows 10/11 使用系统 WinUSB,可配合 SANPO CANgaroo | Linux `gs_usb` | Linux `gs_usb` | | 离线批量指令 | 保留 | 保留并扩展 | 支持 | | 客户二次开发 | STM32G0B1 框架和直接开发样例 | 按具体 V6 MCU 选择框架 | STM32F407 框架 | ## 版本演进记录 ### V8:原生透传与协议模式并存 V8 使用 STM32G0B1RCT6,并以“直接使用”和“兼容既有系统”两条路径组织接口: - CAN/CAN FD 在 Linux 中直接显示为 SocketCAN 接口;Windows 10/11 使用系统 WinUSB,可通过 SANPO CANgaroo 或用户程序收发; - 四路 RS485 分别显示为独立 USB 串口,原始字节直接透传,不再需要先选择 SANPO Channel; - 管理口和 SPI 继续支持 V6 的 `ST/ET/SF/EF/RT` 报文,SANPO Studio、CyberGear、GM8010、通信配置和离线批量任务可以继续使用; - 原生透传模式和协议模式可以按上位机、实时性和兼容性要求选择。 每颗 MCU 会枚举一个双通道 `gs_usb`、一个 `SANPO Studio Management Port` 和两个 `SANPO USB2RS485 Port`。双 MCU 整板提供四路 CAN/CAN FD、两个管理口和四路独立 RS485 透传串口。 V8 已记录的正式固件节点: | 固件 | 主要变化 | | --- | --- | | V83 | 在保留 V82 功能的基础上,增加完整 FDCAN 错误状态上报和双路径 Bus-Off 恢复;兼容旧驱动自动恢复,并为支持扩展协议的驱动提供 `restart-ms`/手动恢复能力 | | V82 | 完善正式发布包、客户二次开发框架、CAN/CAN FD/RS485 样例和 J8108-R8 FDCAN 测试说明;重复设置相同 FDCAN 参数时恢复实时配置,避免无意义的 Flash 写入 | | V81 | V8 首个公开固件;完成 STM32G0B1 双 MCU 平台、双通道 `gs_usb`、管理口和独立 RS485 USB 串口的发布 | V83 的错误处理使用 Linux 标准 CAN 错误帧,不增加 SANPO 私有错误格式。只有 Bus-Off 会触发控制器恢复;Error Warning 和 Error Passive 用于状态上报,不会错误地重启通道。CAN-A 与 CAN-B 独立恢复,不会主动重启另一通道或 RS485。 ### V6:增加 CAN FD 并统一协议 V6 在保留经典 CAN 和 RS485 的基础上增加 CAN FD,并统一通信封装和参数配置: - USB 经典 CAN 继续使用 `ST/ET`,CAN FD 增加 `SF/EF`; - USB RS485 普通模式统一为 `RT + Channel + Len + Data + CRLF`; - SPI 提供 23 字节 `SHORT` 和 73 字节 `LONG` 两种固定传输长度,并增加 CRC-8; - CAN/CAN FD、RS485 和 SPI 参数改由 AT 命令明确设置并保存; - Linux SocketCAN 支持经典 CAN 和 CAN FD。 V6 后期按 MCU 平台分别维护固件: - **G0A V68**:保持 V6 协议,并完成 USB RAW、USB `RT` 和 SPI 转 RS485 的高频压力验证。它是 G0A 硬件专用固件,不能用于 STM32G473 或 V8 G0B1。 - **STM32G473 V67**:完善标准 SocketCAN 错误帧、Error Warning、Error Passive、TEC/REC 和 Bus-Off 处理。旧版 `gs_usb` 驱动继续使用固件 100 ms 自动恢复;支持扩展恢复协议的驱动可通过 `restart-ms` 或手动 restart 控制恢复。恢复时丢弃 Bus-Off 期间积压的旧控制帧,避免恢复后重放过期指令。 从 V4 升级到 V6 时,USB 经典 CAN 程序通常只需重新确认端口和 Channel;RS485 封装、SPI 布局、CAN FD 配置和通信参数设置方式需要按 V6 文档修改。详细差异见 [V4 到 V6 迁移说明](https://docs.sanporobot.com/v6/zh/v4_to_v6_migration.html)。 ### V4:经典 CAN 与 RS485 基础版本 V4 建立了 SPINE 的 USB、SPI、经典 CAN、RS485、通信参数配置和离线批量指令等基础能力。V42(V4.2)及之后的固件支持离线批量执行。 V47 是 V4 的最终封版版本,客户可见的主要状态包括: - 完成 USB CDC、`gs_usb`/SocketCAN、SPI、经典 CAN 和 RS485 回归; - 完善 SPI 转 RS485 回包中的 Channel 信息; - 提供 STM32CubeIDE 和 Keil 客户二次开发工程; - 通过 `AT+VER` 返回 `V47`。 V4 继续适合仅使用经典 CAN 和 RS485 的既有项目。V4 固件不能烧录到 V6 或 V8 硬件。