MTK手机平台充电原理

2023-11-13

EPT GPIO初始化文件 @bsp_gpio_ept_config.c

1 知识点总结
1.1 Official 参考充电电路
Figure 1-1 参考电路

VCHG:USB正极
VCDT:VCHG Charger Detect充电电压检测脚
ISENSE:充电电流检测电阻的正极
BATSNS:充电电流检测电阻的负极
BAT:电池正极引脚
BAT_ON:电池NTC (热敏电阻) 引脚
RECHARGING_VOLTAGE: 回充电压

1.2 5V充电器电压设置
@ cust_charging.h
#define  V_CHARGER_MAX       6500    // 6.5 V 充电器的电压最大值
#define  V_CHARGER_MIN       4400    // 4.4  充电器的电压最小值
#define  V_CHARGER_ENABLE     0      //1:ON , 0:OFF  //充电电压保护使能

1.3 配置电池温度检测相关参数
@ cust_battery_temperature_table.h
1.3.1 热敏电阻
目前热敏电阻有两种规格:10K和47K;由电池工程师提供参数。
#define BAT_NTC_10 1
#define BAT_NTC_47 0

1.3.2 在配置热敏电阻参数的同时,也要根据原理图,配置温度检测上拉电阻以及参考电压
#define RBAT_PULL_UP_R             16000 // Unit: Ohm,对应原理图中的R311
#define RBAT_PULL_UP_VOLT          2800   // Unit: micro voltage,对应原理图中的VBATREF

BattVoltToTemp函数就是任何将ADC读出的电压值转换为温度值,该函数其实就是做了两个运算,运算的原理如下图所示。
Figure 1-2 MTK平台NTC温度值计算

1.4 配置充电电流
@ cust_charging.h

1.5 配置电流检测电阻
@ cust_battery_meter.h or @ cust_charging.h
#define CUST_R_SENSE         56  // Unit: micro Ohm, 56 mOhm

该电阻的两端是BATSNS & ISENSE。

Figure 1-3 充电电流检测电阻

1.6 Dead Battery Voltage
@ cust_charging.h
#define V_0PERCENT_TRACKING             3410  /* 3410mV */

1.7 各温度下最大放电容量,内阻-电压表,放电深度-电压表
电池充放电参数由电池工程师向电池厂家索取。目前MTK支持-10°、0°、25°、50°。
1.7.1 各温度下最大放电容量 (Unit: mA)
@ cust_battery_meter.h

Q表示各温度下最大的放电容量
#define Q_MAX_POS_50 1750  //Cmax, 50°最大放电容量1750 mA
#define Q_MAX_POS_25 1763 // 25°
#define Q_MAX_POS_0 1756  // 0°
#define Q_MAX_NEG_10 1726 // -10°

High Voltage:
#define Q_MAX_POS_50_H_CURRENT 1737 //Cmax_400mA, 50°最大放电容量1337 mA
#define Q_MAX_POS_25_H_CURRENT 1717  // 25°
#define Q_MAX_POS_0_H_CURRENT 1214  // 0°
#define Q_MAX_NEG_10_H_CURRENT 966  // -10°

1.7.2 各温度下的内阻-电压表和放电深度-电压表
@ cust_battery_meter_table.h

Figure 1-4 ZCV curve measured SOP

Figure 1-5 Battery Voltage Measure

CAR:库仑计
Cmax/Qmax:电池容量
DOD:Depth of Discharging,放电深度百分比;每次开机后初始的DOD,通过OCV方式算出来或者使用RTC保存的值
mAh:放电容量
OCV:Open Circuit Voltage,开路电压
R (battery):电池内阻,(V2-V1)/400mA
SOP:Standard Operation Procedure
VC (=VBAT):Voltage of Closed Circuit,闭路电压,Charge ADC采样的到电压就是闭路电压
ZCV:Zero Current Voltage,零电流-电压,一般指ZCV的2个表格(开路电压-放电深度百分比,开路电压-电池内阻)

在ZCV曲线里面,还有一栏是电池内阻R (battery),在cust_battery_meter_table.h里面就是r_profile_tX[51],那这个有什么用呢?
公式:oam_v_ocv_1 (OCV) = vol_bat (VC) + 补偿电压(IR)。
在手机端读取的电池电压是vol_bat (VC),实际电池电压是oam_v_ocv_1 (OCV),两者之间由于电池特性或者充电线会有一些差异,这时候就会需要一个补偿电压来让手机端显示百分比更准确,这就是R (battery) 的作用。

Figure 1-6 MTK OCV和SOC计算原理

线性插值方法具体原理如下图。
Figure 1-7 Linear Interpolation Method

从电池供应商表格中提取 R-OCV 对应温度的r_profile_tX[51]数组
从电池供应商表格中提取DOD-OCV到对应温度的battery_profile_tX[51]数组中
注意数组的元素个数都要一致。
系统开机后,会利用预先测得的分布在-10、0、25、50摄氏度下的 ZCV 表,结合真实温度,动态重构一张当前温度下的ZCV 表格,重写TEMPERATURE对应预留的空ZCV数组battery_profile_temperature[51]

假如产品的电压范围设置在4.2V - 3.4V,并且该电压范围对应的容量大小是2000mA,则每个百分点就是20mA。

1.8 充电算法
@ cust_battery_meter.h
考虑接触点电阻,电池接触点处一般会有20~40 mOhm的电阻,这个阻值在大电流 (1.5-2A) 充电的时候,会对充电算法有一定的影响。所以在调试的时候要考虑这个电阻的存在,尤其是大电流充电的时候。在函数mtk_imp_tracking中计算开路电压 (OCV)的时候,可以通过宏定义FG_METER_RESISTANCE的调整去补充这个接触点电阻。

2 Documents
《Battery_Charging_Introduction_for_Customer_V1.0.pdf》
《Battery_Customer Document_MT65xx.pdf》
《Fuel_Gauge_introduce.pdf》
《Fuel_Gauge_Application_Notes_V1.0.pdf》
《Fuel_Gauge_Battery_ZCV_Table_Test_SOP_V1.0_20120716.pdf》

3 DOD-OCV的百分数excel计算法
3.1 excel
1) 点击B1 然后在上面的编辑栏输入 (A1/100)

2) 右键“设置单元格格式(F)...”

3) 剩下的其他单元格只要把鼠标拖到B1的右下角有个 +号此时点击鼠标左键下拉就行了
4) 折线图的生成
从excel选中2列数据,点击“插入”->“插入折线图”,excel会生成直观折线图。

3.2 word

4 Abbreviations
GM 3.0:MTK Gauge Master

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MTK手机平台充电原理 的相关文章

  • Vue的大坑 input手动赋值后无法修改问题

    当获取数据之后 手动赋值给input 会出现渲染成功 能读取数据 但是无法修改情况 代码如下 根据ID查询返回订单信息 async editOrdersAddress orderId const data res await this ht
  • 力学应用计算机实例,PART 5 相图计算机计算 相图计算与 及扩散动力学模拟及其应用实例.ppt...

    PART 5 相图计算机计算 相图计算与 及扩散动力学模拟及其应用实例 ppt 亚点阵模型假设 每一亚点阵内的原子只与其他亚点阵内的原子相邻 这一点可以通过亚点阵的选取来保证 最近邻相互作用是常数 各亚点阵之间的相互作用忽略不计 过剩自由能
  • 前端开发模式的迭代

    前端开发模式的迭代 前端开发给人的印象一直是变化太快 不断出现新的框架 库 开发模式 这些开发模式有什么不同 为什么要不断迭代 本文将分享几种常见的前端开发模式 讲解前端开发模式的演变过程 传统开发模式 前端是 Web 应用的组成部分 前端
  • OpenSSL RSA加密和解密

    rsa加密的密钥格式常见的有两种 一种是PKCS 1 密钥头为 BEGIN RSA PUBLIC KEY 一种是PKCS 8 密钥头为 BEGIN PUBLIC KEY 以字符串公钥为例 对PKCS 1格式的密钥加载使用的函数是PEM re
  • vue自定义指令给指定元素添加水印

    在utils创建一个waterMark js文件 import Vue from vue Vue directive watermark update el binding gt function addWaterMarker parent
  • 基于管道的popen和pclose函数

    标准I O函数库提供了popen函数 它启动另外一个进程去执行一个shell命令行 这里我们称调用popen的进程为父进程 由popen启动的进程称为子进程 popen函数还创建一个管道用于父子进程间通信 子进程要么从管道读信息 要么向管道
  • CSS弹性布局

    弹性布局 弹性布局 也称为flex box 常用于一些自适应网站 可以让网站随浏览器大小变化而变化的网站 从而给用户更好的使用体验 基本属性 1 声明弹性布局 通过display flex 可以让元素声明为flex容器 简称 容器 而它的所
  • android中完全退出当前应用程序的四种方法

    Android程序有很多Activity 比如说主窗口A 调用了子窗口B 如果在B中直接finish 接下里显示的是A 在B中如何关闭整个Android应用程序呢 本人总结了几种比较简单的实现方法 1 Dalvik VM的本地方法 andr
  • Flutter 获取验证码倒计时实现

    Timer countdownTimer String codeCountdownStr 获取验证码 int countdownNum 59 void reGetCountdown setState if countdownTimer nu
  • 机器学习随笔

    1 随机森林在大数据量和feature较多的时候效果比较好 反之的环境下还不如单独的决策树 森林中的每棵树都是独立的 99 9 不相关的树做出的预测结果涵盖所有的情况 这些预测结果将会彼此抵消 少数优秀的树的预测结果将会超脱于芸芸 噪音 做
  • 【Spring

    Resource Resource 接口 介绍 核心方法 常见接口 优缺点 内置 Resource 实现 UrlResource ClassPathResource FileSystemResource PathResource Servl
  • 多线程(C++)临界区Critical Sections问题

    多线程中用来确保同一时刻只有一个线程操作被保护的数据 InitializeCriticalSection cs 初始化临界区 EnterCriticalSection cs 进入临界区 操作数据 MyMoney 10 所有访问MyMoney
  • 重塑自监督学习: DINO 网络如何颠覆视觉特征表示的常规方法

    欢迎关注 CVHub 官方微信公众号 Title Emerging Properties in Self Supervised Vision Transformers Paper https openaccess thecvf com co
  • 解决idea中Cannot resolve method ‘setAttribute

    在学习jsp的时候 在idea上写代码遇上request setAttribute中setAttribute爆红错误 由于找到了解决方法 错误不想复现了 即下面的setAttribute爆红 但是可以正常运行 网上找了好多解决方法但是不适用
  • AD官方八月直播学习笔记-02

    文章目录 答疑 PCB导入logo 安装脚本 prjscr 在sripting syatem里的global projects里面点击安装 找到对应脚本文件 文件 运行脚本 弹出框里点load 位图文件 默认配置 界面里可以直接更改 框选
  • rpm包的rpmbuild spec文件详解

    http machael blog 51cto com 829462 213477 上一篇日志写到 为什么要制作rpm包 以及如何使用 src rpm文件生成rpm包 最后部分还看到 src rpm的内容 实际上 就是由 tar gz源码
  • JAVA单元测试框架-5-timeOut测试

    这篇先来介绍 Test注释下的一个属性 timeOut 主要用来超时判断 详细点说 如果哪个测试方法需要监听执行的时间 那么就可以考虑采用timeOut属性 例如 实际的接口测试中 加入登录接口时间不能超过3秒中 下面来看看如何监控这个方法
  • python为什么int()无法将float转化成int

    原因可能是你用了np zeros count 它的默认数据类型是float64类型的 而且不管你往这个np列表传入什么类型的值 或者后期怎么int 都没用 因为它会自动又改为float类型 并且这个float类型可不是原生的浮点类型 虽然

随机推荐

  • 【手势识别小车】---------(1)项目发起计划与准备

    嵌入式学习从大一到大二已经有两年了 学习了很多零零散散的东西 单片机 通信 视觉 ROS等等 但是没有进行系统的管子所以设计如下一个项目 作为自己阶段性的总结 功能设计 1 小车根据指令前进 后退 转向 停止 2 上位机摄像头进行人脸识别
  • GitHub 搜索技巧

    GitHub 作为目前广大程序猿最大的游乐场 在今年 6 月被 微软 以 75 亿美元价值的微软股票收购 GitHub 再次成为业界讨论的焦点 GitHub 以自由开放的定位吸引了相当多的个人开发者和企业 不断发布和更新相当好用的软件和工具
  • 毕业了

    自己的学生时代快告一段落 即将迎来的是工作时代 对未来充满了好奇 兴奋 希望我保有激情的去面对工作 在写论文的过程中 我也有对自己的论文感兴趣的 比如对Hadoop 但是对于另外一方面没了兴趣 也没有怎么深究 因此 这也是自己的论文的一个遗
  • Spock单元测试框架介绍及在美团优选的实践_第二章(static静态方法mock方式)

    Spock单元测试框架介绍 文章目录 Spock单元测试框架介绍 前言 一 什么是Spock单元测试框架 二 使用步骤 1 引入maven依赖 2 创建GoodsService订单业务类进行单测 3 创建Groovy class类 4 创建
  • pip安装yaml出错问题及解决方案

    pip安装yaml出错问题及解决方案 在使用Python开发过程中 可能会遇到需要安装第三方库的情况 而有时候我们在使用pip install安装某些库时 会遇到一些错误提示 其中就有可能会出现 ERROR Could not find a
  • python删除列数据,另存为xls格式带表头

    使用python删除列数据 import pandas as pd from pandas import DataFrame data pd read excel r 统计 xls sheet name Sheet1 del data 统计
  • LoadRunner 引入在eclipse中写的java项目,并介绍LR的使用(不是简单的打印语句项目)

    摸索了4天中终于在LoadRunner中把java脚本编译通过了 可以正常的运行Java脚本进行性能测试 一 介绍环境 eclipse JDK1 8 32位的 LR12 55 如果有需要LR12 55的小伙伴 在百度网盘直接下 链接 htt
  • 博客系统自动化测试项目实战(测试系列9)

    目录 前言 1 博客前端页面测试用例图 2 测试用例的代码实现 2 1登录页面的测试 2 2博客列表页面的测试 2 3写博客测试 2 4博客详情页面的测试 2 5已发布博客的标题和时间的测试 2 6注销用户的测试 结束语 前言 之前小编给大
  • Android Studio 插件开发8、替换文本

  • Qt6 第一天认识基本模块、附加模块、支持的平台、QML用户界面

    文章目录 Qt6 焦点 Qt6 核心 基本模块 Qt6 附加模块 Qt6 支持的平台 Qt6 简介 Qt6 消化用户界面 Qt6 焦点 Qt 5在很多年前发布 引入了一种新的声明方式来编写令人惊叹的用户界面 从那时起 我们周围的世界发生了很
  • windows10连接小米耳机Redmi AirDots 2

    1 控制面板 2 添加蓝牙设备 3 搜索 4 下一步 如果链接不上 请删除已有设备从第一步开始重新做
  • 2017年如何成为全栈工程师,这些技能是你必须具备的!

    转载自 A Guide to Becoming a Full Stack Developer in 2017 作者 Daniel Borowski 译者 夜风轻扬 编者按 根据Stack Overflow 2016 Developer 调查
  • 字节一面:post为什么会发送两次请求?

    前言 最近博主在字节面试中遇到这样一个面试题 这个问题也是前端面试的高频问题 因为在前端开发的日常开发中我们总是会与post请求打交道 一个小小的post请求也是牵扯到很多知识点的 博主在这给大家细细道来 作者简介 程序员小豪 全栈工程师
  • Redis 高性能IO模型:为什么单线程Redis能那么快?

    今天 我们来探讨一个很多人都很关心的问题 为什么单线程的 Redis 能那么快 首先 我要和你厘清一个事实 我们通常说 Redis 是单线程 主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的 这也是 Redis 对外提供
  • SQL行列转换

    常见的行列转换包括以下四种情况 1 列转行 2 行转列 3 列转换成字符串 4 字符串转换成列 1 列转行 导入数据 DROP TABLE IF EXISTS t student CREATE TABLE t student id int
  • 教你一招,彻底清除“一刀999”的弹窗广告

    大家的电脑是不是也经常弹出烦人的广告 对于程序员来说 电脑从不离手 如果总是弹出广告 特别的烦人 今天我就来分享如何屏蔽广告 666 跟弹窗广告说拜拜 教你一招 彻底清除恶意软件的弹窗广告 一 首先按Win R打开运行 二 然后我们输入MR
  • VC6++配置汇编环境和第一个简单程序

    准备工作 1 下载并安装VC6 软件 2 下载Irvine32 lib库以及相关文件 Intel 汇编语言程序设计 irvine lib文件内 3 下载ml exe和ml err文件 ml from masm32文件内 以上准备工作的文件均
  • JPA 多对多映射,查询死循环

    解决方法 中断循环即可 首先这不是jpa的问题 是序列化的问题 我们只要中断序列化就可以了 通过注解 JsonIgnoreProperties value dblist 将产生死循环的属性忽略 中断死循环 例子 Entity Data pu
  • BUUCTF [FBCTF2019] Products Manager

    BUUCTF FBCTF2019 Products Manager 考点 基于约束的SQL攻击 数据库字符串比较 INSERT截断 启动环境 产品管理 其中有三个功能 查看前5的产品 添加产品 查看产品细节 知道了大致功能 尝试正常的业务逻
  • MTK手机平台充电原理

    EPT GPIO初始化文件 bsp gpio ept config c 1 知识点总结 1 1 Official 参考充电电路 Figure 1 1 参考电路 VCHG USB正极 VCDT VCHG Charger Detect充电电压检