MTK手机平台充电原理
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
相关文章:
MTK手机平台充电原理
EPT GPIO初始化文件 bsp_gpio_ept_config.c 1 知识点总结 1.1 Official 参考充电电路 Figure 1-1 参考电路 VCHG:USB正极 VCDT:VCHG Charger Detect充电电压检测脚 ISENSE:充电电流检测电阻的正极 BATSNS:充电电流检测电阻的负极 …...
产品化的GPT,能否为“百模大战”照亮未来?
这两天,AI圈都处在一种莫名的震撼感当中。 北京时间 11月7日,OpenAI 举办了首次DevDay开发者日活动。活动现场发布了非常多内容,其中有一些按部就班的,比如技术上更新了最新版本的GPT-4 Turbo。也有一些让从业者目瞪口呆ÿ…...
【中间件篇-Redis缓存数据库03】Redis高级特性和应用(发布 订阅、Stream)
Redis高级特性和应用(发布 订阅、Stream) 发布和订阅 Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道( channel)发布消息,订阅该频道的每个客户端都可以收到该消息。 …...
Verilog基础:三段式状态机与输出寄存
相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html 对于Verilog HDL而言,有限状态机(FSM)是一种重要而强大的模块,常见的有限状态机书写方式可以分为一段式,二段式和三段式,笔者强烈建议使用三…...
抖音商城双11好物节,从供需两侧重新定义“好货”
【潮汐商业评论/原创】 你用的第一款护肤品是什么? 大部分人回忆起童年的时候,想起来的都是那款有着牛奶香味的、塑料包装的小袋白色乳霜——郁美净儿童霜。 但是不知何时,它逐渐淡出了很多人、特别是年轻人的视野,直到今年在互…...
Mysql Explain工具介绍
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析查询语句或是结构的性能瓶颈。 准备表 -- 课程表 CREATE TABLE class (id int(11) NOT NULL,name varchar(45) DEFAULT NULL,update_time datetime DEFAULT NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSET…...
Linux系统中的静态库和共享库,以及一些计算机的基础知识
目录 1.库文件 2.静态库 3.共享库 4.静态库与共享库的区别 5.计算机基础知识 6.进程的基础知识 7.主函数的三个参数 1.库文件 1).库文件库是一组预先编译好的方法的集合;Linux系统存储库的位置一般在/lib 和 /usr/lib (64位系统/usr/lib64)库的头文件放在/usr/include 2…...
商品管理图片更换实现
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.java1234.mapper.ProductMa…...
SDL2 加载图片
1.简介 在SDL中,本身只支持加载BMP格式的图片SDL_LoadBMP,如果想要加载别的格式图片,需要编译SDL_image库。 SDL_image库中IMG_Load和都是IMG_LoadTexture用于加载图片的函数,但是它们的使用方式和返回值有所不同。 IMG_Load和…...
监控和数据采集软件架构和详细设计
介绍 监控和数据采集软件通过提供实时监控、数据收集和分析功能,在各个行业中发挥着至关重要的作用。这些软件应用程序可帮助企业收集有价值的见解、优化流程并做出明智的决策。在本文中,我们将探讨监测和数据采集软件的软件架构、编程技术和详细设计规范…...
链动2+1模式系统开发之区域代理深度解析
区域代理的保护机制:在链动商城系统里设定的代理有唯一性,每个省只有一个省代,每个市只有一个市代,每个区县只有一个区县代。这样也是保护每个代理的收益权益。 区域代理包含的权益类别:购物奖励折扣;区域实…...
Amazon Bedrock | 大语言模型CLAUDE 2体验
这场生成式AI与大语言模型的饥饿游戏,亚马逊云科技也参与了进来。2023年,亚马逊云科技正式发布了 Amazon Bedrock,是客户使用基础模型构建和扩展生成式AI应用程序的最简单方法,为所有开发者降低使用门槛。在 Bedrock 上࿰…...
通讯协议学习之路(实践部分):IIC开发实践
通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374) 本文…...
『亚马逊云科技产品测评』活动征文|搭建带有“弱”图像处理功能的流媒体服务器
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 本文基于以下软硬件工具: aws ec2 frp-0.52.3 mediamtx-1.3…...
正交矩阵的定义
对于n阶矩阵A,如果,其中为单位矩阵,为A的转置矩阵,那么就称A为正交矩阵。 对于正交矩阵, 对于正交矩阵,其列向量都是单位向量,行向量都是单位向量...
K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路
背景说明 二进制方式安装的k8s集群,etcd集群有3个节点,某天有一台机器hang住了,无法远程ssh登陆,于是被管理员直接重启了,重启后发现k8s集群删除一个deployment应用,多次刷新一会有,一会没有&am…...
selenium/webdriver运行原理与机制
最近在看一些底层的东西。driver翻译过来是驱动,司机的意思。如果将webdriver比做成司机,竟然非常恰当。 我们可以把WebDriver驱动浏览器类比成出租车司机开出租车。在开出租车时有三个角色: 乘客:他/她告诉出租车司机去哪里&a…...
论文阅读[121]使用CAE+XGBoost从荧光光谱中检测和识别饮用水中的有机污染物
【论文基本信息】 标题:Detection and Identification of Organic Pollutants in Drinking Water from Fluorescence Spectra Based on Deep Learning Using Convolutional Autoencoder 标题译名:基于使用卷积自动编码器的深度学习,从荧光光谱…...
Juniper SRX PPPoE配置
直接上配置脚本 6号口接运营商进行拨号 ---------- set interfaces ge-0/0/6 unit 0 encapsulation ppp-over-ether set interfaces ge-0/0/6 description "Connect_to_Modem" set interfaces pp0 unit 0 pppoe-options underlying-interface ge-0/0/6.0 set inte…...
虚拟仪器软件结构VISA
1、什么是VISA VISA是虚拟仪器软件结构(Virtual Instrument Software Architectuere)的简称,是由VXI plug & play系统联盟所统一制定的I/O接口软件标准及其相关规范的总称。一般称这个I/O函数库为VISA库(用于仪器编程的标准I/O函数库)。…...
C语言编程中的高级技巧与实用方法
1. C语言编程中那些鲜为人知的实用技巧作为一名嵌入式开发工程师,我经常需要与C语言打交道。虽然C语言看似简单,但它隐藏着许多实用的语法技巧和功能,这些技巧往往能大幅提升代码的可读性和维护性。今天,我将分享几个在实际项目中…...
Mac端Jmeter从零到一:新手入门与接口压测实战
1. 为什么选择Jmeter做接口压测? 第一次接触Jmeter是在去年的一次项目上线前,当时我们需要对一个核心支付接口做压力测试。领导直接甩过来一个需求:"模拟100个用户同时下单,看看系统会不会崩"。作为刚转测试岗的新人&a…...
复杂问题拆解四重境界与工程实践
1. 问题拆解:从混沌到清晰的核心方法论面对复杂问题时,那种无从下手的茫然感我太熟悉了。十年前我刚入行做电子产品故障分析时,经常被各种行业客户问得哑口无言——医疗设备的EMC问题、汽车电子的信号干扰、工业控制的通信异常,每…...
如何在5分钟内将你的电脑变身为智能语音助手:py-xiaozhi完整配置指南
如何在5分钟内将你的电脑变身为智能语音助手:py-xiaozhi完整配置指南 【免费下载链接】py-xiaozhi A Python-based Xiaozhi AI for users who want the full Xiaozhi experience without owning specialized hardware. 项目地址: https://gitcode.com/gh_mirrors/…...
电驱动系统标定视频精讲教程:4.5小时全解析,含文档重难点解析
电驱动系统标定 视频 精讲教程(含文档),培训时长4.5小时。 电驱动重难点解析文档。深夜的实验室里示波器曲线还在跳动,我盯着屏幕上那个0.3秒的扭矩响应延迟,咖啡杯在控制台边沿留下深褐色的印记。电驱动标定工程师最…...
ICLR 2026 | 大模型当裁判也“翻车“?北大清华联合多校提出TrustJudge,让LLM评估更值得信赖
让 GPT-4 给两篇文章打分,A 拿了 4 分、B 拿了 3 分。按常理 A 应该比 B 好吧?但换成成对比较,同一个模型却说 "B 更好"。更离谱的情况也有——A > B > C > A 的"石头剪刀布"循环,连传递性都守不住。…...
SEO_新手入门教程:如何从零开始学习SEO优化
SEO新手入门教程:如何从零开始学习SEO优化 在当今数字化时代,搜索引擎优化(SEO)已成为每一个希望在网络上脱颖而出的网站必不可少的技能。不论你是一个全新的网站主,还是一个希望提升现有网站流量的企业,了…...
统一游戏模组管理:如何用XXMI Launcher告别多工具切换的烦恼
统一游戏模组管理:如何用XXMI Launcher告别多工具切换的烦恼 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 你是否曾经为了管理不同游戏的模组而需要在多个工具间来…...
什么是共轭表达式?解决了什么问题?
什么是共轭表达式?解决了什么问题?为什么导数是 1/x? 导数衡量的是“每增加 1 单位的 xxx,y 能增加多少”...
告别Frida注入:手把手教你用IDA和010 Editor修改TikTok的libsscronet.so实现抓包(Android 30.8.4)
静态逆向实战:不依赖Frida修改TikTok核心通信模块实现抓包 在移动安全研究领域,动态注入工具如Frida一直是分析应用协议的主流选择。但当面对TikTok这类采用自研通信协议的应用时,频繁的版本更新会导致动态注入方案需要持续维护。本文将展示一…...
