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.

[参考译文] MSP432P401M:MSP432 64引脚(IRGC)封装:内部温度传感器存在问题

Guru**** 2582405 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/612529/msp432p401m-msp432-64-pin-irgc-package-problem-with-internal-temperature-sensor

器件型号:MSP432P401M
主题中讨论的其他器件:MSP432P401R

你(们)好

我无法从 MSP432的内部温度传感器(64引脚封装、修订版 D)获取合理的值。 该代码可与 Launchpad (100引脚封装)配合使用。

我使用的是 CCS 7.2和最新 MSP432 driverlib 3.21随附的示例代码。

void main (void)
{
[...] //一些初始化代码

FPU_enableModule ();
FPU_enableLazyStacking ();
ADC14_enableModule ();
ADC14_initModule (ADC_CLOCKSOURCE_MCLK、ADC_PREDIVIDER_1、 ADC_DIVIDER_1、ADC_TEMPSENMAP);
ADC14_CONFIGureSingleSampleMode (ADC_MEM0、TRUE); 
//将温度传感器(64引脚封装上的通道10)映射到 MEM0 ADC14_configureConversionMemory (ADC_MEM0、ADC_VREFPOS_AVCC_VREFNEG_VSS、ADC_INPUT_A10、false); ADC14_setSampleHoldTime (ADC_PULSE_WIDTH_192、ADC_PULSE);ADC_WULSE WIDTH ADC14_enableSampleTimer (adc_manual_iteration); ADC14_enableInterrupt (adc_int0); REF_A_setReferenceVoltage (REF_A_VREF2_5V); REF_A_enableReferenceVoltage (); REF_A_enableTempSensor (); interrupt_enableInterrupt (INT_ADC14); ADC14_enableConversion ();

interrupt_enableMaster (); while (1) { ADC14_toggleConversionTrigg(); _DELAY_CYCLLES (10000000); } void ADC14_IRQHandler (void) { uint64_t status = ADC14_getEncableInterruptStatus (); ADC14_clearInterruptFlag (status); if (status & ADC_INT0) { uint32_t cal30 = SYSCTL_getTempCalibrationConstant (SYSCTL_2_5V_REF、SYSCTL_30_degree_C); uint32_t cal85 = sysctl_getTempCalibrationConstant (sysctl_2_5V_REF、sysctl_85_degree_C); uint32_t 结果=(uint32_t) ADC14_getResult (ADC_MEM0); 浮点温度 C =(浮点)((结果- cal30)*(85 - 30))/(cal85 - cal30)+ 30.0f; DBG_PRINT ("内部温度传感器:%.2f°C (RAW:%u)"、tempC、结果); } }

输出始终为16383、最大值 14位模式下的 ADC 值。

最棒的
重做

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我认为问题在于线路10上使用 AVCC 的基准设置、而不是2.5V 的内部基准。 您的应用中的 AVCC 是什么? 请在此处查找更新的示例:

    dev.ti.com/.../

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

    您好 Chris

    遗憾 的是、我尝试将基准电压更改为 ADC_VREFPOS_INTBUF_VREFNEG_VSS、但没有成功。 链接的示例代码也不起作用...

    您是否可以选择在64引脚封装上测试代码?

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

    我使用 MSP432P401R 64引脚封装测试了该示例。  您能否提供有关电路板和设置的更多信息?  (AVCC、DVCC、时钟设置)

    此致、
    Chris

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

    感谢您的回复。 好的、很高兴知道它通常工作、因此我的配置似乎有问题。

    AVCC = DVCC = 3.0V
    MCLK = HFXT = 48MHz
    HSMCLK = HFXT / 4 = 12MHz
    SMCLK = HFXT / 16 = 3MHz
    ACLK = BCLK = LFXT = 32kHz
    REF0 = 32k


    它是定制板、电容和电阻器的布局几乎与 Launchpad 的参考设计相同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你。 我将在我的一侧进行测试、但 ADC 可以运行的最大频率为25MHz。 我建议使用 MCLK 以外的其他时钟。 有内部25MHz 和5MHz 振荡器。

    ADC_CLOCKSOURCE_ADCOSC

    ADC_CLOCKSOURCE_SYSOSC

    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我只能工作了! 当我不将 ADC_INPUT_A22更改为 ADC_INPUT_A10时、代码会起作用!

    这似乎是数据表中的错误。 P134显示温度传感器的通道源为 A10 (即 MAX_CHANNELS - 2)、这显然是错误的...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Keepcoding。 我认为您是正确的、这是一个文档错误。 我提交了一个相应的错误。 我发送的代码示例之所以起作用、是因为它确实使用 A22而不是 A10、根据文档、这对于64引脚器件是不正确的。 很抱歉我没收到这个消息。

    此致、
    Chris