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.

[参考译文] LP-MSPM0L1306:温度传感器公式不清楚

Guru**** 2387830 points
Other Parts Discussed in Thread: MSPM0L1304, MSPM0L1306, LP-MSPM0L1306, MSPM0G3507
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1311550/lp-mspm0l1306-temperature-sensor-formula-unclear

器件型号:LP-MSPM0L1306
主题中讨论的其他器件:MSPM0L1304MSPM0L1306、、 MSPM0G3507

您好!

我正在处理一个使用内部温度传感器的 MSPM0L1306/MSPM0L1304应用。 我已经修改了 ADC12_single_conversion 示例、以使用内部温度传感器和1.4V 内部基准。 有了开发板在办公桌上、我得到的值在1900和1910年左右、TEMP_SENSE_0我的芯片的值是407。

将这些值插入到手册(SLAU847C、修订于2023年5月)第2.2.5节的公式中、我得到:

VSAMPLE =(1.4V / 4096)*(1900 - 0.5) = 649.2mV

VTRIM =(1.4V / 4096)*(407 - 0.5)= 138.9mV

TSAMPLE =(649.2mV - 138.9mV)/(-1.75mV /°C)+ 30°C =-262 °C

这个值是不现实的。 然而、当使用手册示例中的 VTRIM 时、我会得到更合理的结果:

TSAMPLE =(649.2mV - 634.5mV)/(-1.75mV /°C)+ 30°C = 22 °C

但是、这忽略了任何单芯片工厂校准、我不愿意在生产中使用此类修复。 我的另一个 LP-MSPM0L1306也得到了类似的结果。

我是否遗漏了某个东西?或者此芯片中的 TEMP_SENSE_0值是否编程错误?

下面是完整的 FACTORYREGION:

0x41C40000   00000000   1BB8202F   80C2DDD3   02180217   03020301   00001293   00040040 00000000    
0x41C40020   00000000 00000000 00000000      00000000   00000000       00000000 00000000       00000197
0x41C40040   00000000 00000000 00000000      00000000   00000000       00000000 00000000   00000000    
0x41C40060   00000000 00000000 00000000 00000000 00000000                00000000 00000000      CB6D8077

使用的软件:Ubuntu 22.04、Code Composer Studio 12.5.0.00007、ARM GCC 10.3-2021.10、MSPM0 SDK 1.20.00.05

附件中提供了修改后的示例代码以及编译后的二进制文件存档。

谢谢!

鲍林特

e2e.ti.com/.../adc12_5F00_single_5F00_conversion.zip

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

    您是否尝试过 Resource Explorer 中的示例程序?

    ADC12_internal_temp_sensor_mathacl.c

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

    尊敬的 Keith:

    否、我没有考虑该示例、因为我所使用的器件不存在该示例。 从 MSPM0G1307移植该示例后、我获得-146°C。 没有骰子。

    让我来看看差异。

    • 我得到807个 ADC 计数。 这是因为该示例使用3.3V VDDA 值作为基准。 VSAMPLE 值最终为649.8mV、因此这是一致的。
    • 该示例使用相同的校准值* 0x41C4003C == 407
    • 根据该示例计算、VTRIM 为342mV。 这是因为它使用3.45V 作为基准、这与任一器件的参考手册相反。 (SLAU847C 和 SLAU846A、两者都规定1.4V)

    • 奇怪的是、该示例使用了1.75mV/°C 的温度系数、而不是如 MSPM0G1307的记录所示的1.8mV/°C。 这与 MSPM0L1306的文档相匹配、但无论如何、这不应导致数量级错误。

    一旦我"固定"基准电压、我返回到 VTRIM = 139mV、并且我得到-262°C 的最终结果、与之前一样。

    请再次查看随附的修改后的示例代码。

    e2e.ti.com/.../adc12_5F00_internal_5F00_temp_5F00_sensor_5F00_mathacl_5F00_LP_5F00_MSPM0G3507_5F00_nortos_5F00_gcc.zip

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

    HI Balint Kovacs

    您能评论一下您使用的是哪一款电路板吗?

    以及选择了哪个器件  MSPM0G1306或 MSPM0L1306?

    谢谢!

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

    尊敬的 Xiaodong:

    我使用的是 LP-MSPM0L1306。 在第一个示例中、我已从 SDK 导入相应的示例、仅修改源代码。

    在第二个系统中、我从 Resource Explorer 中获得了一个用于 MSPM0G3507的模块、并将其移植到 MSPM0L1306。 (抱歉、我没有更改项目名称。) 主要步骤如下:

    1. 在 SYSCFG 中更改器件和电路板类型
    2. 删除 MATHACL 外设
    3. 将 IQMath 库版本更改为 RTS (因为 MATHACL 不可用)
    4. 将源代码中的常数与任一芯片的手册

    无论如何、第二个示例并没有真正改变我的结果。

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

    好的、我有机会深入探讨这个问题。 我在 MSMP0G3507 Launchpad 上运行该程序。

    常量:

    #define TEMP_TS_TRIM_C                       ((uint32_t) 30)
    /*
     *下面的常量是(1/TSC)。 其中 TSC 是温度传感器系数
     *可在设备数据表中找到
     */
    #define TEMP_TS_COEF_mV_C                       (-571.42f)

    #define ADC_VREF_VOLTAGE                          (3.3f)
    #define ADC_BIT_Resolution                  ((uint32_t)(1)<<12)
    DL_SYSCTL_getTempCalibrationConstant()返回763.0
    dVTrim = 3.45 *((double) DL_SYSCTL_getTempCalibrationConstant ()- 0.5)/ 4096.0
    dVTrim = 3.45 *(763 - 0.5)/ 4096 = 0.6422
    [我不知道为什么3.3更改为3.45]
    ADC 返回805计数、因此
    dVSample = ADC_VREF_VOLTAGE *(adcResult - 0.5)/ ADC_BIT_Resolution;
    dVSample =.64816……
    dTsample =(TEMP_TS_COEF_mV_C *(dVSample - dVTrim))+ TEMP_TS_TRIM_C;
    dTSample =-571.42 *(.64816 -.6422)+ 30 = 26.61
    我认为是有道理的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、这是一个很好的新数据点。 我想这意味着问题出在 VTRIM 公式中。 对于 MSMP0G3507、参考手册中的1.4V 基准电压似乎是错误的。 似乎也是:

    • 我的 LP-MSPM0L1306的校准常数有误
    • 正确的 VTRIM 公式是第三个公式、与文档或 MSMP0G3507示例中的公式不同。

    我仍然不确定如何从这里着手、确认这些怀疑将非常有帮助。

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

    您好、 

    您在哪里以及何时获得这些 LP-MSPM0L1306?

    -

    早期样品'[0x41C4003C、TEMP_SENSE0]不正确。

    -

    从  我最新的 LP-G3507的 TEMP_SENSE0读取的结果是766。

    与 读数结果 763.0相比,如果  在开发中使用此 VTRIM ,则可以设置一个固定的数字。

    顺便说一下、示例 代码将在最新的 LaunchPad 上正常工作。

    -

    谢谢、 

    -

    此致、

    赫利克

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

    您好、Helic、

    我从 mouser.co.uk 获得了 LP-MSPM0L1306的产品、订单日期为2023年11月13日。 请在其中一人的箱子上附上标签图片。

    谢谢!

    鲍林特

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

    您好、 

    根据您读取的出厂区域、(0x41C40000)

    应该是早期样品没有正确的温度调整。

    顺便说一下、这个3.45应该是3.3V、它将在接下来的几次更新中进行更改。

    感谢您的反馈。

    此致、

    赫利克

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

    您好、Helic、

    谢谢、这是很好的了解、还要确认 VTRIM 公式中应使用3.3V。 最后一点、我们是否有办法在将来避免购买受影响的组件?

    谢谢!

    鲍林特

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

    您好、 

    这些芯片 都是 正常的功能评估。

    您可以注意 SEAL DT ON LP、并 在购买之前与供应商确认。

    此致、

    赫利克

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

    您好、Helic、

    我们不打算再购买任何 LaunchPad 板、但例如、如果我们在首次投产时购买了1000块、我们是否需要担心? 我们计划专门使用 MSPM0L1304TRGE。

    谢谢!

    鲍林特

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

    您好、 

    我不知道有哪个批次的 M0L1304库存。

    请与您当地的 TI 销售人员联系。

    如果您担心所购买的芯片同样有问题、可以 在购买前联系销售部门讨论解决方案。

    例如,你可以测试 几个样本与同一 批1000图片首先. 如果仍然有错误的 Vtrim、您可以要求退款并退货。

    此致、

    赫利克