This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280049C:来自内部温度传感器关闭的值

Guru**** 2560390 points
Other Parts Discussed in Thread: TMS320F280049C

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1332690/tms320f280049c-values-from-internal-temperature-sensor-off

器件型号:TMS320F280049C

各位专家、您好!

使用 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 选项后、这些值开始与预期一致。

此致、

约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、John:

    嵌入式代码片段上的第4行是否存在拼写错误?  pADCData->TempCPU = ADC_getTemperature K (value_ui16、3.3F);。  你应该使用 ADC_getTemperatureC 不管怎样、901至926 ADC 值都有点低。  斜率和偏移值处于预期范围内。  您是否能够尝试切换到内部2.5V、以查看 ADC 转换的值是否发生相应变化?  这可能是此处发生 VREFHI 争用。  

    顺便说一下、感谢您提供了所有详细信息、如原始 ADC 数据、斜率和偏移值。  这使得调试容易得多。

    此致、

    约瑟夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Joseph、您好!

    感谢您的建议。 我将所有 ADC 的 Vref 从3.3V 切换到2.5V:

       adc_setVREF (obj->adcHandle[0]、adc_reference_internal、adc_reference_2_5V);
       adc_setVREF (obj->adcHandle[1]、adc_reference_internal、adc_reference_2_5V);
       adc_setVREF (obj->adcHandle[2]、adc_reference_internal、adc_reference_2_5V);

    结果 ADC 原始值从924降至831、ADC_getTemperatureC 返回-167 °C 的温度。 您会如何评估此结果?

    我还使用类似的结果在其他原型板上对偏移值和返回值进行了检查、因此它似乎是系统错误。

    在回答您的第一个问题时、我还尝试使用 ADC_getTemperature K 从 driverlib 中下载(遗憾的是、没有改进)。 你有一个很好的眼睛。 我复制了错误的代码:-(

    此致、

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、John:

    VREFHI 引脚上似乎存在争用。  您使用哪种引脚封装、100PZ、64PM 或56RSH?  是否有任何方法可以测量电路板上的 VREHI 电压?  对于内部 VREF 模式、仍必须将基准电压从器件引出至 VREFHI 引脚、以便其外部可以使用 VREFHI 电容器、因为最小2.2uF 需要片上电容是不切实际的。 内部2.5VREF 将在 VREFHI 引脚上生成该值。  内部3.3VREF 在 VREFHI 引脚上的值将是这个值的一半。

    在室温下、如果 VREFHI 引脚测量产生2.5V 电压、那么您正在查看的部件的原始值应为2000。

    此致、

    约瑟夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Joseph、您好!

    我们的原型采用56RSH 器件版本 B:

    我们已开始在3.3V 下使用内部 VREF 模式、并根据数据表中的建议在 VREFHI 和 GND 之间连接一个2.2uF 电容:

    内部3.3Vref 模式下、C74上的电压为1649V、内部2.5Vref 模式下为2.496V。

    是否有可能解决此争用?
    它从何而来?
    C74上的电压似乎符合您的描述。 增加 C74的大小是否可以缓解这一问题?

    此致、

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jack、

    外部引脚上的 VREFHI 输出在这些内部模式下符合预期、并且没有其他路径看起来从外部加载 VREFHI 引脚、因此我们可以排除 VREFHI 作为问题。  您还可以检查以下两项吗:

       -什么是位 TSNSCTL.ENABLE 的设置?  该位应设置为"1"、以便将温度传感器连接到 ADC

       -为温度传感器读数转换的通道和模块是什么?  这应该在通道14的 ADCB 上

    谢谢。此致。

    约瑟夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Joseph、您好!

    就是这样! ADC 从通道14 (右侧)读取、但从基准 C 而不是 B 读取。现在、ADC 值大约出现在1511左右、ADC 例程返回一个适合室温的27.0 °C 值。

    所以、议题得到了解决。 感谢您的支持。

    此致、

    约翰