原厂固件二次开发

原厂固件二次开发适合希望保留 V81 正式固件现有 USB、SPI、CAN/CAN FD、RS485、SocketCAN、管理口协议和离线批量指令功能,同时增加传感器、扩展串口或客户业务逻辑的用户。

如果需要自行接管 CAN、CAN FD、RS485 或整个通信流程,不需要保留 V81 原厂通信能力,请选择自定义固件开发

下载开发框架

V81 二次开发框架提供 STM32CubeIDE 工程:

查看 V81 原厂固件二次开发框架逐步使用说明

工程目录为:

sanpo_v8_g0b_hse_framework/

生产 MCU 为 STM32G0B1RCT6,使用外部 8 MHz 晶振。系统时钟和 FDCAN 内核时钟均为 60 MHz。开发框架已经使用 STM32CubeIDE 2.2.0 的 Release 配置完成编译验证,建议优先使用相同版本或经过验证的兼容版本。

可以增加哪些功能

功能

引脚和外设

常见用途

扩展串口

USART3,PB10/TX、PB11/RX

遥控器、无线模块、外部控制器和自定义指令

I²C

I2C1,PA9/SCL、PA10/SDA

姿态、温度、压力等传感器

模拟量

PB0/ADC1 IN8、PB1/ADC1 IN9

电压、压力和其他模拟信号

后台处理

CustomerApp_BackgroundTask()

状态检查、数据整理和客户业务逻辑

USB、外部 SPI、板内 SPI、CAN/CAN FD、RS485 和原厂通信任务已经集成,通常不需要修改。完整引脚定义见接口和引脚说明

客户代码位置

客户功能集中在:

CustomerApp/

常用文件和入口如下:

  • CustomerApp/Src/customer_protocol.c:增加 USART3 指令、协议解析和客户业务处理;

  • CustomerApp/Src/customer_app.c:USART3、I2C1、ADC1 和后台任务的框架入口;

  • CustomerApp/Inc/customer_app.h:客户任务和 USART3 发送、统计接口;

  • CustomerApp/Inc/customer_protocol.h:客户协议层回调接口。

默认示例在 USART3 收到 PINGPING\nPING\r\n 后返回:

PONG\r\n

USART3 默认参数为 115200-8-N-1。建议先完成 PING/PONG 测试,再接入客户设备和业务代码。

使用 STM32CubeIDE

  1. 安装 STM32CubeIDE,准备 ST-LINK。

  2. 选择 File > Import > Existing Projects into Workspace

  3. 导入 sanpo_v8_g0b_hse_framework

  4. 选择 Release 配置,依次执行 Clean 和 Build。

  5. 使用 ST-LINK 执行下载并校验,然后重新上电。

原厂通信库位于:

Libs/libloop_function_v8_g0.a

该静态库与 V81 发布基线配套。不要替换 MCU 型号、ABI、HAL、FreeRTOS、USB 栈、静态库或链接脚本,也不要把其他版本的通信库复制到本工程。

不要使用 IOC 重新生成代码

该发布工程不是 CubeMX 空白模板:

  • 发布包不提供 .ioc

  • 不要执行 CubeMX Generate Code

  • 不要重新分配原厂 USB、SPI、CAN/CAN FD、RS485 和 FreeRTOS 已使用的资源;

  • 不要覆盖原厂通信任务、USB 描述符或 HAL 回调链;

  • 客户功能应优先放在 CustomerApp 中。

需要自由修改 IOC、通信外设或启动流程时,请使用自定义固件开发中的直接开发工程。

两颗 MCU 和固件空间

开发板上的两颗 STM32G0B1RCT6 型号和引脚配置相同。需要两侧具备相同客户功能时,可以把同一个编译结果通过两个 SWD 接口分别烧录;每颗 MCU 分别管理本地两路 CAN/CAN FD 和两路 RS485。

工程链接脚本把应用程序 Flash 限制为 112 KB。不要扩大该区域或执行全片擦除,否则可能覆盖开发板保存的设备身份、授权信息、通信配置或离线批量任务。烧录要求见固件更新

修改后的验收

每次修改后至少检查:

  1. Release 配置编译无错误;

  2. 管理口发送 AT+VER\r\n 返回 V81\r\n

  3. USART3 发送 PING\r\n 返回 PONG\r\n

  4. USB 透传模式和协议模式均正常;

  5. SocketCAN、外部 SPI 和管理口协议正常;

  6. 本 MCU 的两路 CAN/CAN FD 和两路 RS485 均能收发;

  7. 新增的 USART3、I2C1、ADC1 或传感器功能正常;

  8. 两颗 MCU 分别烧录时接口对应正确;

  9. 断电重启后原有通信配置仍然保留;

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