固件更新

开发板上有两颗 STM32F407,每颗芯片都有独立的 SWD 下载接口。更新完整开发板时,需要将固件分别烧录到两颗芯片;两颗芯片使用相同功能时,可以烧录同一个固件文件。

重要:不要执行全片擦除。 全片擦除会删除出厂识别信息、已保存的通信参数和离线批次。正常更新只需要下载固件并执行校验。

选择固件文件

文件

用途

spine_v4_v47_release.bin

SANPO V47 原厂固件,产品出厂烧录和普通固件更新使用此文件

spine_v4_v47_customer_sdk.bin

原厂固件二次开发工程的默认构建结果,包含客户扩展示例;只有使用客户扩展工程时才烧录

如果文件名中带有更新的版本号,应优先使用同一发布包内版本号一致的固件和文档。不要将 V4 固件烧录到 STM32G473 的 V6 开发板。

准备工作

  • 下载并安装 STM32CubeProgrammer

  • 准备 ST-LINK 下载器和 SWD 连接线。

  • 通过 USB 或开发板 5 V 输入为控制部分供电。

  • 更新前停止电机运行,并断开电机高压电源。

  • 记录当前通信参数和离线批次,以便需要时重新设置。

SWDIO、SWCLK 和 GND 的引脚位置请参考 原理图与引脚定义

使用 STM32CubeProgrammer 更新原厂固件

  1. 将 ST-LINK 接到第一颗 STM32 的 SWD 接口,并让开发板控制部分上电。

  2. 打开 STM32CubeProgrammer,选择 ST-LINKSWD,然后连接芯片。

  3. 打开 spine_v4_v47_release.bin

  4. BIN 文件的下载地址填写 0x08000000

  5. 开启下载后的校验功能,执行下载并确认校验成功。

  6. 断开软件连接,将 ST-LINK 接到第二颗 STM32 的 SWD 接口。

  7. 使用同一个固件文件和地址重复下载、校验。

  8. 两颗芯片都完成后,断开 ST-LINK,重新给开发板上电。

不要选择 Full chip eraseMass erase 或类似的全片擦除选项。STM32CubeProgrammer 在正常下载时会自动处理固件所在区域,不需要先手动擦除整颗芯片。

V47 原厂固件和默认客户示例都小于 128 KiB,正常下载不会进入保存通信参数的 Flash 扇区。如果客户自行编译的 BIN 达到或超过 128 KiB,烧录前应先记录通信参数;程序进入 0x08020000 之后时,STM32F407 的整扇区擦除可能会清掉这些参数,即使没有执行全片擦除。

更新后检查

开发板连接电脑后通常会出现两个 USB 串口。分别打开两个串口,按文本发送:

AT+VER

V47 固件的正常返回为:

V47

然后至少检查一次实际使用的 CAN 和 RS485 接口。如果使用 Linux SocketCAN,还可以执行:

sudo modprobe gs_usb
ip link show type can

正常情况下,完整开发板会出现 4 个 canX 接口。Linux 分配的接口编号不一定与开发板丝印顺序相同,控制电机前应先确认对应关系。

更新失败时的处理

现象

处理方法

ST-LINK 无法连接

检查 SWDIO、SWCLK、GND、供电和下载口是否接对;降低 SWD 频率后重试

下载成功但校验失败

重新连接芯片并再次下载,不要先执行全片擦除

只能找到一个 USB 串口

确认两颗 STM32 都已经烧录,并检查另一个 USB 接口和供电

AT+VER 没有返回

确认串口没有被其他软件占用,发送方式为文本且结束符为 CRLF

全片擦除后原厂固件不能正常工作

出厂认证信息已被删除,请按出厂认证信息恢复读取两颗 MCU 的 UID 并联系 SANPO 技术支持获取专属认证文件

原来的默认波特率或离线批次丢失

重新设置通信参数并重新上传批次;具体命令见 离线批量执行

烧录客户或自定义固件

使用 原厂固件二次开发 时,应烧录该客户工程实际生成的 BIN 或 ELF 文件,并同样使用“下载并校验”,不要执行全片擦除。

使用 自定义固件开发 时,当前提供的 CAN 标准帧、CAN 扩展帧和 RS485 样例使用相同的芯片和引脚配置,同一个编译结果可以烧录到任意一颗 STM32。烧录 MCU(1)时对应 CAN-1/2、RS485-1/2;烧录 MCU(2)时对应 CAN-3/4、RS485-3/4。

Keil 工程正常生成 .axf.hex 文件。可以直接在 Keil 中使用 ST-LINK 下载;如果使用 STM32CubeProgrammer,请选择工程生成的 .hex 文件并执行下载和校验。