高通电池管理基于qpnp-vm-bms电压模式

电池管理系统之神奇的BMS(二) 电量(SOC)算法 除了参数的监控与保护之外,作为BMS系统,其中最重要的功能还有一项,那便是SOC的计算。      SOC,全称是State of Charge,系统荷电状态,也叫剩余电量,代表的是电池使用一段时间或长期搁置不用后的剩余容量与其完全充电状态的容量的比值,常用百分数表示。      其取值范围为0~100,当SOC=0时表示电池放电完全,当SOC=100时表示电池完全充满。      那么SOC有什么意义呢?      任何一个产品,对于一般的终端用户而言,如果对其直接提供电压、电流之类的 阅读详情

CV:Constant Voltage恒压

SMMB charger:Switch-ModeBattery Charger and Boost peripheral开关模式电池充电器和升压外围设备

OCV:Open circuitvoltage

EOC:End OfCharge充电结束

UUC:UnusableCapacity不可用电量

一、背景介绍

高通(Qualcomm)移动广泛集成了PMIC(电源管理IC),其BMS(Battery Management System,电池管理系统)负责监测、管理池的电量、健康、充放电安全等。qpnp-v-bms即Qualcomm PMIC Next-Gen Platform的Voltage Mode-BMS,是基于电池“电压模式(Voltage Mode”的算法和驱动框架,多用于安卓手机的内核。

二、qpnp-vm-bms电压模式简介

  • 电压模式(Voltage Mode)
    简单来说,是根据电池端电压估算剩余电量(SOC, State Of Charge)、剩余容量(mAh)等关键参数。而另一种常见的模式是库仑计数(Coulomb Counter,电流积分法)。
  • 特点
    • 不依赖库仑计数器(Coulomb Counter),而是基于对电池电压曲线匹配
    • 模型依赖电池电压与SOC的关系表
      -般对成本较低、硬件资源有限的产品较为适用
    • 精度低库仑计数法,但实现简单
    • 更依赖温度、电池工况等校正

三、qpnp-vm-bms主要功能

  1. 电池剩余容量估算(SOC)
    • 依据电电压(OCP Open Circuit Voltage)、温度及查表法(Voltage to SOC table)进行估算
  2. 充电状态管理
    • 充满、放空判定
    • 控制电流程
  3. 健康与保护
    • 欠压、过压、电池温度过高/过低监控
    • 保护电池避免过度放电/过度充电
  4. 参数接口导出
    • 向用户空间(Android HAL、BatteryService,sysfs)提供电池状态参数,如当前剩余百分比、状态(正在充电/放电)、健康状态等
      . 与PMIC/充电子系统协作
    • 协调充电管理IC,动态调节充电电流、电压等

四、核心实现/工作流程

  1. 硬件采样
    • 从PMIC ADC通道定期读取电池电压(有时附加温度传感器)
    • 部分情况会采集阻抗估算
  2. 查表算法(Voltage-SOC Table)
    • 内核驱动内置或DT中加载电池电压到SOC的特性表
    • 实时根据当前电压、温度查表得到对应SOC
    • 温度系数可能参与补偿(不同温度下电压-SOC特性曲不同)
  3. 状态机推进
    • 进入/退出充电、放电、空电、满电、上电等状态,更新对应flag
    • 若电压临界则触发报警/保护
  4. 参数导出机制
    • 在/sys/class/power_supply/bms/等节点下导出如capacity、voltage_now等属性
    • 上层(Android Framework/Service)定期轮询读取

五、使用/配置方法(详细方法参加下方)

1. 设备树(Device Tree)配置

通常需在dts文件(pm8998.dtsi等)中写入类似如下节点:

bms: qpnp-vm-bms@... {
    compatible = "qcom,qpnp-vm-bms";
    io-channels = <&pm8998_adc ADC_CHANNELAT_VOL>;
    q,voltage-soc-table = < ... 配置具体的电压与SOC表 ... >;
    qcom,temperature-soc-correction = < 可选,温度修正表 >;
    /* 其它参数如电池容量、电压上下限等 */
};

2. 内核驱动

  • 路通常在drivers/power/qcom/qpnp-vm-bms.c
  • 编译选项依赖于CONFIG_QPNP_VM_BMS

3. 用户空间/验证使用

  • 电池状态可通过如下sysfs节点读取:
    cat /sys/class/power_supply/bms/capacity        # SOC(%)
    cat /sys/class/power_supply/bms/voltage_now     # 当前电压(uV)
    cat /sys/class/p_supply/bms/temp            # 电池温度(0.1°C)
    
  • 可通过logcat、dmesg监控BMS相关日志
  • 使用BatteryService/Settings观察效果

4. 典型应用场景

  • 中低端机型、IoT智能设备等不需要精细电量管理的场景
  • 没有专门库仑计硬件支持时

Android 5.1-7.1 高通驱动修改 - 上篇 目录1:打开驱动日志 2:移除emmc版本检查 3:在系统崩溃时关闭qload mode 4:打开关机充电功能 5:打开lk串口日志6:高通8909 驱动修改充电电流限制[kernel]7:bootloader中添加emergency download mode (组合按键开机)8:高通平台禁用热插拔 9:高通平台电池直冲实时刷新电量10:打开wcd-mbhc-v2.c 耳机插拔的日志 11:打开q6asm.c 驱动日志12:usb或dc充电插入时打开电源 13:修复MSM8909 4.4 音频声音跳变呼 阅读详情

相关推荐

Xilinx Vitis HLS教程1--Vitis HLS概述[01/12]

Xilinx Vitis HLS教程[01/10]前言1. Vitis HLS简介1.1 软件工程师的设计原则1.1.1 简介1.1.2 吞吐量和性能1.2.3 架构问题1.2.4 FPGA编程的3大范式1.2.4.1 生产者-消费者范式1.2.4.2 流式数据范式1.2.4.3 流水线范式1.2.5 3种范式结合 前言 项目中使用到Xilinx Zynq UltraScale+ MPSoC ZCU102 开发板,领导指示研究"xilinx软件自带的c语言综合器"。对于一个硬件一窍不通的我来说,甚至不知道

B10030607的博客 5232

时钟MUX电路结构的时序约束方法分析

一、最简单的设置 对于时钟MUX而言,其output_pin上的时钟在任一时刻一定唯一。可以使用如下命令: set_clock_exclusivity -output output_pin [-type mux | user_defined] ...

Jackiezhang1993的博客 1万+

【路径规划】Theta_star算法机器人栅格地图最短路径规划【含Matlab源码 2618期】

Theta_star算法机器人栅格地图最短路径规划 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 361

[AI] 企业内网部署大模型的三种常见方案:从“能用”到“好用”的技术选型指南

企业内网部署大模型的三种方案解析:本地模型安全但门槛高,平台方案(如Dify)最平衡推荐,混合架构适合进阶需求。关键路径是渐进式演进,从快速验证到平台化建设,核心在于流程优化而非单纯选模型。数据安全、成本可控和工程落地能力是决策重点。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 767

Open3D (C++)球旋转算法(BPA)三维建模

球旋转算法用于点云三维建模的C++代码实现。

点云侠的博客 1770

华为OD机试2025C卷 - CPU调度策略 (C++ & Python & JAVA & JS & GO)

华为OD机试 2025C卷 CPU调度策略,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1295

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

最近在搞一个Linux项目,由于WSL2中需要用到声音外放,无奈只能潜心研究。后来就使用了一种折中的方式替代,那就是pulseaudio。目前来讲WSL2对硬件外设的支持还是不太友好,关于USB的支持我之前在其他文章中已经论述过了,这里不讨论。1、Windows11别忘记打开声音2、可能有一定延迟,因为是通过网络传输的。3、效果的话只能见仁见智了,如果不能满足要求就安装一个实实在在的Ubuntu吧!

jiexijihe945的博客 4530

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: GCC/G++ 编译器从源码到可执行文件的全流程解析
下一篇: PADS Logic软件及相关工具
scriptsboy
博客等级 码龄17年 191粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scriptsboy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值