整体架构流程

提示:只是为了梳理清楚流程

int main(void)
	HAL_Init();
	SystemClock_Config();
	MX_GPIO_Init();
  	MX_USART1_UART_Init();
  	MX_USART2_UART_Init();
  	MX_CAN_Init();
  	
	BMS_SysInitialize();
		I2C_BusInitialize();
		BQ769X0_Initialize(&InitData);
/***********************任务一:电池监控***********************************/
		BMS_MonitorInit();                                      // 电池监控初始化
			BMS_MonitorTaskEntry();                             //监控电池各项数据
				BMS_MonitorBattery();
				/****************1.单个电池电压********************/
					Bms_HalMonitorCellVoltage();                //单个电池电压
						BQ769X0_UpdateCellVolt();               //设置更新单体电压的频率
							BQ769X0_ReadBlockWithCRC();
								I2C_TransferMessages();
									I2C_INFO();		
						BubbleSort();                          //单体电池电压排序
				/****************2.单个电池电压********************/		
					Bms_HalMonitorBatteryVoltage();            //电池组电压
						BQ769X0_UpadteBatVolt();               //设置更新总电压的频率
							BQ769X0_ReadRegisterWordWithCRC();
								I2C_TransferMessages();
									LOG_E();
				/****************3.电池温度********************/	
					Bms_HalMonitorCellTemperature();           //电池温度
						BQ769X0_UpdateTsTemp();                //设置更新热敏电阻的温度的频率
							BQ769X0_WriteRegisterByteWithCRC();
								LOG_E();
				/****************4.电流采样********************/				
					Bms_HalMonitorBatteryCurrent();             //电流采样
						BQ769X0_UpdateCurrent();                //设置更新总电流的频率
							BQ769X0_ReadRegisterWordWithCRC();
			BMS_MonitorSysMode();                             //监控系统模式(放电、充电、睡眠)
/***********************任务二:电池保护***********************************/
		BMS_ProtectInit();                                     //电池保护初始化
			BMS_ProtectTaskEntry();
				BMS_ProtectTiggerMonitor();
					BMS_ChargeMonitor();                       // 充电监控:过流、过温、低温
					BMS_DischargeMonitor();                    //放电监控:过流、过温、低温
				BMS_ProtectRelieveMonitor();                   //保护解除监控
				rt_thread_mdelay(PROTECT_TASK_PERIOD);	
/***********************任务三:电池分析***********************************/				
		BMS_AnalysisInit();	                                   //电池分析初始化
			BMS_AnalysisTaskEntry();                           //电池状态分析任务线程入口
				BMS_AnalysisCapAndSocInit(void);               //容量和SOC上电初始化
				BMS_AnalysisEasy();// 最大电压差 平均电压 实时功率 最大和最小电压
				BMS_AnalysisCalCap();//实时校准容量涉及因素:温度、完整充放电、老化等等
				BMS_AnalysisSocCheck();// soc检查
				rt_thread_mdelay(ANALYSISI_TASK_PERIOD);
/***********************任务四:能量管理***********************************/	
		BMS_EnergyInit();	                                  //能量管理初始化
			BMS_EnergyTaskEntry();
				BMS_EnergyBalanceManage(void);                //均衡管理
				BMS_EnergyChgDsgManage(void);                 //充放电管理
/***********************任务五:信息管理***********************************/					
		BMS_InfoInit();		                                  //信息管理初始化
			BMS_InfoTaskEntry();
				BMS_InfoPrintf();                             //实时打印BMS信息
/***********************任务六:通信管理***********************************/						
        BMS_CommInit();		                                  //通信管理初始化
				

项目总体软件架构剖析综述

(1) 应用层:含 6 大功能模块,由 6 个 task 实现,保障功能完整独立。
(2) 应用层:利用全局变量 BMS_MonitorData 等,搭建任务间数据交互桥梁,确保系统协同。
(3) 应用层:BMS_Xxx 系列函数是主体功能实现的关键,位于源码目录 xx 的 xx.c 中,便于后续维护拓展。
(4) 中间层:BMS_Halxxx 系列函数衔接硬件底层与应用层,隔离复杂关联,提升可维护性。
(5) 硬件层:BQ769X0_系列函数借助 I2C 协议与 BQ 芯片交互,封装操作,为上层供接口。
(6) 硬件层:I2C 总线驱动及相关 GPIO 控制构成根基,保障硬件运行稳定,确保数据传输与控制无误。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐