# ppbms-ce **Repository Path**: ansion5201987/ppbms-ce ## Basic Information - **Project Name**: ppbms-ce - **Description**: Pinpush BMS(钉图BMS) - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-10 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PPBMS ## 1. 项目介绍 PinPush (钉图) BMS 是一个**工业级的**、**开源的**、**现代的**电池管理系统(BMS)固件平台。 提供从 Bootloader 到 Application 的BMS相关的完整固件方案,支持在 Bootloader 和 Application 中进行升级,配套官方Web上位机[地址1](https://ppbms.pages.dev) [地址2](https://ppbms.netlify.app),及微信小程序(陆续开源中),旨在为BMS开发者及相关企业提供一个高可靠、高复用、易于二次开发的底层平台。 ## 2. 设计哲学 * **可靠性优先**:以“契约式编程”为核心,在代码中大量使用 ASSERT 在开发阶段暴露问题,而非在运行时处理。 * **控制反转**:借鉴现代软件框架的Inversion of Control思想,各功能模块不直接相互调用,而是将自身“注册”到框架中,由框架统一调度和管理。这使得模块可以“即插即用”,极大降低了模块间的耦合度。 * **声明式数据抽象**:摒弃为数据结构编写配套解析代码的传统模式。只“声明”数据的结构(元数据),具体的序列化、通信、存储等操作由框架根据该声明自动完成,实现业务与数据格式的彻底解耦。 * **产品矩阵架构**:通过 pcb(硬件抽象)与 prd(产品定义)分层,可轻松组合出“同一固件,适配多种硬件;同一硬件,支持多种产品”的产品矩阵。 * **可移植性**:核心业务逻辑不依赖任何具体的硬件型号。通过afe驱动框架将AFE芯片的操作接口标准化。这使得更换MCU或AFE芯片时,仅需修改相应的适配层代码,而无需触及上层应用,实现了真正的硬件解耦。 * **高内聚的算法设计**:复杂的SOC/SOH混合算法,按职责清晰地拆分为决策、积分、计算三大独立模块,可读性与可维护性俱佳。 ## 3. 运行DEMO 本项目提供一个基于国民技术`N32G43XCL`开发板的参考设计,用户可快速将其运行起来,以验证开发环境并体验BMS的基础功能。 ### 3.1. 软硬件准备 * **主控**:国民技术 `N32G43XCL` 开发板。 * **AFE**:**无需硬件**。Demo默认使用软件模拟AFE,便于在无真实AFE硬件的情况下运行和调试。 * **IDE**:Embedded IDE (EIDE)。一款免费且功能强大的嵌入式开发环境,集成了项目管理、代码编辑、编译、调试等功能。 ### 3.2. 编译与烧录 使用 EIDE 打开项目根目录下的`app/prd/000/eide`工程,通过“构建”生成固件,然后通过调试器“下载”到`N32G43XCL`开发板中。 ### 3.3. 运行观察 固件运行后,可通过连接`USART1`(PA9/PA10,波特率19200)查看日志,或访问官方Web上位机[地址1](https://ppbms.pages.dev) [地址2](https://ppbms.netlify.app),进行图形化数据观测。