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 ...
随机推荐
- Mysql入门实战中
前面一章主要解说了mysql的入门学习.包括数据库,表的管理,以及对数据的增删改,本章主要介绍mysql最重要的语句select的使用方法.将select的大部分使用方法进行分别解说. 全部代码下载( ...
- python可变參数调用函数问题
一直使用python实现一些想法,近期在使用python的过程中出现这样一个需求,定义了一个函数.第一个是普通參数.第二个是默认參数,后面还有可变參数,在最初学习python的时候,都知道非keywo ...
- HTTP请求库——axios源码阅读与分析
概述 在前端开发过程中,我们经常会遇到需要发送异步请求的情况.而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率. axios是一个在近些年来非常火的 ...
- CF#315 C
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...
- 1.jdk安装和环境配置
这个简单,但是记不住,非要网上搜一遍不可: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Progr ...
- 危险的input 微博的过去
更改uid post地址不变
- linux 点命令
cat a date . a Mon Jun :: CST linux .(点命令):读取并且在当前的shell中执行文件中的命令
- java 基础 —— 文件操作(File)
1. 基本成员: File.separator public class File implements Serializable, Comparable<File> { private ...
- [APIO2018]Circle selection
https://www.zybuluo.com/ysner/note/1257597 题面 在平面上,有\(n\)个圆,记为\(c_1,c_2,...,c_n\).我们尝试对这些圆运行这个算法: 找到 ...
- 51Nod 1522 上下序列 —— 区间DP
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1522 区间DP,从大往小加: 新加入一种数有3种加法:全加左边,全 ...