主题中讨论的其他器件: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 值。
最棒的
重做