检测电池电量的过程
时间:10-02
整理:3721RD
点击:
1. VBAT 的值是通过 ADC channel 0 检测得到。在 ADC 检测完成 adc_sche_task_complete_callback,
之后通过 adc_BMTSendilm()发消息到 UEM(User equipments adaptation).
2. UEM 收到消息 MSG_ID_BMT_ADC_MEASURE_DONE_CONF,消息内容中包含 voltage。
在 uembmt_adc_measure_done_cnf_hdlr 函数中,通过 uem_set_bat_status(bmt_status)将以下值保
存在 SRAM 中。 然后 uemdrv_pMIC_ind()--->custom_cfg_vbat_level_regulator()将 voltage 转换成对
应的 level。接着将这个 level 通过发消息 PMIC_VBAT_STATUS 给 MMI,
3.在 PwronCharger.c 里 mmi_charbat_main_evt_hdlr 中 case 到 PMIC_VBAT_STATUS,
最后调用 BatteryStatusIndication 来 update 电池电量信号栏。
注意:
在目前的设计中,只有连续三次检测到电池电量的等级无变化时,才会将电池电量更新,
VBAT_HIT_COUNT_BOUND=3。
Popup 框 的 显 示 , 例 如 BATTERY_LOW_WARNING , vapp_charger_other_evt_hdlr 中 收 到
EVT_ID_SRV_CHARBAT_REMIND_LOW_power 通知,就会通过 vapp_charger_notify show 相应的
popup 框。
电池等级格数对应的电压定义在
nvram_user_config.c
kal_uint32 const NVRAM_EF_CUST_HW_LEVEL_TBL_DEFAULT[] = {
......
/* Battery voltage Level */
3350000, /* Low Battery Power off */
3500000, /* Low Battery */
/* battery level 1 ~ 8 */
3550000, 3600000, 3650000, 3700000,
3750000, 3800000, 3850000, 3900000,
......
};
之后通过 adc_BMTSendilm()发消息到 UEM(User equipments adaptation).
2. UEM 收到消息 MSG_ID_BMT_ADC_MEASURE_DONE_CONF,消息内容中包含 voltage。
在 uembmt_adc_measure_done_cnf_hdlr 函数中,通过 uem_set_bat_status(bmt_status)将以下值保
存在 SRAM 中。 然后 uemdrv_pMIC_ind()--->custom_cfg_vbat_level_regulator()将 voltage 转换成对
应的 level。接着将这个 level 通过发消息 PMIC_VBAT_STATUS 给 MMI,
3.在 PwronCharger.c 里 mmi_charbat_main_evt_hdlr 中 case 到 PMIC_VBAT_STATUS,
最后调用 BatteryStatusIndication 来 update 电池电量信号栏。
注意:
在目前的设计中,只有连续三次检测到电池电量的等级无变化时,才会将电池电量更新,
VBAT_HIT_COUNT_BOUND=3。
Popup 框 的 显 示 , 例 如 BATTERY_LOW_WARNING , vapp_charger_other_evt_hdlr 中 收 到
EVT_ID_SRV_CHARBAT_REMIND_LOW_power 通知,就会通过 vapp_charger_notify show 相应的
popup 框。
电池等级格数对应的电压定义在
nvram_user_config.c
kal_uint32 const NVRAM_EF_CUST_HW_LEVEL_TBL_DEFAULT[] = {
......
/* Battery voltage Level */
3350000, /* Low Battery Power off */
3500000, /* Low Battery */
/* battery level 1 ~ 8 */
3550000, 3600000, 3650000, 3700000,
3750000, 3800000, 3850000, 3900000,
......
};