各位专家、您好!
使用 TMS320F280049C 上的内部温度传感器并使用片上校准值、我将获得室温下的-102°C 返回值。
对于转换、在选取原始 ADC 值后、来自驱动程序库的 ADC_getTemperatureC 在 ISR 中被调用。 代码如下所示:
// read CPU Temp adc value
pADCData->rawVSEN_TCPU = ADC_readResult(MTR1_TEMP_ADCRES_BASE, MTR1_TCPU_ADC_SOC_NUM);
value_ui16 = pADCData->rawVSEN_TCPU;
pADCData->TempCPU = ADC_getTemperatureK(value_ui16, 3.3F);
TRM 中给出的 S/H 窗口时间设置为450ns (我也尝试了更长的时间、长达10us、没有改进)、并使用了内部3.3V Vref。
ADC 传递的原始值在第一回合约为901、在5或10分钟运行后升高至926。 这是室温的精密原始值吗?
片上外部偏移校准值为1830、斜率校准值为24404。 它们处于正确的范围内吗?
ADC.h 中还有表示内部校准值的符号:
#define ADC_INT_REF_TSSLOPE (*(int16_t *)((uintptr_t)0x705BD)) #define ADC_INT_REF_TSOFFSET (*(int16_t *)((uintptr_t)0x705BE))
虽然这些值会在室温下返回-38°C、但它们仍不在数据表中指定的- 15°C 范围内、或在使用论坛中提到的 int Vref 时不在- 20°C 范围内:
tms320f280049 -内部温度传感器-带 ADC-内部参考
该怎么办?
作为一个附带说明:首先,转换给出了完全的 eratic 返回值。 关闭 IDIV 选项后、这些值开始与预期一致。
此致、
约翰
