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博客