电池管理入门

电池管理介绍

电池管理包括入门篇和提高篇;

入门包括电池管理配置、外部充电芯片驱动添加等;

进阶包括电池管理的代码框架、双核和单核电池管理的区别、电量处理逻辑、ADC配置说明;

电池管理入门的作用在于通过配置让硬件开始工作;

对于电池管理配置熟悉的话,可以跳转到 电池管理进阶

电池管理入门


电池管理配置

电池管理说明

电池管理以下两种情况:

  • 大核单核管理,主要指52x平台;

  • 大小核双核管理,包括56x/55x/58x平台 ;


52x 平台配置

52x平台只配置HCPU

HCPU配置步骤如下:

  • 配置使能ADC

    ../../_images/battery_config_adc.png
  • 配置chager

    ../../_images/battery_config_charger.png

备注

配置名称为“charger”,但实际内容包括了电量检测,充电设备选择,充电插入检测,充电pin配置,NTC温度检测等功能;

charger配置说明

  1. 配置项charge device select

    选项包括两个:

    • using SIFLI charge

      说明:使用芯片内部的充电模块,支持内部充电模块的平台包括52x;

    • using charge sgm40561

      说明:使用外部芯片,客户外部充电芯片的型号不相同时,需要添加客户的外部充电芯片驱动及配置;

  2. 配置项chargeing measure vbat adc mode

    选项包括两个:

    • charging measure vbat adc mode suspend

      说明:adc采集电池电量的时候暂停充电;

    • chargeing measure vbat adc mode CURVE

      说明:充电时的电量采集通过充电电池曲线的方式实现百分比转换;

小技巧

增加chargeing measure vbat adc mode 配置项的原因:充电时,同样百分比电压要比不充电时要高,如果采用不充电时的电池曲线,会导致电量百分比计算错误;

  1. 配置项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

      选中,充满状态,高有效;不选,充满状态,低有效

  1. 配置项charg adc config

    配置如下图:

    ../../_images/battery_config_charger_adc.png

    选择合适的adc以及合适的通道;

  2. 配置项NTC temp config

    ../../_images/battery_config_charger_ntc.png

    选项含义:

  • 配置NTC使用的adc及通道;

  • 配置NTC的计算方式 ntc value computing method;

    • 公式计算 formula compute

    • 查表法 lookup table

  1. 配置项Use charger detect

含义:使能 充电插入检测;


56x/55x/58x平台配置

大小核双核管理的方式是指在小核启动前,大核自己负责电量采集,但小核启动后,由小核负责电量采集,并上报给大核使用;中断检测也会放在大核;所以配置和单核有些区别;

HCPU配置如下:

../../_images/battery_config_56x_hcpu.png

LCPU配置如下:

../../_images/battery_config_56x_lcpu.png

配置说明参考:charger配置说明


配置后的效果

配置完成后,效果如下:

  1. 插入和拔掉充电器,UI界面会弹出或关闭充电窗口;

充电中界面如下:

../../_images/battery_charging.png
充电完成界面如下:
../../_images/battery_charg_end.png
  1. 可以从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为例,如何添加外部充电芯片; 参考步骤:

  1. 在“siflisoluton\sdk\customer\perpherals\”目录里下增加 新增充电芯片的文件夹。

../../_images/battery_charger_drvier_0.png
  1. 修改kconfig文件,位于“siflisoluton\sdk\customer\perpherals\”。

../../_images/battery_charger_drvier_1.png

编辑kconfig文件,参考下图,增加 SGM40561的控制宏。

注意:宏的依赖关系。

../../_images/battery_charger_drvier_2.png

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

../../_images/battery_charger_drvier_3.png
  1. 在充电芯片文件夹,增加SConscript文件;

../../_images/battery_charger_drvier_4.png

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

../../_images/battery_charger_drvier_5.png
  1. 修改驱动文件 驱动必须要实现的内容包括:接口初始化,注册charge设备;

  • 驱动初始化,并开机自动运行;

../../_images/battery_charger_drvier_6.png
  • 一般,control的command中把能够实现的功能尽量都实现;

完整功能包括:

../../_images/battery_charger_drvier_7.png

一般需要实现的功能,如下:

RT_CHARGE_GET_STATUS				获取充电状态;
RT_CHARGE_GET_DETECT_STATUS		    获取插入检测状态;
RT_CHARGE_GET_FULL_STATUS			获取充满的状态;
../../_images/battery_charger_drvier_8.png

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