一、项目概述
以 STM32F103C8T6 为主控,搭配 BQ76920 电池前端芯片,基于 RT-Thread 实时操作系统开发。搭建 CMake + GCC + OpenOCD 交叉编译调试链,采用简易 AUTOSAR 三层架构(ASW/RTE/BSW)实现软硬件解耦。基于 RT-Thread 拆分采集、保护、分析、均衡、通信 5 个独立任务,通过多线程调度保障实时性。SOC 估算以开路电压法标定初始值,结合安时积分与温度补偿算法提升运行精度。依托 BQ76920 与外部中断实现短路、过流、欠压等硬件级毫秒断电保护;采用被动均衡策略,通过软件定时器精准控制电压回升静置时长。基于 CAN 总线实现 BMS 状态上报、电芯数据交互,并集成 UDS 统一诊断服务,支持标准诊断会话切换、数据读取与故障码查询,适配 ECU 标准化运维需求。
二、硬件与技术栈
核心硬件
- 主控芯片:STM32F103C8T6(ARM Cortex-M3 内核,高性价比工业级主控)
- 电池前端芯片:BQ76920(多节锂电池电压采集、硬件保护核心芯片)
- 功能电路:锂电池被动均衡电路、硬件过流 / 短路保护电路
- 交互接口:UART 串口(FinSH 命令行调试、数据交互)、CAN 总线(BMS 数据通信)
核心技术
- 操作系统:RT-Thread(多线程调度、IPC 进程间通信)
- 开发库:STM32 标准库
- 构建体系:CMake + ARM GCC 交叉编译工具链
- 烧录调试:OpenOCD + ST-Link + VS Code Cortex-Debug
- 通信协议:I2C(BQ76920)、UART(FinSH)、CAN(状态上报)、UDS(诊断服务)
- 核心机制:互斥锁、信号量、软件定时器、环形缓冲区
三、系统架构与核心机制
ASW-RTE-BSW 三层架构实现完全解耦。系统拆解为采集、保护、分析、均衡、信息交互 5 个独立线程,通过优先级调度并行运行;互斥锁解决 I2C 总线竞态,信号量实现线程同步与中断唤醒;BQ76920 硬件特性 + 外部中断实现毫秒级断电保护;软件定时器精准控制被动均衡时序,提升均衡效率。
四、核心功能
- 多节锂电状态采集:BQ76920 实时采集单体电压、温度、总电流等参数;
- 高精度 SOC 估算:OCV 校准初始电量,安时积分 + 温度补偿实时计算剩余电量;
- 硬件级安全保护:毫秒级响应短路、过流、过压、欠压,快速断电保护;
- 智能被动均衡:软件定时器控制均衡时序,自动修复单体电压差异;
- FinSH 命令交互:串口命令行实时查询电池状态、配置保护参数;
- CAN 通信交互:支持 BMS 状态上报与电芯电压、温度数据请求/响应;
- UDS 统一诊断服务:集成 ISO 14229 标准诊断协议,支持 DiagnosticSessionControl(0x10)会话切换、ECUReset(0x11)复位控制、ReadDataByIdentifier(0x22)数据读取、WriteDataByIdentifier(0x2E)参数写入、ClearDiagnosticInformation(0x14)故障码清除、ReadDTCInformation(0x19)故障码查询、RoutineControl(0x31)诊断例程执行、TesterPresent(0x3E)会话保持等常用服务;
- ASW-RTE-BSW 三层解耦架构 + RT-Thread 多线程调度,模块化程度高、实时性强;
- OCV + 安时积分 + 温度补偿融合算法,SOC 估算精度高、稳定性强;
- CMake + ARM GCC + OpenOCD + Cortex-Debug 开源工具链,替代 Keil 实现全流程开发。
五、关键难点与解决方案
Keil 工程依赖与调试流程不开放 — 搭建 CMake + ARM GCC 构建体系,配合 OpenOCD、ST-Link 与 Cortex-Debug 实现命令行编译、烧录与在线调试,替代 Keil 完成开发闭环。
外设并发与 CPU 开销优化 — 针对串口 FinSH 命令行高频读取占用 CPU 的问题,设计了"硬件中断 + 环形缓冲区 + 信号量"机制。线程阻塞等待中断信号量唤醒,彻底消除 CPU 轮询开销,实现数据无丢失。
多线程数据竞态保护 — 针对不同任务频繁共享 I2C 总线和底层采集数据,采用互斥锁同步机制,确保并发访问下数据安全性与业务逻辑的时序稳定。
六、应用场景
电动工具电池包、便携式储能电源、工业锂电模组、小型新能源设备、锂电池教学实训平台。