下载此文档

mtk fuel gauge算法分析.doc


文档分类:通信/电子 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
MTK Fuel Gauge 算法分析 SW FG 算法分析目录 1, Battery 架构简析 2, MTK 电量算法简析 3, 72/82 平台 SW FG 算法分析 4, 误差和消除误差 Battery 架构简析 MTK 平台 Battery 软件架构基本如下图所示。具体过程: 硬件 ADC 读取 Battery 的各路信息:包括温度,电压等。 MTK 开发的电量算法分析得到的数据。 Kernel 层将电量信息通过写文件节点的方式更新,并通过 UEVENT 通知上层。上层 Service 开启 UEVENT LISTENER , 监听到 UEVENT 后, 读取 batter y 相关文件节点,获取电量信息。 Service 更新数据后,通过 Broadcast 通知所有开启了相关 listener 的 activities 。根据不同的电量读取和计算的策略, 第一步的读取和第二步的算法部分会有比较大的差异,而后面的数据更新和事件通知部分一致性较高。本篇重点分析 72/82 平台 SW FG 算法实现, 对比 SW_FG 和 HW_FG 在硬件及软件上的部分差异, 分析电量误差形成的一些原因和 MTK 已经采取的消除误差的措施。对于 Battery 数据更新和充电流程则粗略分析。充电状态机, battery 充电的逻辑,就依赖于这张图,如果是用的 external charger ic ,则应当参考该 IC 的充电逻辑。 linear charging 转 cv ,是通过 ADC 读取电压后,软件切换。而使用 charger ic 则很可能是硬件直接切换。这部分的相关代码路径在: alps/mediatek/kernel/drivers/power/ alps/mediatek/kernel/drivers/power/ kernel 层 battery 驱动工作的流程, Bat_thread 是工作的重点, 通过单独的线程依赖 10s 定时器, 更新 battery 相关信息。电量算法分析后得到的数据也不会直接 update , Information Processing 还会针对一些特殊情况对显示电量做调整, 比如 0%tracking&100%tracking 。除了 10s 一次的定时器更新,插拔充电器会触发中断,中断处理时同样会更新 battery 数据。所有和电池充电相关的数据都存储在 power_supply 类型的结构体中,这是 linux 标准的电源子系统体系。 MTK 电量算法简析为了得到较为精确的电量数据, 需要改善测量方式和计算方法, 并针对已知误差采取优化手段。一下介绍 MTK 平台下采用的一些电量算法。 AUX ADC 算法: 事实上, 所有算法都要依赖 ADC 读取电量信息, 这边的 AUX ADC 算法指只依赖 ADC 读值,然后查表读取电量的算法。这种算法只重构了 ZCV table ,误差会很大。库仑积分法: 通过开路电压查表得到初始电量 D0 ,后续电量通过电流积分累积,通用性强,依赖初始电量的精确度。混合型算法: SW FG 算法和 HW FG 算法。事实上 MTK 平台项目通常采用的是混合型算法。 SW FG 的参考电路: HW FG 的参考电路: 相同点: NTC 电阻用于测量温度, ADC 测量各路信号。不同点: HW FG 有单独的 ADC 和 20 毫欧的电阻作电流的侦测。 HW FG 和 SW FG 最大差异就是电流的获取方式。混合算法的流程, HW FG通过 FG AD C读取FG 电阻两端电压获得电流, 而 SW FG 则结合库伦算法通过 SW 方式算得。这部分会详细介绍。 72/82 平台 SW FG 算法分析主要分析上图黄色部分大部分项目都采用混合算法, 下面从算法初始化开始介绍下 SW FG 的算法实现。 这个 C 文件主要负责电池电量算法的实现向上主要承接 向下调用 中的接口,以读取电池的各路信号。=>battery_meter_initial 首先看下调用这个 func 的 timing 。显然在开机初始化阶段,就会进入该函数,且只会运行一次。针对 AUXADC SW_FG HW_FG 三种不同的电池算法方案, 分别初始化, 因为 82 平台采用的 SW_FG , 所以接下去先主要分析 SW_FG 的流程。 SW_FG 的准备工作分为两步: table_init oam_init 先看 table_init 首先要获取当前的温度信息=> force_get_tbat ADC 读值

mtk fuel gauge算法分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198614
  • 文件大小26 KB
  • 时间2017-06-18