固件更新

V6 固件面向 STM32G473 系列 MCU。推荐使用 STLINK/SWD 和 STM32CubeProgrammer 更新固件。

准备工作

  • STM32CubeProgrammer

  • STLINK/SWD 下载器

  • V6 固件镜像

  • 稳定的 USB 或外部 5V 控制电源

  • 开发板有两个STLINK接口,分别对应两颗STM32G473芯片,需分别更新固件

更新步骤

  1. 连接5V控制系统电源供电。

  2. 使用 STLINK 连接开发板 SWD 接口。

  3. 打开 STM32CubeProgrammer,选择 ST-LINK

  4. 安装工具
    下载并安装ST官方烧录软件:STM32CubeProgrammer

  5. 获取固件
    下载V6 固件镜像:sanpo_robot_spine_board_firmware-v6-latest.bin

  6. 烧录固件
    使用STM32CubeProgrammer将固件刷入开发板(两颗芯片需分别操作)

  7. 复位开发板或者重新上电。

  8. 通过 USB CDC串口工具发送 AT+VER,发送结束符选择 CRLF,确认版本号。

默认协议状态

固件更新或恢复默认配置后,默认状态如下:

项目

默认值

USB 设备形态

两颗 STM32 芯片分别枚举为 gs_usb + USB CDC串口(CDC ACM) 复合设备

SocketCAN

单块 SANPO 集成开发板通常枚举为 4 个 canX 接口,支持经典 CAN 和 CAN FD

USB CDC串口协议

支持 ST/ET/SF/EF/RT/AT,可通过 AT+RS485RAW=1 临时开启 RS485 原始数据透传

SPI 模式

SHORT,总线长度 23 字节

CAN/FDCAN 波特率

AT+SETFDCAN=1000000,5000000

CAN FD BRS

开启

RS485 原始数据透传模式

关闭,上电默认使用 SANPO RT 封装帧模式

RS485 原始数据透传通道

0,发送到全部 RS485 接口

如需修改 USB CDC串口/SPI 使用的 CAN/FDCAN 或 RS485 波特率参数,应通过 USB CDC串口发送 AT+ 指令,配置会写入固件Flash,下次上电无需重复配置。AT+ 控制指令通常通过串口工具发送,操作时只输入命令主体,并把发送结束符设置为 CRLF。与V4版本不同,USB CDC串口连接时的波特率不会同步修改 CAN/FDCAN/RS485总线的波特率。

AT+RS485RAW=1 用于临时开启 RS485 原始数据透传,便于宇树等第三方上位机设置设备参数。该模式不作为上电默认配置保存,重新上电后会自动恢复为非透传模式;生产通信建议使用 SANPO RT 封装帧。

SocketCAN 使用 Linux ip link set canX type can ... 配置当前运行时 CAN 参数。该配置不会写入固件Flash,设备重新上电或重新枚举后,SocketCAN 上位机应重新配置 canX

如果升级后希望恢复出厂通信配置,或 固件配置区因为多次修改配置而写满,可通过 USB CDC串口发送:

AT+CFGERASE

该命令只擦除通信配置区,不擦除批量指令数据。执行后如需使用 SPI CAN FD,应重新设置 AT+SPIMODE=LONG

如需使用 SPI CAN FD,应通过 USB CDC串口发送:

AT+SETFDCAN=1000000,5000000
AT+SPIMODE=LONG

注意事项

  • 固件更新过程中不要断开控制电源。

  • 更新前确认目标硬件版本和固件版本匹配。

  • 单块 SANPO 集成开发板提供 4 路 SocketCAN 接口,在主机没有其他 SocketCAN 设备时通常显示为 can0can1can2can3canX 编号不保证和板上 CAN1~CAN4 的物理顺序固定一致,正式使用前应确认 canX 与物理 CAN 总线的对应关系。