Android电池电量跳变
高通平台8916/8917
对于第三方Fuel Gauge,跳变多是因为IC内部算法的问题,这样我们可以通过驱动来规避。
例如:usb在位时,要阻止电量的向下跳变。
当电量越级跳变时,要在驱动中能检测到。
问题情形:
1.电量跳变到50%或偏差过大
2.电池ID脚接地
3.温度脚来判断电池是否在位
推测原因:
判断电池在位的方法:
qpnp-linear-charger.c
enum bpd_type{
BPD_TYPE_BAT_ID="bpd_id",
BPD_TYPE_BAT_THM="bpd_thm",
BPD_TYPE_BAT_THE_BAT_ID="bpd_thm_id",
}
先在设备树查找bpd是否有值
of_property_read_string(chip->spmi->dev.of_node,"qcom,bpd-detection",&bpd)
找不到的话,用代码的定义(通过温度脚判断)
chip->cfg_bpd_detection = BPD_TYPE_BAT_THM;
把参数配置到结构体中。
计算电池容量:
get_prop_capacity(struct qpnp_lbd_chip *chip)
如果电池不在位并且或为假电池,返回默认电量(50)
电池在位检测函数:(调用流程)
get_prop_batt_present(struct qpnp_lbc_chip *chip)
->qpnp_lbc_read(chip,chip->bat_if_base+BAT_IF_PRES_STATUS_REG【0x08】,®_val,1)
->__qpnp_lbc_read(spmi,base,val,count)
->spmi_ext_register_read(spmi->ctrl,spmi->sid,base,val,count)
->spmi_read_cmd(ctrl,SPMI_CMD_EXT_READL,sid,addr,len-1,buf)
->ctrl->read_cmd(ctrl,opcode,sid,addr,bc,buf)
温度检测函数:
get_prop_batt_temp(struct qpnp_lbc_chip *chip)
如果是假电池并且电池不在位,返回默认温度
qpnp_vadc_read(chip vadc_dev,LR_MUX1_BATT_THEM,&results)
如果读取失败,返回默认温度
->if(channel==VBAT_SNS)
读电压
qpnp_vadc_conv_seq_request(vadc,ADC_SEQ_NONE,channel,result)
读温度
qpnp_vadc_conv_seq_request(vadc,ADC_SEQ_NONE,DIE_TEMP,&die_temp_result)
读补偿
qpnp_vbat_sns_comp(&result->physical,vadc,die_temp_result.physical)
最后返回
qpnp_vadc_con_seq_request(vadc,ADC_SEQ_NONE,channel,result)
此项目通过软件计算电量,没有专用的电量计芯片
计算电量的要素:温度 电压 电流
虚拟电量计 qpnp-vm-bms.c
所以一旦温度采集不准,必导致电量百分比计算错误
Android电池电量跳变的更多相关文章
- Android 电池电量进度条,上下滚动图片的进度条(battery)
最近,制作一个app,需要模拟一个电池电量的进度条,根据电量多少来设置百分比,进度条不断上下滚动,就像平时手机充电一样的电池电量进度条.我就自定义view实现了电量进度条.修改图片就可以达到自己想要的 ...
- android电池管理系统从上层的java到底层驱动的调用(转载)
1.概述 随着移动智能设备的快速发屏,电池的续航能力在很大情况下诱导了大众消费者的购买选择,android系统对电源管理的合理与否直接影响到电池的续航能力,而电池系统作为其中的一部分,主要用于对电池状 ...
- android电池管理系统
原文:http://www.2cto.com/kf/201408/326462.html 1.概述 随着移动智能设备的快速发屏,电池的续航能力在很大情况下诱导了大众消费者的购买选择,android系统 ...
- Delphi XE5 android 获取电池电量
uses AndroidAPI.JNI.GraphicsContentViewText, AndroidAPI.JNI.JavaTypes, AndroidAPI.JNI.OS; function B ...
- Android中获取电池电量
/** * * @author chrp * *显示当前电池电量 */ public class MainActivity extends Activity { private TextView tv ...
- Android中吐司当前电池电量
/** * * @author chrp * *土司当当电池电量 */ public class MainActivity extends Activity { class BtteryReceive ...
- 【转】android 电池(二):android关机充电流程、充电画面显示
关键词:android 电池关机充电 androidboot.mode charger关机充电 充电画面显示 平台信息:内核:linux2.6/linux3.0系统:android/android4. ...
- android 电池(二):android关机充电流程、充电画面显示【转】
本文转载自:http://blog.csdn.net/xubin341719/article/details/8498580 上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下a ...
- android电池信息简介
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
随机推荐
- mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊
mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊 dao方法 public List< ...
- JAVA —— String is immutable. What exactly is the meaning? [duplicate]
question: I wrote the following code on immutable Strings. public class ImmutableStrings { public st ...
- 一张图搞定OAuth2.0 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上 彻底关闭Excle进程的几个方法 (七)Net Core项目使用Controller之二
一张图搞定OAuth2.0 目录 1.引言 2.OAuth2.0是什么 3.OAuth2.0怎么写 回到顶部 1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常 ...
- [Python]基于权重的随机数2种实现方式
问题: 比如我们要选从不同省份选取一个号码.每一个省份的权重不一样,直接选随机数肯定是不行的了,就须要一个模型来解决问题. 简化成以下的问题: 字典的key代表是省份,value代表的是权重,我们如今 ...
- uva 10452 Marcus
Problem I Marcus, help! Input: standard input Output: standard output Time Limit: 2 Seconds "Fi ...
- http访问方式
package com.m.billingplug.util; import java.io.IOException; import java.net.UnknownHostException; im ...
- [JSOI 2008] 星球大战
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1015 [算法] 考虑离线 , 将删点转化为加点 , 用并查集维护连通性即可 时间复杂 ...
- Python中关键字global与nonlocal的区别
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634终于下定决心学习Python了.既然 ...
- TI BLE : GAP Bond Manager
// Setup the GAP Bond Manager { uint32 passkey = 0; // passkey "000000" uint8 pairMode = G ...
- 堆和栈的区别【以java为例潜入分析】
Java的堆是一个运行时数据区,类的对象从中分配空间,这些对象通过new等指令建立. 堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动 ...