基于M6575平台电池系统分析.ppt

上传人:laozhun 文档编号:2974304 上传时间:2023-03-06 格式:PPT 页数:37 大小:4.73MB
返回 下载 相关 举报
基于M6575平台电池系统分析.ppt_第1页
第1页 / 共37页
基于M6575平台电池系统分析.ppt_第2页
第2页 / 共37页
基于M6575平台电池系统分析.ppt_第3页
第3页 / 共37页
基于M6575平台电池系统分析.ppt_第4页
第4页 / 共37页
基于M6575平台电池系统分析.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《基于M6575平台电池系统分析.ppt》由会员分享,可在线阅读,更多相关《基于M6575平台电池系统分析.ppt(37页珍藏版)》请在三一办公上搜索。

1、基于MT6575平台电池系统分析柴路,SW2 2012-05.22,Agenda,一:电池系统架构二:监控原理三:电量检测原理,电池系统架构,一:电池系统工作流程:DRV不停的把电池系统相关信息写入相关文件,然后上报。上层监听到后读取文件。涉及到的文件较多,比如读取/sys/class/power_supply/battery/BatterySenseVoltage可以获取电池电压/sys/class/power_supply/battery/ChargerVoltage可以获取充电器电压/sys/class/power_supply/battery/batt_tem可以获取电池温度 等等。,

2、二:要理解电池系统架构需要需要解决三个问题: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文

3、件添加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(在开机的时候

4、当执行到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_attr

5、s()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:执行P

6、ower_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()函数里面会完成写文件和通知上层两个功能,写文件就是更

7、新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(

8、)函数。该函数最终会调用psy-get_property(psy,off,&value)完成读取功能以读取/sys/class/power_supply/battery/文件为例子。,一:充电原理 充电是软硬件协同完成的。软硬件的关系好比主奴关系。软件在充电中担当主人的角色,主要完成监控功能。硬件好比奴隶,主要是干活的,完成充电的主要工作。二:软件的监即监督,就是时刻测量充电参数,比如电池电压,充电电流,电池温度等。控即控制,用的最多的控制就是使能,禁止充电,设定充电电流大小。,监控原理,硬件充电原理,1,上图红色线代表充电的时候电流流动的方向,一部分流向电池,一部分流向系统,虚线电流流向是三

9、极管的基极控制电流,这个电流非常小,分析的时候可以忽略。2,DXT790AP5是三极管:通过三极管可以开启,关闭充电功能,开 启充电的时候调节三极管的基级电流可以控制流过三极管CE端的电流从而实现充电电流大小的设置。Rsense采样电阻:对于软件来说可以测量充电电流的大小:电流计算方法:(ISENSE BATSNS)/Rsense.对于PMU来说通过Rsense可以实现电流控制。比如要实现1A的充电电流,Rsense为0.2欧。PMU实现该电流的方法就是设法一直保证Rsense两端的电压是0.2V。,如果把电压比作水压,电流比作水流。则三极管的作用就是调节阀(水龙头),调剂三极管的基极电流好比

10、转动水龙头的把手。则Rsense就好比流量检测仪。,充电硬件有自己的一套预充,恒流,恒压流程,软件也有自己的一套预充,恒流,恒压流程。靠两者协同合作完成整个充电工作。硬件预充过程如下:,BAT_ON在充电中的作用1,检测电池是否存在。电压必须小于1.062V,否则认为电池不存在不能充电,硬件行为,软件无法关闭此功能2,高温检测,电池电压必须大于0.2V,否则认为电池温度过高不能充电,硬件行为,软件可以关闭此功能3,软件检测电池温度。,充电器插入拔出检测PMU会检测VCDT PIN的电压,如果电压低于一定数值(4.3V)或者高于一定数值(charger ovp 软件可设定电压)则认为充电器没有插

11、入,否则认为充电器插入。当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精度

12、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

13、_SENSE_offset)/Rsense为了得到获取稳定的电池参数,电池电压和充电电流还做“滑动滤波”。即和前60次采样的数据做平均(前10分钟),温度测量,电量计算,两种电量测量方法1,开路电压法。电池在开路状态下电池容量与电压具有一定的关系,计算出电压查表可以得到容量优点:简单,可以计算初始电池电量缺点:需花30分钟以上等待电压回升,积分法:电流计算公式 I=Q/t优点:适用于各种电池缺点:初始电量无法获取,电流测试硬件原理,开路电压法,开机的时候利用开路电压法得到电池电量初始值算法原理:在cust_fuel_gauge.h中定义了四种温度下电池开路电压与电池剩余容量的对应表格,如下:b

14、attery_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是流过

15、电池的电流 R 是电池内阻 20mOhm是采样电阻,B,A,电池内组的计算方法:提供四个表格如下。根据当前温度计算出当前温度的电池内租电压关系表格,然后根据电压查找表格找出电池内组。r_profile_t0/-10度电池内租与电压对应关系r_profile_t1/0度电池内租与电压对应关系r_profile_t2/25度电池内租与电压对应关系r_profile_t3/50度电池内租与电压对应关系,积分法,积分法 PMU内部集成积分电路。通过读寄存器然后计算可以得到流入流出电池的电量,然后校准后得到最终的电量。dvalue_CAR=(dvalue_CAR*CAR_TUNE_VALUE)/100);CAR_TUNE_VALUE是客制化的校准参数,用于电量/电流校准。电量百分比算法如下:(gFG_columb*100)/gFG_BATT_CAPACITY_aging);gFG_BATT_CAPACITY_aging为25度时候的电池电量Q_MAX_POS_25。该值在充满电后会适当调整。,电量上报的时候还要进行电量算法,参考 mt6575_battery_update()函数,Q&A Thank You,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号