面向 5 串锂电池组的嵌入式电池管理系统(BMS)。项目基于 STM32F407VET6、TI BQ76920 和 FreeRTOS,实现电芯监控、保护、SOC 估算、均衡与双串口通信。
仓库主页:katrinagui/BMS
- 5 节串联电芯电压、温度和电流采集。
- BQ76920 硬件过压、欠压、短路与过流保护。
- MCU 软件过压、欠压、过温与低温保护。
- CHG/DSG MOS 控制和 5 路被动均衡。
- OCV 初始化与库仑积分 SOC;集成 Edge AI SOC 估算。
- USART1 调试接口与 USART2 蓝牙接口,均为 115200, 8N1。
- 串口 RX 循环 DMA、TX 普通 DMA、IWDG 看门狗和任务栈监控。
| 模块 | 方案 |
|---|---|
| 主控 | STM32F407VET6,Cortex-M4F,168 MHz |
| 电池 AFE | TI BQ76920,软件 I²C + CRC-8 |
| 电芯数量 | 5 串锂电池 |
| 温度 | BQ76920 TS1 外接热敏电阻 |
| 调试串口 | USART1:PA9 / PA10,115200 bps |
| 蓝牙串口 | USART2:PA2 / PA3,115200 bps |
| MOS 与均衡 | CHG/DSG MOS、5 路被动均衡 |
FreeRTOS 使用静态任务和静态队列,安全关键的采集、保护与 MOS 控制由最高优先级任务统一处理。
| 任务 | 优先级 | 职责 |
|---|---|---|
BmsControl |
5 | BQ 通信、采样、保护、MOS 与均衡 |
Soc |
4 | CC 样本积分与 SOC 更新 |
Comm |
3 | 串口接收、命令解析、遥测与 DMA 发送 |
Health |
2 | 控制/通信心跳、IWDG 与栈水位检查 |
AI |
1 | Edge AI SOC 推理 |
串口 DMA 映射如下。RX 使用循环模式,IDLE、半传输和全传输事件只唤醒通信任务;TX 使用普通模式,完成后由通信任务发送队列中的下一帧。中断中不解析协议,也不格式化日志。
| 串口 | RX | TX |
|---|---|---|
| USART1 | DMA2 Stream2 / Channel 4,Circular | DMA2 Stream7 / Channel 4,Normal |
| USART2 | DMA1 Stream5 / Channel 4,Circular | DMA1 Stream6 / Channel 4,Normal |
两个 RX DMA 缓冲区均为 512 字节;软件记录覆盖计数,供压力测试诊断。
| 模式 | 行为 |
|---|---|
AUTO |
根据保护状态自动仲裁 CHG/DSG MOS |
MANUAL |
通过串口控制 CHG/DSG;数据无效或保护有效时,安全关断仍可覆盖人工命令 |
FAULT_LOCKOUT |
关键采样或 BQ 通信连续失败后关闭 FET、停止均衡,并拒绝重新开启 MOS |
| 命令 | 功能 |
|---|---|
1 |
输出 BMS 状态 |
2 / 3 |
打开 / 关闭 DSG MOS |
4 / 5 |
打开 / 关闭 CHG MOS |
6 |
切换至 AUTO 模式 |
7 |
输出 AI SOC |
CORE/ CMSIS 与启动文件
FreeRTOS-Kernel/ FreeRTOS 内核与 ARM_CM4F 端口
FWLIB/ STM32F4 标准外设库
HARDWARE/ BQ76920、I²C、串口、DMA、LED 与保护逻辑
RGA/ Edge AI 网络与运行时资源
SYSTEM/ FreeRTOS 感知的 DWT 延时组件
USER/ 应用入口、FreeRTOSConfig 与 Keil 工程
doc/ FreeRTOS 移植设计文档
更多任务划分和设计说明见 FreeRTOS 移植文档。
- 电流换算暂按 5 mΩ 采样电阻;更换 PCB 或采样电阻后必须同步修改并重新标定。
- OV/UV/OT/UT、均衡压差、2 Ah 标称容量和 AI
+0.23修正均属于产品参数,不应在没有电芯规格和测试数据时随意调整。 - 编译通过只能证明接口和链接一致。首次烧录前应依次验证:上电 FET 保持关闭、首轮有效采样后再由 AUTO 仲裁开启、I²C 时序/上拉、两路 RX DMA 压力、TX 队列拥塞、每类故障注入、看门狗复位以及各任务栈最低余量。