展锐Android13电池问题导致系统的崩溃,(2)电池电压计算和电池曲线

  先看is_bat_low函数的代码:

#ifndef LOW_BAT_VOL
//#  define LOW_BAT_VOL		3400
#define LOW_BAT_VOL		3672
#endif
#ifndef LOW_BAT_VOL_CHG
//#  define LOW_BAT_VOL_CHG	3500 
#define LOW_BAT_VOL_CHG	3719
#endif

int is_bat_low(void)
{
	int32_t vbat_vol;
	uint16_t comp_vbat;
    ...............
	if (charger_connected()) {
		comp_vbat = LOW_BAT_VOL_CHG;
	} else {
		comp_vbat = LOW_BAT_VOL;
	}
	vbat_vol = sprdfgu_read_vbat_vol();
	dprintf(ALWAYS,"sprd_chg: %s vbat_vol:%d,comp_vbat:%d\n",
		__func__, vbat_vol, comp_vbat);
	if (vbat_vol < comp_vbat)
		return 1;
	else
		return 0;

}

函数包含充电状态、非充电状态电池电量是否过低的检查,3400、3500是原有的电压宏定义,计量单位mV(毫伏),这个定义的标准需要参考当前电池的电池曲线,根据配置的dts文件查找,
查到的是:

................
<3706000 11 >,
..............
<3687000 7  >,
<3684000 6  >,
<3680000 5  >,
<3672000 4  >,
<3649000 3  >,
<3610000 2  >,
................

左面参数是电压,uV(微伏);右侧是电池电量百分比,开机后显示的电池电量和电池电压的对应关系就在这。好吧,my god,差了好多,这是只要有电就开机。

参考电池曲线对应的电压标准重新定义,让他电量低于一个标准就没法从开机。

充电状态下,电池电压会略微高点,根据实测值调整。

本以为到这就结束了,又碰到一种电池,低压状态下电池输出功率不够,电压变化非常大,还要继续改。

手机上看到的电池电量也是这么计算,电池老化后,电压波动也会非常大,显示的结果就是电池电量掉的非常快。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值