资讯详情

2022-06-09 RK817 PMU 电池温度检测

1.电阻随温度升高而增加,称为正温度系数(PTC,Positive Temperature Coefficient)热敏电阻。 2.电阻随温度升高而降低,称为负温度系数(NTC,Negative Temperature Coefficient)热敏电阻。

1、gas_gauge_ADC_CONFIG0 Address: Operational Base offset (0x0050),TS_ADC_EN位要配置为1

2、gas_gauge_ADC_CONFIG1 Address: Operational Base offset (0x0055)VOL_ADC_TSCUR_SEL确保这个描述从TS脚输出的电流大小.

3、CODEC_AREF_RTCFG1 Address: Operational Base offset (0x0017)REF_ADC_SEL 设置ADC 参考电压。

4、gas_gauge_BAT_TS_H 和gas_gauge_BAT_TS_L 获取ADC 值

修改的代码

commit b353b70850442863c4b051beb258681c6cd71cdf Author: xxx.wei <xxx.wei@xxx.cn> Date:   Thu Jun 9 14:09:22 2022  0800      get battery temperature      diff --git a/drivers/power/supply/rk817_battery.c b/drivers/power/supply/rk817_battery.c index 32e2d65..4c49a27 100755 --- a/drivers/power/supply/rk817_battery.c     b/drivers/power/supply/rk817_battery.c @@ -632,6  632,11 @@ struct rk817_battery_device {   bool    change; /* Battery status change, report information */  };    struct battery_res_temp_data {   unsigned long res;   int temp;  };    static void rk817_bat_resume_work(struct work_struct *work);    static u64 get_boot_sec(void) @@ -2095,6  2100,40 @@ static int rk817_battery_time_to_full(struct rk817_battery_device *battery)   return time_sec;  }    static const struct battery_res_temp_data bat_temp_table[] = {   {324  ,125},{  371,120},{  427,115},{  491,110},{  567,105},   {657  ,100},{  763, 95},{  890, 90},{ 1044, 85},{ 1228, 80},   {1452 , 75},{ 1725, 70},{ 2058, 65},{ 2466, 60},{ 2968, 55},   {3588 , 50},{ 4357, 45},{ 5318, 40},{ 6523, 35},{ 8047, 30},   {10000, 25},{12461, 20},{15652, 15},{19783, 10},{25152,  5},   {32116,  0},{41306, -{53280,-10},{68982,-15},{89682,-20}  };    #define BAT_TEMP_TEBLE_NUM (sizeof(bat_temp_table) / sizeof(bat_temp_table[0]))    static int  rk817_battery_get_temperature(struct rk817_battery_device *battery)  {      int i ,ret = 25 ;   unsigned long val = 0 ,res = 0;   val = rk817_bat_field_read(battery, BAT_TS_H) << 8;   val |= rk817_bat_field_read(battery, BAT_TS_L);      res=(val * 12 *10000)/(0XFFFF 1);//res=(val * 12 *1000000)/((0XFFFF 1)*10*10);   for( i = 0; i < BAT_TEMP_TEBLE_NUM ;i  )   {    if ( res <= bat_temp_table[i].res)    {     if( i > 0)      ret = bat_temp_table[i].temp   ((bat_temp_table[i].res - res)*5/(bat_temp_table[i].res-bat_temp_table[i-1].res));     else      ret = bat_temp_table[i].temp;       break;       }     }   printk("Negative Temperature Coefficient,val = %lu ,res = %lu ret = %d \r\n",val,res,ret);   return ret;  }    static int rk817_battery_get_property(struct power_supply *psy,            enum power_supply_property psp,            union power_supply_propval *val) @@ -2141,6  2180,7 @@ static int rk817_battery_get_property(struct power_supply *psy,    break;   case POWER_SUPPLY_PROP_TEMP:    val->intval = battery->temperature;    val->intval = rk817_battery_get_temperature(battery);    if (battery->pdata->bat_mode == MODE_VIRTUAL)     val->intval = VIRTUAL_TEMPERATURE;    break; 

2、cat /sys/class/power_supply/battery/temp 获取温度值

RK3566,rk817上TS脚模拟输入功能NTC检测_lkdcom的博客-CSDN博客

NTC温度传感器395010k_热敏电阻温度阻值对应表 - 百度文库

标签: ptc正温度系数电阻器ts4温度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台