背景

在新基线上移植有关的代码时,在log中发现有关的东西,请教了有关的同事以后,解决了这个问题。

[   12.775863] pmi632_charger: smblib_eval_chg_termination: Couldn't read SOC value, rc=-22
[ 12.795914] bcl_soc:bcl_read_soc battery percentage read error:-61
[ 12.825428] SMB5 status - usb:present=1 type=0 batt:present = 1 health = 1 charge = 1
[ 12.833844] QPNP SMB5 probed successfully
[ 12.840495] bcl_soc:bcl_read_soc battery percentage read error:-61
[ 12.882968] of_batterydata_get_best_profile: No battery data found
[ 12.889234] QG-K: qg_load_battery_profile: Failed to detect battery type rc:-22
[ 12.896565] QG-K: qg_setup_battery: Failed to load battery-profile rc=-22
[ 12.911117] QG-K: qpnp_qg_probe: QG initialized! battery_profile=Unknown Battery SOC=50 QG_subtype=3 QG_version=QG_PMIC5 QG_mode=QG_V_I
[ 12.928491] of_batterydata_get_best_profile: No battery data found

参考高通文档:

  • 80-NL239-4_F_PMIC_SW_Driver_Overview_MSM8916.pdf
  • android\kernel\Documentation\devicetree\bindings\batterydata\batterydata.txt

相关的名词

缩小 全称 意义
FCC Full-Charge Capacity 满电荷电量
UC Remaining Capacity RC 剩余电量
CC Coulumb Counter 电量计
UUC Unusable Capacity 不可用电量
PC Percentage Charge 剩余电荷占FCC百分比
SoC State of Charge 电量百分比
OCV Open Circuit Voltage 开路电压,电池在开路状态下的端电压称为开路电压
RUC Remaining Usable Capacity RUC=RC-CC-UUC,剩余可用电量

使用设备树

假设对应的电池数据为:batterydata-qrd-skua-4v35-2000mah.dtsi

&soc {
mtp_batterydata: qcom,battery-data {
qcom,batt-id-range-pct = <15>;
#include "batterydata-qrd-skua-4v35-2000mah.dtsi"
};
};

电池曲线设备树解析

特性

首先创建相应的dtsi文件,

qcom,battery-type // 指明电池类型的字符串;  如`qrd-skua-4v35-6500mAh`
qcom,batt-id-kohm // 电池ID电阻 // 当一些电池模型的ID电阻在一定范围内浮动时,电池ID电阻可以作为单电池模型数组以支持多ID;
qcom,chg-term-ua= <100000>; // // 电池的结束充电电流,这里为100mA;就是电池满电的时候的电流;
qcom,default-rbatt-mohm; // 标称电池电阻值;正常温度下的电池电阻值(取中值)
qcom,fcc-mah=<3200>;// 电池完全充满的电池容量3200mAh;能放电多少的电流
qcom,max-voltage-uv =<4200000>; // 电池最大的额定电压;
qcom,rbatt-capacitive-mohm=<50>;//电池的电容电阻; 跟着修改;
qcom,v-cutoff-uv = <3400000>; //电池的截止电压,当电池电压低于此值时设备会自动关机;
qcom,flat-ocv-threshold-uv = <3800000>;// 可以被认为处于平坦放电后的开始下降的阈值;在表格中查找那个电流下降的很快的那个值;

查找表

温度查找表:qcom,fcc-temp-lut:一维查找表节点会将温度编码成fcc查找。该方法的单位摄氏度映射成毫安时。

qcom,fcc-temp-lut {
qcom,lut-col-legend = <(-20) 0 25 40 60>;
qcom,lut-data = <2064 2067 2067 2066 2063>;
};

电池ACC查找表:qcom,ibat-acc-lut,一个二维查找表,将温度和蓄电池电流电池ACC(表观电荷的能力)。该查找表的单位应在摄氏度的温度,在毫安IBAT与ACC毫安时。

qcom,ibat-acc-lut {
qcom,lut-col-legend = <(-10) 0 25 50>;
qcom,lut-row-legend = <0 250 500 1000>;
qcom,lut-data = <2022 2046 2046>,
<1151 1962 2024>,
<680 1864 2008>,
<51 1548 1970>;
};

内部温度电阻:qcom,rbatt-sf-lut,一个二维查找表对应于电池充电的内部温度和内部电阻

qcom,rbatt-sf-lut  {
qcom,lut-col-legend = <(-10) 0 25 50>;
qcom,lut-row-legend = <100 95 90 85 80>,
<75 70 65 60 55>,
<50 45 40 35 30>,
<25 20 16 13 11>,
<10 9 8 7 6>,
<5 4 3 2 1>,
<0>;
qcom,lut-data = <1355 273 100 81 74>,
<1352 273 100 81 74>,
<1268 280 102 83 75>,
<1197 286 106 85 76>,
<1143 285 110 87 78>,
<1109 281 116 90 79>,
<1090 272 124 94 82>,
<1080 269 134 100 85>,
<1077 267 133 108 91>,
<1079 266 111 100 90>,
<1090 266 101 83 76>,
<1116 267 101 84 77>,
<1156 268 103 86 79>,
<1205 270 103 88 83>,
<1266 274 106 88 82>,
<1337 276 108 87 78>,
<1431 276 107 85 79>,
<1560 284 104 84 78>,
<1680 293 99 81 75>,
<2078 306 99 81 77>,
<2438 318 100 83 78>,
<2875 333 102 85 80>,
<3411 354 104 87 81>,
<4092 392 108 89 84>,
<5118 448 116 92 86>,
<6939 551 121 95 85>,
<10433 791 120 90 81>,
<17054 1280 121 93 84>,
<29375 2077 133 101 92>,
<52518 3457 173 135 133>,
<230352 176376 150360 117059 92159>;
};

温度和百分比查找表:qcom,pc-temp-ocv-lut ,一个包含温度和百分比的开路电压2维查找表,查找表的单位是百分比和电压的关系

qcom,pc-temp-ocv-lut {
qcom,lut-col-legend = <(-10) 0 25 50>;
qcom,lut-row-legend = <100 95 90 85 80>,
<75 70 65 60 55>,
<50 45 40 35 30>,
<25 20 16 13 11>,
<10 9 8 7 6>,
<5 4 3 2 1>,
<0>;
qcom,lut-data = <4328 4328 4322 4318 4310>, //100%电量
<4234 4252 4252 4250 4245>, //....
<4164 4191 4193 4191 4186>,
<4098 4132 4137 4135 4131>,
<4036 4074 4084 4082 4078>,
<3980 4019 4035 4033 4029>,
<3932 3967 3990 3989 3985>,
<3891 3923 3950 3950 3945>,
<3856 3886 3909 3912 3909>,
<3825 3855 3862 3868 3867>,
<3800 3828 3829 3829 3826>,
<3782 3805 3807 3806 3804>,
<3768 3786 3789 3789 3786>,
<3753 3770 3775 3774 3772>,
<3737 3757 3764 3761 3755>,
<3718 3740 3753 3746 3734>,
<3695 3719 3733 3725 3712>,
<3671 3702 3705 3698 3684>,
<3650 3691 3677 3668 3656>,
<3630 3681 3670 3662 3651>,
<3619 3676 3668 3660 3649>,
<3605 3670 3665 3658 3647>,
<3590 3664 3662 3655 3644>,
<3573 3655 3658 3651 3641>,
<3553 3643 3652 3647 3635>,
<3529 3622 3639 3632 3618>,
<3498 3590 3605 3595 3576>,
<3460 3543 3547 3535 3519>,
<3401 3476 3467 3455 3443>,
<3306 3368 3347 3336 3313>,
<3000 3000 3000 3000 3000>;
};

基本上,根据厂家电池曲线表格对应数据编写填写DTSI即可(或者直接让厂商提供)。

高通Android平台 电池 相关配置的更多相关文章

  1. 高通Android平台硬件调试之Camera篇

    之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...

  2. 高通 android平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

  3. 高通Android display架构分析

    目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...

  4. 高通Android display分析【转】

    本文转载自:http://blog.csdn.net/zhangchiytu/article/details/6777039 高通7系列硬件架构分析 如上图,高通7系列 Display的硬件部分主要由 ...

  5. 高通android开发摘要

    一部分是开源的,可以从codeaurora.org上下载,还有一部分是高通产权的,需要从高通的网站上下载. 将高通产权的代码放到:vendor/qcom/proprietary 1. 设置bms一些参 ...

  6. Linux加载DTS设备节点的过程(以高通8974平台为例)

    DTS是Device Tree Source的缩写,用来描述设备的硬件细节.在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, ...

  7. 关于 Android 平台开发相关的有哪些推荐书籍?

    转自:http://www.zhihu.com/question/19579609 作者:Shan Huang 链接:http://www.zhihu.com/question/19579609/an ...

  8. 高通Android camera运行流程【转】

    本文转载自:http://blog.csdn.net/unicornkylin/article/details/13293295 1.总体架构 Android Camera 框架从整体上看是一个 cl ...

  9. 高通8x12平台开机画面制作工具

    你可能在网上看到很到关于手动更换手机开机图片的文章,想想自己的开机画面是小两口,好基友的照片多么个性啊.但是你有没有发现,网上下载的什么"一键生成"之类的,在你的手机上不能用啊,( ...

  10. 高通android开发缩写

    1.TLMM MSM TLMM pinmux controller,Qualcomm MSM integrates a GPIO and Pin mux/config hardware, (TOP L ...

随机推荐

  1. vue使用bus.js在兄弟组件传值

    A组件往B组件传递数据data 1.src下创建文件eventBus.js,内容: import Vue from 'vue' export default new Vue() 2.在A,B组件分别引 ...

  2. 11K+ Star!图解计算机网络、操作系统、计算机组成、数据库!

    大家好,我是 Java陈序员. 俗话说得好,面试造火箭,入职拧螺丝.我们在工作中,其实很少用到一些计算机底层知识,往往只要编码完事.但是,知其然还要知其所以然,我们不仅要做一个合格的"CV ...

  3. python+requests爬取B站视频保存到本地

    import os import datetime from django.test import TestCase # Create your tests here. import requests ...

  4. 快速入门一篇搞定RocketMq-实现微服务实战落地

    1.RocketMq介绍 RocketMQ起源于阿里巴巴,最初是为了解决邮件系统的高可靠性和高性能而设计的.在2016年开源分布式消息中间件,并逐渐成为Apache顶级项目.现在是Apache的一个顶 ...

  5. 【python爬虫案例】用python爬取百度的搜索结果!2023.3发布

    目录 一.爬取目标 二.展示结果数据 三.编写爬虫代码 3.1 请求头和cookie 3.2 分析请求地址 3.3 分析页面元素 3.4 获取真实地址 3.5 保存结果数据 四.同步讲解视频 五.附完 ...

  6. TCP协议分析工具TcpEngine V1.2.0使用教程

    概述 目前主流的网络数据分析工具主要有两类,一类是http协议分析工具,如fiddler,这类工具擅长对字符串类型协议分析:另一类是原始网络数据包的监听分析,如Wireshark,这类工具擅长分析网络 ...

  7. flask3之CBV和session

    flask的CBV CBV书写案例 from flask import Flask app=Flask(__name__) #FBA @app.route("/") def ind ...

  8. mvc5接口报错:The JSON request was too large to be deserialized的一种原因

    是mvc5版本的接口,接口使用了dynamic接收数组,json对象数组只有56个,length长度不到10万,但是提交就报The JSON request was too large to be d ...

  9. .net core 转 excel datatable list<t> 互转 xlsx

    using System; using System.Collections; using System.Collections.Generic; using System.ComponentMode ...

  10. EndNote里参考文献的期刊名显示错误怎么办?

      本文介绍EndNote文献管理软件导入文献引用时,期刊名称带有%J前缀从而不能正常显示的解决方法.   前期的文章中,我们多次介绍了文献管理软件EndNote的具体使用方法与技巧.而在使用EndN ...