Battery_学习文档.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Battery_学习文档

Battery 学习文档 一:电池系统架构 电池系统工作流程: 驱动不停的把电池系统相关信息写入相关文件,然后上报。上层监听到后读取文件。 涉及到的文件较多,比如读取 /sys/class/power_supply/battery/BatterySenseVoltage可以获取电池电压 /sys/class/power_supply/battery/ChargerVoltage可以获取充电器电压 /sys/class/power_supply/battery/batt_tem可以获取电池温度 等等。 要理解电池系统架构需要需要解决三个问题: 1.相关文件是如何建立的? 2.是什么触发驱动更新文件内容以及驱动是如何上报的? 3.用户空间是如何读取文件里面的信息的? 电池系统文件建立 电池系统架构基于linux kernel,相关code在 kernel/drivers/power/*.* MTK客制化相关的code放在了 kernel/drivers/power/mediatek/*.* kernel-3.18/drivers/misc/mediatek/power/mt6580 支持的文件: Include/linux/power_supply.h Kernel/drivers/power/power_supply_sysfs.c 在kernel/drivers/power/mediatek/battery_common.c 是 /sys/class/power_supply/battery 文件夹下面支持的文件 文件默认只读, 要支持写操作,需要实现 int (*property_is_writeable)(struct power_supply *psy, enum power_supply_property psp); 文件建立: power_supply_register((dev-dev), battery_main.psy); 信息上报: static void battery_update(struct battery_data *bat_data); BAT_thread(); BAT_thread()的触发条件: 10s的定时器 battery_update函数里面会完成写文件和通知上层两个功能,写文件就是更新bat_data-XX. 上层读取的时候就是读取这些数据,当所有的数据更新完毕调用power_supply_changed()函数上报: power_supply_changed() → schedule_work() → power_supply_changed_work() → kobject_uevent() 上层读取文件 当上层监听到底层的上报信息后,读取文件的时候通过一些列调用最终会调用到Power_supply_sysfs.c的 power_supply_show_property()函数。 该函数最终会调用psy-get_property(psy, off, value)完成读取功能 二:监控原理 充电原理 充电是软硬件协同完成的。软件主要完成监控功能。硬件完成充电的主要工作。 软件的监即监督,就是时刻测量充电参数,比如电池电压,充电电流,电池温度等。 控即控制,用的最多的控制就是使能,禁止充电,设定充电电流大小。 MTK平台充电有分为两种 linear充电 switch充电两种: linear充电: 硬件上使用MTK的PMU 充电,硬件成本低,充电电流小,转换效率不高。 switch充电: 硬件上使用外挂充电IC 常用的有TI BQ24296 , 增加额外的硬件成本 充电电流大, 充电效率高 。 VBUS:USB正极 VCDT:充电电压检测脚 ISENSE:检流电阻正极 BATSNS:检流电阻负极 VBAT:电池正极引脚 BAT_ON:电池NTC(热敏电阻)引脚通过读取PMIC的寄存器直接可读到V、V、VCharger、Vbat_temp 1,一部分流向电池,一部分流向系统. 2,充电的时候调节VDRV, 通过调节三极管的be端电流可以控制流过ce端的电流从而实现充电电流大小的设置。 Rsense检流电阻: 对于软件来说可以测量充电电流的大小:电流计算方法:(ISENSE – BATSNS)/Rsense. signed int battery_meter_get_charging_current(void); 线性充电过程 CHR_PRE 预充状态 小电流充电激活电池 CHR

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档