电池管理入门
电池管理介绍
电池管理包括入门篇和提高篇;
入门包括电池管理配置、外部充电芯片驱动添加等;
进阶包括电池管理的代码框架、双核和单核电池管理的区别、电量处理逻辑、ADC配置说明;
电池管理入门的作用在于通过配置让硬件开始工作;
对于电池管理配置熟悉的话,可以跳转到 电池管理进阶;
电池管理入门
电池管理配置
电池管理说明
电池管理以下两种情况:
大核单核管理,主要指52x平台;
大小核双核管理,包括56x/55x/58x平台 ;
52x 平台配置
52x
平台只配置HCPU
;
HCPU
配置步骤如下:
备注
配置名称为“charger”,但实际内容包括了电量检测,充电设备选择,充电插入检测,充电pin配置,NTC温度检测等功能;
charger配置说明
配置项charge device select
选项包括两个:
using SIFLI charge
说明:使用芯片内部的充电模块,支持内部充电模块的平台包括52x;
using charge sgm40561
说明:使用外部芯片,客户外部充电芯片的型号不相同时,需要添加客户的外部充电芯片驱动及配置;
配置项chargeing measure vbat adc mode
选项包括两个:
charging measure vbat adc mode suspend
说明:adc采集电池电量的时候暂停充电;
chargeing measure vbat adc mode CURVE
说明:充电时的电量采集通过充电电池曲线的方式实现百分比转换;
小技巧
增加chargeing measure vbat adc mode 配置项的原因:充电时,同样百分比电压要比不充电时要高,如果采用不充电时的电池曲线,会导致电量百分比计算错误;
配置项charg pin number config
配置如下图:
```{image} png/battery_config_charger_pin.png
:class: bg-primary
:width: 800px
:align: center
```
选项包括两个:
配置pin的序号;
pin不存在的时候,配置-1;
pin存在的时候,序号采用rt_driver的序号配置,即:大核 0~95;小核96~191;
配置有效状态;
detect pin level is high if charge plug in
选中,充电插入检测pin,高有效;不选,充电插入检测pin,低有效
charging pin level is high when charging
选中,充电中状态,高有效;不选,充电中状态,低有效
detect pin level is high when charge full
选中,充满状态,高有效;不选,充满状态,低有效
配置NTC使用的adc及通道;
配置NTC的计算方式 ntc value computing method;
公式计算 formula compute
查表法 lookup table
配置项Use charger detect
含义:使能 充电插入检测;
56x/55x/58x平台配置
大小核双核管理的方式是指在小核启动前,大核自己负责电量采集,但小核启动后,由小核负责电量采集,并上报给大核使用;中断检测也会放在大核;所以配置和单核有些区别;
HCPU
配置如下:

LCPU
配置如下:

配置说明参考:charger配置说明
配置后的效果
配置完成后,效果如下:
插入和拔掉充电器,UI界面会弹出或关闭充电窗口;
充电中界面如下:

充电完成界面如下:

可以从log中看到以下打印信息:
电量采集Log
ch[7]voltage=41756;
[4350430] BAT: rt_adc_read: 41756
[4350435] BAT: battery_get_original_voltage: volt 4175
[4350442] BAT: battery_get_voltage: volt 4175 smooth volt: 4166
battery_get_voltage_ex, pre_adc = 4089, cur_adc =4166;
[4350457] BAT: original voltage:4104 filtered voltage: 4079;
[4350465] BAT: remain_percent(94)
log的电池电量:94%
。
温度监控Log
ch[4]voltage=7354;
[7022134] temp_ctrl: adc:7354, r:138433, t:18.48;
[7022148] temp_ctrl: core temp: 16;
[7022152] temp_ctrl: NTC ave temp:[18.33], mode:[NORmal Mode];
log的NTC温度:16℃
。
外部充电芯片添加
52x默认采用的内部充电模块,也可以配置使用外部充电芯片; 56x/55x/58x没有内部充电模块,必须配置使用外部充电芯片; 本章节重点描述,以外部充电芯片sgm40561为例,如何添加外部充电芯片; 参考步骤:
在“siflisoluton\sdk\customer\perpherals\”目录里下增加 新增充电芯片的文件夹。

修改kconfig文件,位于“siflisoluton\sdk\customer\perpherals\”。

编辑kconfig文件,参考下图,增加 SGM40561的控制宏。
注意:宏的依赖关系。

kconfig文件保存后,运行menuconfig,找到新增的宏;

在充电芯片文件夹,增加SConscript文件;

SConscript文件会用到Kconfig中定义的宏,只有在宏定义存在时才会编译;

修改驱动文件 驱动必须要实现的内容包括:接口初始化,注册charge设备;
驱动初始化,并开机自动运行;

一般,control的command中把能够实现的功能尽量都实现;
完整功能包括:

一般需要实现的功能,如下:
RT_CHARGE_GET_STATUS 获取充电状态;
RT_CHARGE_GET_DETECT_STATUS 获取插入检测状态;
RT_CHARGE_GET_FULL_STATUS 获取充满的状态;

<本文结束>电池管理入门