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:LP-MSPM0L1306内部温度传感器

Guru**** 2393725 points
Other Parts Discussed in Thread: MSPM0L1306

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1219861/lp-mspm0l1306-lp-mspm0l1306-internal-temp-sensor

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

尊敬的先生或女士!

我有这样一个问题、即当两次测量之间存在延迟时、内部温度传感器的噪声非常大。 如果不存在任何延迟、测量噪声根本不会。 ADC 使用外部基准监控4个通道、其余3个通道 正常、但温度通道不正常。  我尝试了 ADC 的许多设置。 但问题是存在的。  

我尝试了以下步骤:

-不同的时钟源/分频值/f 范围值和不同的采样时间(大于6.1us)

-通过为该转换存储器选择另一个通道来禁用温度传感器,并通过选择通道11再次启用

-使用重复模式导致更多的浮点结果

-relocation DL_ADC12_enableConversions 函数和使用 DL_ADC12_disableConversions (ADC0);

我附加了一个更易于理解的示例代码。

示例1:当温度传感器没有噪声时:


int main(){

initSystem();

initAdc();

while (true){

makemometimage();

}

}

示例2:当温度传感器有噪声时(通常 ADC 测量值过低或为零)

int main(){

initSystem();

initAdc();

while (true){

makemometimage();

someDelay();

}

}

someDelay 可以是 delay_cycles ()或 for (int I=0;I<10000;I++),或任何计时器轮询布尔值(while (! value );)

initAdc(){

DL_GPIO_RESET (GPIOA);
DL_ADC12_RESET (ADC12_0_INST);
DL_VREF_RESET (VREF);

DL_GPIO_enablePower (GPIOA);
DL_ADC12_enablePower (ADC12_0_INST);
DL_VREF_enablePower (VREF);

DL_ADC12_ClockConfig gADC12_0ClockConfig ={
.clockSel = DL_ADC12_CLOCK_ULPCLK、
.diveRatio = DL_ADC12_CLOCK_Divid_1、
.freqRange = DL_ADC12_CLOCK_FREQ_RANGE_24_TO_32
};

静态 const DL_VREF_Config gVREFConfig ={
.vrefEnable = DL_VREF_ENABLE_DISABLE、
.bufConfig = DL_VREF_BUFCONFIG_OUTPUT_2_5V、
.shModeEnable = DL_VREF_SHMODE_DISABLE、
.holdCycleCount = DL_VREF_HOLD_MIN、
.shCycleCount = DL_VREF_SH_MIN、
};

静态 const DL_VREF_ClockConfig gVREFClockConfig ={
.clockSel = DL_VREF_CLOCK_BUSCLK、
divideRatio = DL_VREF_Cock_Divid_8、
};

DL_ADC12_initSeqSample (ADC0、
DL_ADC12_REPEATE_MODE_DISABLED、  
DL_ADC12_SAMPLING_SOURCE_AUTO、
DL_ADC12_TRIG_SRC_SOFTWARE、  
DL_ADC12_SEQ_START_ADDR_00、DL_ADC12_SEQ_END_ADDR_03
DL_ADC12_SAMP_CONV_RES_12_BIT、
DL_ADC12_SAMP_CONV_DATA_FORMAT_UNsigned);

DL_ADC12_configConversionMem (ADC0、
DL_ADC12_MEM_IDX_0、
DL_ADC12_INPUT_CHAN_11、
DL_ADC12_REFERY_VOLTAGE_EXTREF、//3.3V
DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0、
DL_ADC12_ev平均 值计算_mode_enabled、
DL_ADC12_BURIN_OUT_SOURCE_DISABLED、
DL_ADC12_TRIGGER_MODE_AUTO_NEXT、
DL_ADC12_WINDOWS_COMP_MODE_DISABLED);

DL_ADC12_setPowerDownMode (ADC0、DL_ADC12_POWER_DOWN_MODE_AUTO);
DL_ADC12_configHwAverage (ADC0、DL_ADC12_HW_AVG_NUM_ACC_8、DL_ADC12_HW_AVG_DEN_DIV_BY_8);

DL_ADC12_setSampleTime0 (ADC0、240);//尝试更长的 SAMP 时间  

DL_ADC12_clearInterruptStatus (ADC0、DL_ADC12_INTERRUPT_MEM3_RESULT_LOADED);
DL_ADC12_enableInterrupt (ADC0、DL_ADC12_INTERRUPT_MEM3_RESULT_LOADED);

DL_VREF_setClockConfig (VREF、
(DL_VREF_ClockConfig *)&gVREFClockConfig);
DL_VREF_configReference (VREF、
(DL_VREF_Config *)&gVREFConfig);

while (DL_VREF_CTL1_READY_NOTRDY = DL_VREF_getStatus (VREF));

NVIC_EnableIRQ (ADC0_INT_IRQn);
DL_ADC12_enableConversions (ADC0);
}

initSystem(){

DL_SYSCTL_setSYSOSCFreq (DL_SYSCTL_SYSOSC_FREQ_BASE);
DL_SYSCTL_setMCLKDivider (DL_SYSCTL_MCLK_DIVIDER_DISABLE);
DL_SYSCTL_setPowerPolicyRUN0SLEEP0//我还尝试了 DL_SYSCTL_setPowerPolicyRUN1SLEEP1 ();
DL_SYSCTL_setBORThreshold (DL_SYSCTL_BOR_THR_THR_LEVEL_0);

}

makemometimees(){


DL_ADC12_startConversion (ADC0);

while (!adcready);

adcready=false;
filteredAdcValue =filteredAdcValue*0.99+0.01*DL_ADC12_getMemResult (ADC0、DL_ADC12_MEM_IDX_0);
浮点 V_Sample =(filteredAdcValue - 0.5)* 3.3 / 4096.0;
Float V_Trim =(factoryTrimValue - 0.5)* 3.3 / 4096.0;
浮点 T_Sample =((1.0 /-0.002044)*(V_Sample - V_Trim)+ 30.0);

DL_ADC12_enableConversions (ADC0);

}

ADC0_IRQHandler ()

开关(DL_ADC12_getPendingInterrupt (ADC0))

案例 DL_ADC12_IIDX_MEM3_RESULT_LOADED:

adcready=true;
中断;
}

默认值:
中断;

}

}

提前感谢您的帮助!

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

    Daniel、您好!

    您使用的是量产器件还是预量产器件? 预量产器件没有激活温度传感器、而生产器件会激活温度传感器。

    此致、

    Luke

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

    Luke、您好!

    感谢您的回复! 我使用 PG2.1型号、生产器件。  

    此致、

    但以理

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

    Daniel、您好!

    您是说您目前正在使用 PG2、还是要在 PG2上进行测试?

    我已经取了一个 adc12_single_conversion 示例、并多添加了3个 ADC 读数(PA27、PA26、PA25)、并在第一个读数时使用温度传感器。 我使用3.3V 引脚将其他 ADC 通道连接到电阻分压器。 下面是我的结果。 adcResult[0]是温度传感器,而另一个是其他输入引脚。

    此致、

    Luke

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

    Luke、您好!

    我目前使用 PG 2.1版本的微控制器、 我的问题是、温度传感器中有良好的值、但有时在此通道上测量的值非常低、甚至为0、会导致高温浮动。

    此致、
    但以理

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

    Daniel、您好!

    在更改 ADC 设置时、您是否看到对值或低值出现的频率有任何影响?

    得到一个0读数意味着一个缺失的采样而一个低值将是一个悬空引脚或者采样速度过快。 我预计较长的采样时间会改善读数。 您是否可以更改为非常长的采样时间(例如32MHz 时钟速度下为2毫秒)、并告诉我这是否可以消除或减少0/低读数?

    此致、

    Luke

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

    Luke、您好!

    我尝试了建议的设置、但问题仍然存在。 正确的 ADC 值约为803、但有时等于700或更低。  

    此致、
    但以理

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

    Luke、您好!

    如果两次测量之间没有任何延迟、则测量效果良好。 但如果我添加延迟、就会出错。  

    此致、
    但以理

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

    Daniel、您好!

    您是指2个序列之间的延迟还是2个单次读数之间的延迟? 您是否能够向我发送 zip 文件、以便我可以复制该文件?

    此致、

    Luke

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

    Luke、您好!

    之间的空闲时间。

    首先、我 从 mspm0_SDK_1_00_00_04修改了"adc12_single_conversion_LP_MSPM0L1306_nortos_ticlang"工程 。 我附加一个 zip 文件、其中包含修改后的工程。 我测量4个通道、第三个是温度传感器。

    其次, 如果注释掉"delay_cycles(32*1000)",则测量更加稳定。 未将此行注释掉时、测量结果噪声会更大。 为什么此延迟会在测量中造成这种影响?

    此外、我们的目标是 对这4个通道进行测量的运行时间不应超过1ms、但运行时间应更短。

    第三、我想和 这个主题谈另外三个问题、即没有出厂调整值、使用更高的硬件平均值会在温度监控中导致更高的干扰、而使用0转换存储器测量 温度传感器则会更加稳定。 在手上、由于缺少出厂调整值、必须使用一个挑选的值。 该值何时会在微控制器中? 另一方面、我注意到、有时、但不是每次、当不使用转换存储器0来存储温度传感器的值时、数据的噪声会更大。  

    此外、我使用 CC Studio 12.2版本以 这种方式监控 ADC 值、就是在应该有有效 ADC 测量值的时候放置断点、并且修改了断点的属性、以便将 ADC 变量(float)的地址写入文件中。 我附加了两个文件(带 delay 和 without delay.txt)。 如果放置了延迟(在 withdelay.txt 中)、则其值低于815、从而导致高温悬空。  

    然而,我必须改变一个新的工作场所,因为前者已崩溃(CCS 始终检测到一个低 JVM 堆,并多次崩溃)。 Xmx 值被修改但没有成功。 在以前的工作场所、误差大于新工作场所、但仍然存在。 我监测了这个值、使用旧工作场所时、错误比使用新工作场所时更显著。

    为了概括,我想提出一些基本的问题:

    (1)温度传感器没有任何错误、但是 CCS 12.2V 或调试器有、是否存在这种情况、并且它们在调试器窗口中显示出来、并且错误地写入文件?

    (2)我在这个工作场所使用了几个月,从一个时刻到下一个时刻, CCS 变得更慢,并检测到总是低 JVM 堆和几十个工作室的错误。 工作场所是否有机会影响 CCS Studio 调试器(因为如果我没记错、工作场所包含 IDE 的一些设置)?

    (3)  微控制器何时提供"内部温度传感器的出厂修整值"?

    (4)在 PG2.1或完成之后将有其他版本的微控制器?

    (5)当使用重复模式或更高的硬件均值计算时、内部温度传感器的噪声会变得更高。 这两种设置对测量稳定性有何影响?

    (6)有时、如果不将转换存储器0用于温度传感器、噪声会变得更大。 为什么会发生这种情况?

    感谢您提前提供帮助!


    此致、
    但以理

    附件:  

     

     

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

    Daniel、您好!

    我将在明天深入研究这一问题并在最后进行测试 但在平均时间中有几个问题。

    1. 您可以通过 UART 发送 ADC 数据。 这样、您可以断开调试器的连接、只需通过 UART 读取相应的值、然后查看是否有任何骤降。 这将有助于检查此处的错误是由 IDE 还是调试器引起的。
    2. 我确实知道、先前的编译或产品(如 SDK)中可能存在会破坏编译过程的构件。 我不知道调试器上是否有效果。
    3. 温度传感器会针对您的器件进行修整。
    4. 这将是器件的生产版本。
    5. 硬件均值计算不应增加噪声、我必须对此进行测试。 我还将测试重复模式以查看潜在原因。
    6. 如果采样时间太短、那么在电容器稳定之前可能会有前一个样本的残留物、因为 MEM0是第一个不受其他样本影响的样本。 虽然应该不会有明显的串扰/趋稳干扰、所以我也会对此进行研究。

    此致、

    Luke

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

    Luke、您好!

    提前感谢您、非常感谢您的回答! 我运行建议的测试、如果通过 UART 监控温度 ADC 值、则结果是稳定的;不存在低值。

    我不理解(3)答案。 在器件 TRM (MSPM0 L 系列32MHz 微控制器技术参考手册(修订版 B)(TI.com)、第5557、84和85页)中、温度传感器部分的公式表示出厂修整值、该值 位于地址(0x41C4003C)的出厂恒定值中。 我的问题是、存储器中的这个值为0、因此我当前正在使用示例中的值。  

    我只有一个问题:该温度传感器是否不需要该修整值来保证其精确?

    提前感谢您的帮助、祝您愉快!


    此致、
    但以理

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

    Daniel、您好!

    很高兴使用 UART 来阅读结果一致的数据。  

    温度传感器处于激活状态、但由于该值为0、因此没有校准值。 校准值将包含室温(~20C)下的温度传感器值。 您在读取时所处的温度是一致的813-814、因此我会立即存储该值以继续您的测试/开发。

    器件 很快将正式发布 、因此您可以购买具有校准功能的器件。 我建议您联系 TI 销售代表了解具体日期。

    此致、

    Luke

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

    Luke、您好!

    感谢您的快速回答! 我有几个问题、只是为了澄清这个问题。  

    (1)您提到您要进行一些测试。 当尝试使用去抖器调试温度传感器 ADC 值时、您得到了什么结果? 您是否也尝试过 UART?

    (2)这是否意味着调试器或 IDE 具有某种错误、从而导致温度传感器悬空?

    (3)这是否意味着内部温度传感器完全正常运行、不包含任何错误? 那么、能否安全使用它呢?

    此致、

    但以理

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

    Daniel、您好!

    我认为您看到的结果是由于 XDS 和调试器侧的噪声导致的、因为电源是共享的。 断开调试器的连接有助于稳定电源。 温度传感器应提供数据表规格范围内的稳定读数。

    此致、

    Luke