




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于MT6575平台电池系统分析 柴路,Agenda,一:电池系统架构 二:监控原理 三:电量检测原理,电池系统架构,一:电池系统工作流程: DRV不停的把电池系统相关信息写入相关文件,然后上报。上层监听到后读取文件。 涉及到的文件较多,比如读取 /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在 alps/kernel/drivers/power/*.* MTK为了客制化,把与自己平台相关的code放在了 alps/mediatek/platform/mt6575/kernel/drivers/power/*.* 二:以添加/sys/class/power_supply/battery/ChargerTest文件为例子 1,在Power_supply.h文件添加POWER_SUPPLY_PROP_ChargerTest.,2,在Power_supply_sysfs.c文件添加。上面两步表示总共可以支持的文件。 3,修改mt6575_battery.c文件,mt6575_battery_props 表示 /sys/class/power_supply/battery/文件夹下所支持的文件,4,系统默认文件是只读的,如果文件可读可写。需要添加如下地方,下面分析文件建立过程。 static int mt6575_battery_probe(struct platform_device *dev) ret = power_supply_register( 在开机的时候当执行到mt6575_battery_probe()函数的时候,会注册ac,usb,battery。以注册mt6575_battery_main.psy为例,当执行完毕注册函数的时候, 文件/sys/devices/platform/mt6575-battery/power_supply/battery/*.*建立完成并且sys/class/power_supply/battery/*.* 建立对应的连接。 主要工作是在函数power_supply_register()完成的。其中建立文件的过程如下,power_supply_register() device_add() device_add_attrs() device_add_groups() sysfs_create_group() internal_create_group() create_files(),Line66: “grp” 对应Power_supply_sysfs.c中的 static struct attribute_group power_supply_attr_group = .attrs = _power_supply_attrs, .is_visible = power_supply_attr_is_visible, ; grp-attrs 就是 _power_supply_attrs。里面记录了所支持的所有文件名信息。 Line 75:执行Power_supply_sysfs.c中的power_supply_attr_is_visible()函数,该函数会判断需要建立的具体文件是否符合要求,如果符合要求则建立,否则不建立 Line 79:建立文件,Line238: psy-properties对应如下,即判断需要建立的属性文件是否符合要求,以及读写属性设置。,信息上报告,一:在BAT_thread()函数中通过如下函数上报信息的 mt6575_ac_update( 二:BAT_thread()的触发条件 1,10s的定时器 2, 插拔充电器 三:mt6575_battery_update()函数里面会完成写文件和通知上层两个功能,写文件就是 更新bat_data-XX. 上层读取的时候就是读取这些数据,当所有的数据更新完毕调用 power_supply_changed()函数上报。 power_supply_changed() schedule_work() power_supply_changed_work() kobject_uevent(),上层读取文件,当上层监听到底层的上报信息后,会读取文件容com_android_server_BatteryService.cpp是JNI层。解析出需要读取的文件。读取文件的时候通过一些列调用最终会调用到Power_supply_sysfs.c的 power_supply_show_property()函数。 该函数最终会调用psy-get_property(psy, off, &value)完成读取功能 以读取/sys/class/power_supply/battery/文件为例子。,一:充电原理 充电是软硬件协同完成的。软硬件的关系好比主奴关系。软件在充电中担当主人的角色,主要完成监控功能。硬件好比奴隶,主要是干活的,完成充电的主要工作。 二:软件的监即监督,就是时刻测量充电参数,比如电池电压,充电电流,电池温度等。 控即控制,用的最多的控制就是使能,禁止充电,设定充电电流大小。,监控原理,硬件充电原理,1,上图红色线代表充电的时候电流流动的方向,一部分流向电池,一部分流向系统,虚线电流流向是三极管的基极控制电流,这个电流非常小,分析的时候可以忽略。 2,DXT790AP5是三极管: 通过三极管可以开启,关闭充电功能,开 启充电的时候调节三极管的基级电流可以控制流过三极管CE端的电流从而实现充电电流大小的设置。 Rsense采样电阻: 对于软件来说可以测量充电电流的大小:电流计算方法:(ISENSE BATSNS)/Rsense. 对于PMU来说通过Rsense可以实现电流控制。比如要实现1A的充电电流,Rsense为0.2欧。PMU实现该电流的方法就是设法一直保证Rsense两端的电压是0.2V。,如果把电压比作水压,电流比作水流。则三极管的作用就是调节阀(水龙头),调剂三极管的基极电流好比转动水龙头的把手。则Rsense就好比流量检测仪。,充电硬件有自己的一套预充,恒流,恒压流程,软件也有自己的一套预充,恒流,恒压流程。靠两者协同合作完成整个充电工作。 硬件预充过程如下:,BAT_ON在充电中的作用 1,检测电池是否存在。电压必须小于1.062V,否则认为电池不存在不能充电,硬件行为,软件无法关闭此功能 2,高温检测,电池电压必须大于0.2V,否则认为电池温度过高不能充电,硬件行为,软件可以关闭此功能 3,软件检测电池温度。,充电器插入拔出检测 PMU会检测VCDT PIN的电压,如果电压低于一定数值(4.3V)或者高于一定数值(charger ovp 软件可设定电压)则认为充电器没有插入,否则认为充电器插入。当PMU检测到有充电器插入或者拔出动作的时候,则会触发中断,然后触发BAT_thread线程。,充电器识别 可以识别出四种类型:前两者属于USB calbe,后两个属于充电器 可参考函数hw_charger_type_detection(void),充电器类型判断。,UVLO(Under-voltage lockout) VTHH 3.2V,不可修改,如果电池电压低于VTHH则不开机 VTHL 2.9V,此电压软件可修改,当开机后,电池电压低于VTHL则强行断电关机,ADC测量相关,ADC: 与充电相关的ADC集成在PMU内, 主要测量温度,电池电压,电流,充电器。 ADC精度 10bit。已经校准好。 ADC电压范围 0 1.2V 电池电压算法:比如测得ADC为x,电池电压为y则: Y = (1.2*x/1024) * N N表示分压系数,N = 4。,Vcharger:比如测得ADC为x,Vcharger为y则: Y = (1.2*x/1024) * N 其中 N代表分压系数 N = (39 + 330)/39,充电电流计算: 不充电的时候计算 gADC_I_SENSE_offset = BATSENS ISENSE目地消除底噪误差。 充电的时候连续测量20次BATSENS和ISENSE的电压,然后把测量的电压减去两个最大数值和最小数值其余的做平均。最后计算充电电流 (ISENSE - BATSENS + gADC_I_SENSE_offset)/Rsense 为了得到获取稳定的电池参数,电池电压和充电电流还做“滑动滤波”。即和前60次采样的数据做平均(前10分钟),温度测量,电量计算,两种电量测量方法 1,开路电压法。电池在开路状态下电池容量与电压具有一定的关系,计算出电压查表可以得到容量 优点:简单,可以计算初始电池电量 缺点:需花30分钟以上等待电压回升,积分法:电流计算公式 I = Q/t 优点:适用于各种电池 缺点:初始电量无法获取,电流测试硬件原理,开路电压法,开机的时候利用开路电压法得到电池电量初始值 算法原理: 在cust_fuel_gauge.h中定义了四种温度下电池开路电压与电池剩余容量的对应表格,如下: battery_profile_t0 /-10度 battery_profile_t1 /-0度 battery_profile_t2 /25度 battery_profile_t3 /50度 软件计算电池温度和开路电压。比如计算当前温度是40读,则会根据25度和50度的表格插值生成一个40度的开路电压与电池剩余容量的表格。然后根据开路电压查找40度表格就可以计算出当前的电池容量。,开路电压计算方法: AB端的电压是开路电压 如果电池处于放电状态 则Vab = Vbat + I * (R + 20mOhm) 同理,在电池充电的时候电池开路电压是 Vab = Vbat - I * (R + 20mOhm) Vbat是软件测量的电池电压 I是流过电池的电流 R 是电池内阻 20mOhm是采样电阻,B,A,电池内组的计算方法: 提供四个表格如下。根据当前温度计算出当前温度的电池内租电压关系表格,然后根据电压查找表格找出电池内组。 r_profile_t0 / -10度电池内租与电压对应关系 r_profile_t1 / 0度电池内租与电压对应关系 r_profile_t2 / 25度电池内租与电压对应关系 r_profile_t3 / 50度电池内租与电压对应关系,积分法,积分法 PMU内部集成积分电路。通过读寄存器然后计算可以得到流入流出电池的电量,然后校准后得到最终的电量。 dvalue_CAR = (dva
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家用医疗器械市场消费需求变化趋势分析:2025年市场前景与品牌策略报告
- 2025年文化产业专项资金申请项目市场潜力分析与预测报告
- 2025年民办教育机构合规运营与品牌建设教育信息化发展研究报告
- XX中医医疗器械有限公司2023年度ESG报告:与合作伙伴共建和谐供应链
- 2025年学历类自考学前教育行政与管理-学前儿童保育学参考题库含答案解析(5套试卷)
- 2025年学历类自考学前教育原理-比较教育参考题库含答案解析(5套试卷)
- 2025年聚氨基双马来酰胺项目提案报告
- 2025年学历类自考国际金融-质量管理学参考题库含答案解析(5套试卷)
- 2025年学历类自考国际财务管理-文学概论参考题库含答案解析(5套试卷)
- 灵活用工结算2025年法律法规解读报告
- 脑梗死急性期护理查房
- 河北省石家庄市2024-2025学年高一下学期期末教学质量检测数学试题(含部分答案)
- 《肝硬化腹水中西医结合诊疗专家共识(2025年)》解读课件
- 旭化成分离膜装置(杭州)有限公司建设项目报告表
- 湖北摊贩备案管理办法
- (2025年)江西省九江市辅警协警笔试笔试预测试题含答案
- 员额法官考试试题及答案
- 2025至2030中国高通量测序技术(NGS)行业产业运行态势及投资规划深度研究报告
- GB/T 45359.5-2025海工平台定位系泊纤维绳索第5部分:芳纶
- 车辆段运作手册
- 临床药师绩效管理制度
评论
0/150
提交评论