mtk fuel gauge算法分析

mtk fuel gauge算法分析

ID:13483698

大小:2.55 MB

页数:30页

时间:2018-07-22

mtk fuel gauge算法分析_第1页
mtk fuel gauge算法分析_第2页
mtk fuel gauge算法分析_第3页
mtk fuel gauge算法分析_第4页
mtk fuel gauge算法分析_第5页
资源描述:

《mtk fuel gauge算法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SWFG算法分析目录1,Battery架构简析2,MTK电量算法简析3,72/82平台SWFG算法分析4,误差和消除误差Battery架构简析MTK平台Battery软件架构基本如下图所示。具体过程:硬件ADC读取Battery的各路信息:包括温度,电压等。MTK开发的电量算法分析得到的数据。Kernel层将电量信息通过写文件节点的方式更新,并通过UEVENT通知上层。上层Service开启UEVENTLISTENER,监听到UEVENT后,读取battery相关文件节点,获取电量信息。Service更新数据后,通过Broadcast通知所有开启了相关listener的activi

2、ties。根据不同的电量读取和计算的策略,第一步的读取和第二步的算法部分会有比较大的差异,而后面的数据更新和事件通知部分一致性较高。本篇重点分析72/82平台SWFG算法实现,对比SW_FG和HW_FG在硬件及软件上的部分差异,分析电量误差形成的一些原因和MTK已经采取的消除误差的措施。对于Battery数据更新和充电流程则粗略分析。充电状态机,battery充电的逻辑,就依赖于这张图,如果是用的externalchargeric,则应当参考该IC的充电逻辑。linearcharging下cc转cv,是通过ADC读取电压后,软件切换。而使用chargeric则很可能是硬件直接切换。

3、这部分的相关代码路径在:alps/mediatek/kernel/drivers/power/linear_charging.calps/mediatek/kernel/drivers/power/switching_charging.ckernel层battery驱动工作的流程,Bat_thread是工作的重点,通过单独的线程依赖10s定时器,更新battery相关信息。电量算法分析后得到的数据也不会直接update,InformationProcessing还会针对一些特殊情况对显示电量做调整,比如0%tracking&100%tracking。除了10s一次的定时器更新,插拔

4、充电器会触发中断,中断处理时同样会更新battery数据。所有和电池充电相关的数据都存储在power_supply类型的结构体中,这是linux标准的电源子系统体系。MTK电量算法简析为了得到较为精确的电量数据,需要改善测量方式和计算方法,并针对已知误差采取优化手段。一下介绍MTK平台下采用的一些电量算法。AUXADC算法:事实上,所有算法都要依赖ADC读取电量信息,这边的AUXADC算法指只依赖ADC读值,然后查表读取电量的算法。这种算法只重构了ZCVtable,误差会很大。库仑积分法:通过开路电压查表得到初始电量D0,后续电量通过电流积分累积,通用性强,依赖初始电量的精确度。混

5、合型算法:SWFG算法和HWFG算法。事实上MTK平台项目通常采用的是混合型算法。SWFG的参考电路:HWFG的参考电路:相同点:NTC电阻用于测量温度,ADC测量各路信号。不同点:HWFG有单独的ADC和20毫欧的电阻作电流的侦测。HWFG和SWFG最大差异就是电流的获取方式。混合算法的流程,HWFG通过FGADC读取FG电阻两端电压获得电流,而SWFG则结合库伦算法通过SW方式算得。这部分会详细介绍。72/82平台SWFG算法分析主要分析上图黄色部分大部分项目都采用混合算法,下面从算法初始化开始介绍下SWFG的算法实现。battery_meter.c这个C文件主要负责电池电量算

6、法的实现向上主要承接battery_common.c向下调用battery_meter_hal.c中的接口,以读取电池的各路信号。=>battery_meter_initial首先看下调用这个func的timing。显然在开机初始化阶段,就会进入该函数,且只会运行一次。针对AUXADCSW_FGHW_FG三种不同的电池算法方案,分别初始化,因为82平台采用的SW_FG,所以接下去先主要分析SW_FG的流程。SW_FG的准备工作分为两步:table_initoam_init先看table_init首先要获取当前的温度信息=>force_get_tbatADC读值这边就是MTK为了结合

7、实际温度获取较为精确的电池信息而采取的线性平均值法。原理是利用预先测得的分布在-1002550摄氏度下的ZCV表,结合真实温度,动态重构一张当前温度下的ZCV表格。TEMPERATURE对应预留的空ZCV表格,如下构造新表的函数如下采用线性平均法填补了有效温度内所有的ZCV对应值但与真实曲线必然存在一定的误差。=>oam_init常见的指针函数传参比较有趣vol_bat这个参数下传给底下pmic做count,然后被重新赋值成读取的v_bat值之所以能这样做是因为这两块

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。