如何查看手机锂电池温度度

冰山一角。
mtk电池温度检测
平台:mt6735+mt6328 Android版本:Android5.1
手机里面电池通常有4个引脚,即电池的+、-极,ID引脚、NTC引脚。id引脚用来识别电池的类型,例如是锂电池还是镍氢电池,不过现在手机上基本用的都是锂电池了。而NTC引脚主要用来测量电池温度的,还可以用来检测手机有没有按上电池,那么这里就来说明这两个功能。
1. 电池检测
在mt6735+mt6328平台方案中,电池的NTC引脚需要接到mt6328的BATON引脚上,preloader中的检测代码如下:int hw_check_battery(void)
#ifdef MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION
print("ignore bat check !\n");
#if CFG_EVB_PLATFORM
print("ignore bat check\n");
U32 val=0;
ret_val=pmic_config_interface( (U32)(MT6328_VTREF_CON0),
(U32)(MT6328_PMIC_RG_TREF_EN_MASK),
(U32)(MT6328_PMIC_RG_TREF_EN_SHIFT)
ret_val=pmic_config_interface( (U32)(MT6328_VTREF_CON0),
(U32)(MT6328_PMIC_RG_TREF_ON_CTRL_MASK),
(U32)(MT6328_PMIC_RG_TREF_ON_CTRL_SHIFT)
mt6325_upmu_set_baton_tdet_en(1);
mt6325_upmu_set_rg_baton_en(1);
val = mt6325_upmu_get_rgs_baton_undet();
if(val==0)
print("bat is exist\n");
print("bat NOT exist\n");
也就是通过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()函数。
int force_get_tbat(kal_bool update)
#if defined(CONFIG_POWER_EXT) || defined(FIXED_TBAT_25)
bm_print(BM_LOG_CRTI, "[force_get_tbat] fixed TBAT=25 t\n");
return 25;
int bat_temperature_volt = 0;
int bat_temperature_val = 0;
static int pre_bat_temperature_val = -1;
int fg_r_value = 0;
kal_int32 fg_current_temp = 0;
kal_bool fg_current_state = KAL_FALSE;
int bat_temperature_volt_temp = 0;
int ret = 0;
if (update == KAL_TRUE || pre_bat_temperature_val == -1) {
/* Get V_BAT_Temperature */
bat_temperature_volt = 2;
ret = battery_meter_ctrl(BATTERY_METER_CMD_GET_ADC_V_BAT_TEMP, &bat_temperature_volt);
if (bat_temperature_volt != 0) {
#if defined(SOC_BY_HW_FG)
fg_r_value = get_r_fg_value();
ret = battery_meter_ctrl(BATTERY_METER_CMD_GET_HW_FG_CURRENT, &fg_current_temp);
battery_meter_ctrl(BATTERY_METER_CMD_GET_HW_FG_CURRENT_SIGN, &fg_current_state);
fg_current_temp = fg_current_temp / 10;
if (fg_current_state == KAL_TRUE) {
bat_temperature_volt_temp = bat_temperature_
bat_temperature_volt =
bat_temperature_volt - ((fg_current_temp * fg_r_value) / 1000);
bat_temperature_volt_temp = bat_temperature_
bat_temperature_volt =
bat_temperature_volt + ((fg_current_temp * fg_r_value) / 1000);
bat_temperature_val = BattVoltToTemp(bat_temperature_volt);
bm_print(BM_LOG_CRTI, "[force_get_tbat] %d,%d,%d,%d,%d,%d\n",
bat_temperature_volt_temp, bat_temperature_volt, fg_current_state, fg_current_temp,
fg_r_value, bat_temperature_val);
pre_bat_temperature_val = bat_temperature_
bat_temperature_val = pre_bat_temperature_
return bat_temperature_
}通过这里:
ret = battery_meter_ctrl(BATTERY_METER_CMD_GET_ADC_V_BAT_TEMP, &bat_temperature_volt);
得到adc取得的baton电压值,中间又做了一些转换,然后调用BattVoltToTemp()函数。int BattVoltToTemp(int dwVolt)
kal_int64 TRes_
kal_int64 TR
int sBaTTMP = -100;
/* TRes_temp = ((kal_int64)RBAT_PULL_UP_R*(kal_int64)dwVolt) / (RBAT_PULL_UP_VOLT-dwVolt); */
/* TRes = (TRes_temp * (kal_int64)RBAT_PULL_DOWN_R)/((kal_int64)RBAT_PULL_DOWN_R - TRes_temp); */
TRes_temp = (RBAT_PULL_UP_R * (kal_int64) dwVolt);
do_div(TRes_temp, (RBAT_PULL_UP_VOLT - dwVolt));
#ifdef RBAT_PULL_DOWN_R
TRes = (TRes_temp * RBAT_PULL_DOWN_R);
do_div(TRes, abs(RBAT_PULL_DOWN_R - TRes_temp));
TRes = TRes_
/* convert register to temperature */
sBaTTMP = BattThermistorConverTemp((int)TRes);
return sBaTTMP;
}最后调用BattThermistorConverTemp()函数。int BattThermistorConverTemp(int Res)
int i = 0;
int RES1 = 0, RES2 = 0;
int TBatt_Value = -200, TMP1 = 0, TMP2 = 0;
if (Res &= Batt_Temperature_Table[0].TemperatureR) {
TBatt_Value = -20;
} else if (Res &= Batt_Temperature_Table[16].TemperatureR) {
TBatt_Value = 60;
RES1 = Batt_Temperature_Table[0].TemperatureR;
TMP1 = Batt_Temperature_Table[0].BatteryT
for (i = 0; i &= 16; i++) {
if (Res &= Batt_Temperature_Table[i].TemperatureR) {
RES2 = Batt_Temperature_Table[i].TemperatureR;
TMP2 = Batt_Temperature_Table[i].BatteryT
RES1 = Batt_Temperature_Table[i].TemperatureR;
TMP1 = Batt_Temperature_Table[i].BatteryT
TBatt_Value = (((Res - RES2) * TMP1) + ((RES1 - Res) * TMP2)) / (RES1 - RES2);
return TBatt_V
}在BattThermistorConverTemp()函数里,跟据cust_battery_meter_table.h中定义的Batt_Temperature_Table表格来计算出温度值,这个表格是需要客户自己定制的,一般根据电池厂商提供的温度与阻值的曲线图来做修改。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!怎么看iPhone电池温度 iPhone6电池温度查看方法_电脑百事网
怎么看iPhone电池温度 iPhone6电池温度查看方法
百事网原创
怎么看iPhone电池温度?手机电池温度超过正常范围时,会使电池性能大幅下降,容易导致手机耗电明显加快,甚至影响电池寿命等。在如今到来的炎热夏季,很多iPhone都会在充电或者玩游戏/看视频的时候,出现iPhone发热严重的现象,下面小编以iPhone6为例,教大家如何查看手机电池温度,当出现手机电池温度偏高时,建议大家停止玩手机或者拿到通风好的地方进行降温,以保养手机电池。要查看iPhone电池温度其实并不难,有很多APP都可以检测,比如电池医生、硬件管家等等。下面我们以硬件管家为例,教大家如何查看iPhone6电池温度。1、首先在iPhone的App Store应用商店下载“硬件管家”,然后打开运行,如下图所示。2、打开硬件管家之后,然后点击进入“电池保养”,如下图所示。3、进入电池保养后,就可以看到iPhone电池当前温度了,一般iPhone电池正常温度是在35度以内,超过了35度,则说明电池温度就是过热了。如上图,通过测试,小编手中这部iPhone6电池温度是32度左右,属于正常范围。如果大家测试出iPhone电池温度超过35度,就注意要降温了,比如停止玩手机,关闭后台所有应用,等待电池温度降低至正常范围等等。由于夏季环境温度比较高,一般充电较长时间,iPhone电池温度会稍微偏高,这属于正常现象,如果想要改善这个问题,可以将iPhone放置在通风,环境温度较低的地方充电,不如有空调的地方,这样可以有效解决iPhone电池温度高的问题。延伸阅读:
当前位置:正文华为Mate8手机使用教程:如何进行电池温度查看-ROM下载之家官网
华为Mate8手机使用教程:如何进行电池温度查看
  最近手机安全事故经常爆出,如手机充电爆炸,手机太烫烧起来等等。每当我们长时间玩手机时,手机确实非常烫,难免担心。这时你可以查查你的手机电池温度。下面小编就来分享下华为Mate8是如何进行电池温度查看的。
  华为Mate8电池温度查看教程:
  1)首先我们先打开【电话】,然后打开拨号键盘输入【*#*#2846579#*#*】,打开后点击【补电】。
  2)最后我们即可查看到【电池温度】了。
  当你们手机发烫时,不妨按此步骤查询一下自己手机电池的温度。
& & & 华为Mate8手机刷机包rom下载:
热门刷机包top10
热门刷机教程top10
热门ROM资讯top10
热门手机刷机包
热门刷机包top10
热门刷机教程top10
热门ROM资讯top10
热门手机刷机包
刷机包下载已解决问题
刚买的手机电池,充满了电上手机上面显示电池温度过高是怎么回事
浏览次数:8534
用手机阿里扫一扫
最满意答案
该答案已经被保护
可以下个充电的辅助软件来充电,试试用金山电池医生来帮你充电,不仅能完全充满,还能帮你的手机省电、延长电池寿命。金山电池医生提供了一键省电优化功能,通过调整系统软件设置,关闭后台多余进程的方式,提高手机的待机时间。用户可以根据需要选择普通省电模式和超强省电模式,在使用时间和功能之间达到最佳平衡。金山电池医生通过对充电过程的优化,来达到延长电池使用寿命的效果。当手机电量低于20%以后,启动金山电池医生,然后接上充电器就可以了。
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is ok}

我要回帖

更多关于 怎样查看 oppo手机温度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信