自定义固件开发

自定义固件开发适合希望直接使用 STM32G0B1RCT6 编写 CAN、CAN FD、RS485 和设备控制逻辑的用户。样例已经配置好 V8 开发板的 MCU、外部 8 MHz 晶振、引脚和基础外设,可以直接导入 STM32CubeIDE 修改。

这些样例不会保留 V81 正式固件的 USB/SPI 转换、SocketCAN、管理口协议、透传模式和离线批量指令功能。如果需要保留这些能力,只增加 I2C、ADC、USART3、传感器或自己的业务代码,请选择原厂固件二次开发

选择合适的样例

开发需求

推荐工程

自定义经典 CAN、11 位标准 ID

CAN 标准帧直接开发工程

自定义经典 CAN、29 位扩展 ID

CAN 扩展帧直接开发工程

自定义 CAN FD、11 位标准 ID

CAN FD 标准帧直接开发工程

自定义 CAN FD、29 位扩展 ID

CAN FD 扩展帧直接开发工程

自定义 RS485 设备控制

RS485 直接开发工程

保留 V81 原厂通信功能,只增加外设或业务逻辑

原厂固件二次开发

使用入口:V8 自定义固件逐项使用说明

两颗 MCU 使用同一套工程

开发板上的两颗 STM32G0B1RCT6 型号和引脚配置相同,同一个编译结果可以烧录到任意一颗 MCU,也可以分别烧录到两颗 MCU。

下载接口

工程中的接口

开发板接口

MCU(1)的 SWD

FDCAN1/FDCAN2、RS485-A/RS485-B

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

MCU(2)的 SWD

FDCAN1/FDCAN2、RS485-A/RS485-B

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

完整引脚定义见接口和引脚说明

STM32CubeIDE 开发环境

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

  • STM32CubeIDE,样例已使用 2.2.0 完成编译验证;

  • STM32G0B1RCT6;

  • 外部 8 MHz 晶振,系统时钟和 FDCAN 内核时钟 60 MHz;

  • ST-LINK 调试器。

使用 File > Import > Existing Projects into Workspace 导入所选工程,然后选择 ReleaseDebug 配置构建。烧录时使用目标 MCU 对应的 SWD 接口,不要执行全片擦除,以免删除开发板保存的数据。

每个直接开发工程都包含 .ioc,可以使用 STM32CubeMX 调整外设。生成代码前应先备份工程,生成后必须重新核对时钟、V8 引脚、CAN/CAN FD 位时序、RS485 方向控制以及 Core/Src/main.c 中的客户逻辑。

CAN 标准帧直接开发工程

逐步说明:CAN 标准帧工程

该工程把本 MCU 的两路 FDCAN 外设配置为 1 Mbit/s 经典 CAN。默认只接收标准帧和扩展帧并拒绝远程帧,不会自动发送数据。接收计数和最近一帧保存在:

g_can1_rx_count / g_can1_last_header / g_can1_last_data
g_can2_rx_count / g_can2_last_header / g_can2_last_data

Core/Src/main.c 中的 DirectCan_SendStandard() 提供 11 位标准 ID、8 字节数据帧发送入口。接入设备前,应按设备协议确认 CAN ID、数据内容和波特率,再显式调用该函数。

CAN 扩展帧直接开发工程

逐步说明:CAN 扩展帧工程

该工程把两路 FDCAN 外设配置为 1 Mbit/s 经典 CAN,默认仅接收。DirectCan_SendExtended() 提供 29 位扩展 ID、8 字节数据帧发送入口。

工程不会自动发送 Cybergear 或其他电机控制指令。使用扩展帧设备前,应先按设备协议实现 ID 编码、数据缩放、状态机和安全保护。

CAN FD 标准帧直接开发工程

逐步说明:CAN FD 标准帧工程

默认参数如下:

项目

默认值

仲裁段波特率

1 Mbit/s

数据段波特率

5 Mbit/s

BRS

开启

发送格式

11 位标准 ID、16 字节 CAN FD 数据帧

默认行为

两路仅接收,不自动发送

DirectCanFd_SendStandard16() 提供发送入口。修改数据长度时,应同时使用合法的 CAN FD DLC,并保证发送缓存和接收缓存足够大。

CAN FD 扩展帧直接开发工程

逐步说明:CAN FD 扩展帧工程

该工程同样使用 1 Mbit/s 仲裁段、5 Mbit/s 数据段和 BRS,DirectCanFd_SendExtended16() 提供 29 位扩展 ID、16 字节 CAN FD 数据帧发送入口。主循环默认仅接收,不会自动发送。

加入设备协议前,应确认目标设备同时支持 CAN FD、BRS、29 位扩展 ID 和当前位时序。

RS485 直接开发工程

逐步说明:RS485 工程

该工程直接控制本 MCU 的两路半双工 RS485:

项目

RS485-A

RS485-B

UART

USART1

USART2

引脚

TX=PC4、RX=PB7、RE=PD2

TX=PD5、RX=PD6、RE=PC9

默认参数

4 Mbit/s、8-N-1

4 Mbit/s、8-N-1

默认行为

仅接收

仅接收

接收数据保存在两个 256 字节循环缓冲区中。DirectRs485_Transmit() 会切换收发方向并执行阻塞发送,但主循环不会自动调用。正式项目应根据设备协议补充报文边界、校验、超时、错误恢复,并根据实时性需求评估中断或 DMA 方案。

USB 和原厂协议说明

直接开发工程中的 USB 初始化代码只是基础工程资源,不是 V81 管理口、SocketCAN、USB 转 CAN/CAN FD 或 USB 转 RS485 接口。客户如需这些功能,必须自行实现完整的 USB 描述符、协议、缓存、流控和主机端支持,或者直接选择原厂固件二次开发

开发完成后的检查

至少完成以下检查:

  1. Release 配置编译无错误;

  2. MCU、外部晶振、系统时钟和引脚配置与 V8 硬件一致;

  3. CAN/CAN FD 仲裁段、数据段、BRS 和 ID 类型与设备一致;

  4. RS485 波特率、数据位、校验、停止位和方向控制正确;

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

  6. 保持默认仅接收状态完成接线、终端电阻和总线检查后,再启用发送;

  7. 电机或执行器的控制范围、状态机和保护参数安全;

  8. 长时间运行没有异常复位、通信中断、缓存溢出或明显丢帧。