关闭MTK电池检测
来源:互联网 发布:淘宝swot分析 编辑:程序博客网 时间:2024/04/30 04:32
mtk电池温度检测
版权声明:本文为博主原创文章,未经博主允许不得转载。
手机里面电池通常有4个引脚,即电池的+、-极,ID引脚、NTC引脚。id引脚用来识别电池的类型,例如是锂电池还是镍氢电池,不过现在手机上基本用的都是锂电池了。而NTC引脚主要用来测量电池温度的,还可以用来检测手机有没有按上电池,那么这里就来说明这两个功能。
1. 电池检测
在mt6735+mt6328平台方案中,电池的NTC引脚需要接到mt6328的BATON引脚上,preloader中的检测代码如下:
也就是通过hw_check_battery()函数来检测的,如果电池存在返回1,否则返回0。注意这个检测是通过PMIC来完成的。
之前遇到过电路有设计NTC检测电路,但是机器接稳压电源不能开机问题,需要禁掉该功能,怎么办?把MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION这个打开就可以了,在preloader/custom/project/project.mk里面把MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION这个宏赋值为yes就可以开机了。
但是改呢不只改这一处,还需要在ProjectConfig.mk里和kernel的config文件一起修改,否则编译时会有警告信息,但对于系统启动是无大碍的。
2. 电池温度检测
电池的温度也是通过NTC引脚来测量的,但是如果在kernel中把CONFIG_MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION宏打开了之后,温度测量功能也禁掉了。
温度测量是通过battery_meter.c中的force_get_tbat()函数完成的。在cust_battery_meter.h中,如果定义了CONFIG_MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION宏,那么FIXED_TBAT_25宏也被定义了,force_get_tbat()直接返回一个固定值温度25度。
再来说电池温度测量。
温度测量等效电路如下:
其中10k是一个温敏电阻,随着温度的升高,阻值降低,一般电池厂商会提供一个温度与阻值的曲线图,通过测量baton的电压值计算出阻值,然后根据阻值计算出温度值,这就是温度测量的原理。
在mt6735+mt6328平台上,上拉参考电压为1.8v,通过计算可以得到在25下,baton电压值大概为0.669v。
再来看force_get_tbat()函数。
ret = battery_meter_ctrl(BATTERY_METER_CMD_GET_ADC_V_BAT_TEMP, &bat_temperature_volt);
得到adc取得的baton电压值,中间又做了一些转换,然后调用BattVoltToTemp()函数。 最后调用BattThermistorConverTemp()函数。 在BattThermistorConverTemp()函数里,跟据cust_battery_meter_table.h中定义的Batt_Temperature_Table表格来计算出温度值,这个表格是需要客户自己定制的,一般根据电池厂商提供的温度与阻值的曲线图来做修改。
完。
MTK 平台memory(emmc)移植常见问题总结
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
memory移植常见问题有:1、无法下载;2、下载后无法开机;
一旦出现此问题,需做确认以下三点:
1,必须用最新版本的flash tool下载;
2,memory是不是经过MTK验证过;
3,板子必须跑过ett测试,preloader里面的MDL(memorydevicelist)里面配置Dram timing必须是ett log输出的对应的Dram timing;
去确认后还是无法下载那么就做如下分析:
a.软件原因(一般问题出在研发端):
a1.EMI没有配置手机硬件本身用的memory信息,此问题一般在研发端下载未知的软件版本时候发生,具体可以check 此文件:Custom_MemoryDevice.h是否配置了硬件本身用的memory的part number;
2 a2.修改了emigen.pl或者修改其他preloader的某些文件,导致tool解析不出build出的preloader.bin的EMI参数,此类一般是preloader客制化问题引起的,可以咨询一下MTK;
a3.DRAM 的时序timing有误,可以对比一下ETT测试输出的DRAM timing;
b.硬件原因;
b1.memory本身的问题,此时需要做交叉对比实验确定是memory问题,还是板子问题,若是memory问题,请找memoryvendor;
b2.板子硬件有问题,此类问题一般是由于Memory周边的器件有贴错或者虚焊导致;需要拿到硬件分析;
二、下载后无法开机;
抓取串口log进行分析
1、我遇到的情况是温度过高强制断电,原因可能是在焊接memory的时候将板子搞得有点问题了。如下的log
电池温度过高,导致板子强制下电;。我们只需要验证一下memory时候Ok就可以了,所以我们可以先在代码中将温度检测关闭掉
具体做法如下:kernel/drivers/power/battery_common.c文件修改
- if(BMT_status.temperature >= 60)
+ if(0)//(BMT_status.temperature >= 60)
编译重新down一下kerne看看是否OK;
2、遇到如下log:
将这一段找到对应的代码,mediatek/platform/mt6592/kernel/drivers/thermal/mtk_ts_battery.c,让代码跳过这一段代码,修改代码: 修改为: 就可以正常的开机了。
如果遇到其他情况再做补充,谢谢!
- 关闭MTK电池检测
- mtk电池温度检测
- MTK 电池曲线配置
- MTK 电池曲线
- MTK 关于电池等级问题
- 【BMT】MTK电池充电问题
- MTK平台 电池驱动相关
- 如何检测电池状态
- 电池温度脚检测电池温度原理
- MTK智能平台电池曲线自动生成
- Android MTK 修改默认显示电池百分比
- Android MTK 修改默认显示电池百分比
- MTK检测指令
- MTK检测指令
- mtk lcd驱动检测
- mtk平台充电器检测
- Android:检测电池状态标志
- Android电池检测(2)
- Java面试题全集(中)
- 计算机图形学——OpenGL之光照
- Fragment和ViewPager嵌套使用
- 做题技巧
- 进程和线程的区别
- 关闭MTK电池检测
- 王道机试第三章总结
- POJ-3661 Running(dp)
- Spark:超越Hadoop MapReduce
- 山地车碟刹有响声怎么解决?
- MD5加盐
- 编程实现一个单链表实现创建、测长以及打印
- 异常类型
- ZOJ 3956 Course Selection System (dp 01背包)