Other Parts Discussed in Thread: BQ76907
器件型号: BQ76907
您好 TI 支持团队:
我正在使用 BQ76907 IC、目前在使用外部 NTC 热敏电阻从 TS 引脚读取温度时遇到了问题。
设置详细信息:
-
IC:BQ76907
-
热敏电阻:1K NTC
-
TS 引脚配置为热敏电阻模式(启用内部~20k 上拉电阻)
-
读取 TS1 温度寄存器
问题:
我无法获得准确或稳定的温度读数。 值显示不正确或超出预期范围。
我的理解:
从 TRM 中可以看出、TS 测量满量程为:
Vref×(5/3) 超过 32768 个计数。
由于 TS 引脚在热敏电阻模式下使用一个连接至 1.8V 的内部~20k 上拉电阻器、因此我假设测量是比例式的、并使用以下方法计算电阻和温度。
用于转换的代码:
static float BQ76907_ConvertTsCountsToCelsius(uint16_t tsMeas) {
const float pullupOhm = 20000.0f;
const float r25Ohm = 10000.0f;
const float beta = 3435.0f;
const float t0Kelvin = 298.15f;
const float ratioScale = (5.0f / 3.0f) / 32768.0f;
float ratio = (float) tsMeas * ratioScale;
if ((ratio <= 0.0f) || (ratio >= 0.999f)) {
return NAN;
}
float rNtc = pullupOhm * ratio / (1.0f - ratio);
if (rNtc <= 0.0f) {
return NAN;
}
float invT = (1.0f / t0Kelvin) + (1.0f / beta) * logf(rNtc / r25Ohm);
if (invT <= 0.0f) {
return NAN;
}
return (1.0f / invT) - 273.15f;
}
float BQ7690x_ReadTemperature(void) {
uint16_t raw = BQ7690x_ReadWord(0x2A);
float tsTempC = BQ76907_ConvertTsCountsToCelsius(raw);
if (isnan(tsTempC) || (tsTempC < -50.0f) || (tsTempC > 150.0f)) {
return BQ76907_DecodeCelsiusFromReg(raw);
}
return tsTempC * BQ_TS_EXT_TEMP_SCALE;
}
我的问题:
-
TS1Temperature 寄存器是否提供原始 ADC 计数或已转换的温度?
-
使用 (5/3)/32768 的缩放是否适用于 TS 测量?
-
内部 20k 上拉电阻是否需要校准或校正?
-
PowerConfig 或 TS 设置中是否需要任何特定配置?
我怀疑:
-
TS 寄存器格式解释不正确、或
-
热敏电阻值和内部上拉电阻之间不匹配
您能否介绍从 TS 引脚读取外部热敏电阻温度的正确方法?

此致、
Yash