自定义固件开发

自定义固件开发适合希望自己编写 CAN、RS485 和设备控制逻辑的用户。样例已经配置好 STM32F407、开发板引脚和基础外设,可以直接用 Keil 5 打开并修改。

这些样例不包含 V47 原厂固件的 USB/SPI 转 CAN/RS485、SocketCAN 和离线执行功能。如果需要保留这些功能,只增加 IIC、ADC、串口设备或自己的业务代码,请选择原厂固件二次开发

选择合适的样例

开发需求

推荐工程

自定义固件控制 CAN 标准帧设备

CAN 标准帧控制样例

自定义固件控制 CAN 扩展帧设备

CAN 扩展帧控制样例

自定义固件控制 RS485 设备

RS485 控制样例

保留 SANPO 原厂USB/SPI转CAN/RS485控制功能,只增加外设

原厂固件二次开发

样例下载入口:F407 自定义固件样例

SANPO SPINE STM32F407 引脚定义

两颗 MCU 使用同一套固件

开发板上的两颗 STM32F407 型号和引脚配置相同,CAN 和 RS485 样例都只需要一套工程。同一个编译结果可以烧录到任意一颗 MCU,也可以分别烧录到两颗 MCU。

下载接口

工程中的接口

开发板接口

MCU(1)的 SWD

CAN1/CAN2、RS485-A/RS485-B

CAN-1/CAN-2、RS485-1/RS485-2

MCU(2)的 SWD

CAN1/CAN2、RS485-A/RS485-B

CAN-3/CAN-4、RS485-3/RS485-4

Keil 开发环境

三个样例使用相同的开发环境:

  • Keil MDK 5;

  • Arm Compiler 5.06 update 7;

  • Keil::STM32F4xx_DFP 3.1.1;

  • ST-LINK 调试器。

打开样例中的 .uvprojx 文件,按 F7 编译。烧录时选择 ST-LINK(SWD)下载口,不要执行全片擦除,以免删除开发板出厂信息和原厂固件保存的数据。

每个样例都包含 .ioc。可以使用 STM32CubeMX 调整基础外设,但生成代码前应先备份工程;生成后要重新核对 CAN/RS485 参数、方向控制、用户代码和 Keil 工程设置。

CAN 标准帧控制样例

下载:CAN 标准帧控制样例

该工程默认以 1 Mbit/s 从本 MCU 对应的两路 CAN 每秒发送一条标准帧:

ID   = 0x141
Data = 9A 00 00 00 00 00 00 00

调试串口 USART3 使用 115200-8-N-1,会显示发送和接收到的 CAN ID、数据长度和内容。

默认数据只用于演示发送方法,不保证适用于所连接的设备。接入电机或执行器前,应先按照设备协议修改 CAN ID 和数据。具体修改位置和 Keil 操作步骤见样例目录中的 README。

CAN 扩展帧控制样例

下载:CAN 扩展帧控制样例

该工程演示 Cybergear 扩展帧控制。默认参数如下:

项目

默认值

CAN 波特率

1 Mbit/s

Motor ID

12

往复幅度

0.2 rad

往复频率

0.2 Hz

发送周期

10 ms

Kp / Kd

10.0 / 0.5

烧录后程序会自动设置模式、使能电机并开始往复运动。首次测试必须架空输出轴、清空运动范围,并准备随时断开电机电源。程序默认把指令发送到本 MCU 的两路 CAN;只测试一路时,建议只连接目标电机或修改发送函数。

具体参数位置、调试串口输出和 Keil 操作步骤见样例目录中的 README。

RS485 控制样例

下载:RS485 控制样例

该工程演示宇树 GO-M8010 类电机的 17 字节控制指令和 16 字节反馈,默认使用:

项目

默认值

RS485 参数

4 Mbit/s、8-N-1

两路 Motor ID

1

每次目标位置增量

0.2 rad

Kp / Kd

2.5 / 0.12

调试串口

USART3,115200-8-N-1

烧录后两路 RS485 都可能驱动电机运动。首次测试必须固定电机、架空输出轴并检查 A/B 接线和供电。USART3 返回的是 16 字节二进制反馈,需要使用十六进制方式查看。

该样例使用等待式发送和接收,便于阅读和修改,不适合直接用于高频实时控制。正式产品应根据控制周期改用中断或 DMA,并完成连续运行和丢帧测试。

开发完成后的检查

至少完成以下检查:

  • Keil 编译为 0 Error(s)

  • CAN 波特率或 RS485 参数与设备一致;

  • 两颗 MCU 分别烧录时,接口对应关系正确;

  • 设备能够发送指令并收到合法反馈;

  • 电机控制范围和保护参数安全;

  • 长时间运行没有异常复位、通信中断或明显丢帧。