电池管理进阶我要换行
电池管理介绍我要换行
电池管理入门作用是让电池功能工作起来;我要换行
电池管理进阶则重点介绍电池管理服务,便于用户自主修改扩展;我要换行
电池管理进阶的内容包括:电池管理服务框架,程序流程,电量服务算法优化,NTC温度计算;
如果还没有了解电池管理入门,可以跳转到 电池管理入门;我要换行
电池管理进阶
电池管理服务
框架
电池管理服务大致包括充电,电量采集,温度采集三个部分;我要换行 框架示意图如下:我要换行

程序流程
电池服务的程序流程在单核管理和双核管理上有些差异;我要换行
电池管理服务在单核管理一般是指在HCPU管理;电池管理的使用,驱动,服务都放到在HCPU;
电池管理服务在双核管理一般是指电池管理的服务在HCPU使用,电池的驱动放在LCPU上;HCPU和LCPU通过data service进行通讯;
单核管理的程序流程
电池管理服务在单核管理一般在52x平台,涉及到以下三个方面的管理:
双核管理的程序流程
电池管理服务在单核管理一般在55x/56x/58x平台。我要换行 其中:我要换行 HCPU负责电量应用,充电检测,;
LCPU负责电量检测;
电池电量检测管理我要换行 双核管理时,电池电量检测是放在LCPU。初始化显式被battery_service_est_cb()调用;我要换行 battery_service_est_cb()在LCPU的data service建好的时候,自动执行的;我要换行 双核管理时,小核电池电量检测依赖电池的data service 创建;
电池充电管理我要换行 双核管理时,充电检测放在HCPU,初始化也在HCPU,; battery_charge_init依然时通过
应用和驱动端消息管理我要换行 双核管理而言,HCPU和LCPU通讯属于核间通讯;
消息管理初始化我要换行 LCPU通过INIT_APP_EXPORT() 初始化,开机自动运行,隐式调用;
HCPU通过被app_lcpu_pwr_on显示调用;
双核管理和单核管理的程序流程对比
item |
电池电量检测 |
电池充电检测 |
消息管理 |
---|---|---|---|
单核管理 |
HCPU |
HCPU |
HCPU |
双核管理 |
LCPU 显示调用 |
HCPU |
HCPU 显示调用;LCPU隐式调用 |
电量服务算法优化
从ADC采集的电量经过平滑处理及加权平均,后换算电量百分比,而是经过电量的优化算法,以提高电量的准确性;我要换行
电压值平滑处理我要换行
系统运行过程中,电压会出现波动,抑制波动会通过平滑算法来实现;我要换行 对过去的8个电压值做平均处理,可以实现电压波形的削峰填谷;我要换行

相邻电压加权平均处理我要换行
对相邻的电压值进行加权平均后,对于一些突变的电压值就能被平滑掉;我要换行

无效电池电压值过滤我要换行
如果当前电压值和上一次的电压值相差过大,会被过滤掉;我要换行

电压转换成电量百分比曲线我要换行
电量通过百分比来显示的,通过接口battery_voltage_convert_to_percent()来实现;我要换行

对于充电时的电量百分比计算,有两种方法:我要换行 CHARGER_MEASURE_MODE_CURVE 使用充电使电量的电池曲线我要换行 CHARGER_MEASURE_MODE_SUSPEND 获取电池电量的时候暂停充电我要换行
NTC温度计算我要换行
NTC 通过ADC获取的数值,通过公式法计算出对应的温度;我要换行 menuconfig 配置选项如下:

公式法实现接口如下图:我要换行

可以根据实际的NTC 规格调整参数就能获取到准确的NTC温度值;
<本文结束>电池管理进阶