原厂固件二次开发
原厂固件二次开发适合希望保留 V81 正式固件现有 USB、SPI、CAN/CAN FD、RS485、SocketCAN、管理口协议和离线批量指令功能,同时增加传感器、扩展串口或客户业务逻辑的用户。
如果需要自行接管 CAN、CAN FD、RS485 或整个通信流程,不需要保留 V81 原厂通信能力,请选择自定义固件开发。
下载开发框架
V81 二次开发框架提供 STM32CubeIDE 工程:
工程目录为:
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 |
电压、压力和其他模拟信号 |
后台处理 |
|
状态检查、数据整理和客户业务逻辑 |
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 收到 PING、PING\n 或 PING\r\n 后返回:
PONG\r\n
USART3 默认参数为 115200-8-N-1。建议先完成 PING/PONG 测试,再接入客户设备和业务代码。
使用 STM32CubeIDE
安装 STM32CubeIDE,准备 ST-LINK。
选择
File > Import > Existing Projects into Workspace。导入
sanpo_v8_g0b_hse_framework。选择
Release配置,依次执行 Clean 和 Build。使用 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。不要扩大该区域或执行全片擦除,否则可能覆盖开发板保存的设备身份、授权信息、通信配置或离线批量任务。烧录要求见固件更新。
修改后的验收
每次修改后至少检查:
Release 配置编译无错误;
管理口发送
AT+VER\r\n返回V81\r\n;USART3 发送
PING\r\n返回PONG\r\n;USB 透传模式和协议模式均正常;
SocketCAN、外部 SPI 和管理口协议正常;
本 MCU 的两路 CAN/CAN FD 和两路 RS485 均能收发;
新增的 USART3、I2C1、ADC1 或传感器功能正常;
两颗 MCU 分别烧录时接口对应正确;
断电重启后原有通信配置仍然保留;
长时间运行没有异常复位、通信中断或明显丢帧。