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.

[参考译文] CCS/SIMPLELINK-MSP432-SDK:ADC转换器所需的帮助

Guru**** 2535750 points
Other Parts Discussed in Thread: ENERGIA, MSP432WARE

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/584888/ccs-simplelink-msp432-sdk-help-needed-with-adc-convertor

部件号:SIMPLELINK-MSP432-SDK
主题中讨论的其他部件:EnergiaMSP432WARE

工具/软件:Code Composer Studio

大家好,我们目前正在进行一个项目,但无法获得所需的读数。

我们正在测试一个二氧化碳检测器,它会发出模拟信号(假设我们只是模拟Energia上的()),但我们正在使用CCS作为将来的参考。

我们使用了MSP432Ware在单一转换重复下给出的示例

这是我们编写的代码  

/* DriverLib包括*/
#include "driverlib.h"

/*标准包括*/
#include <stdint.h>
#include <stdbool.h>

静态易失性uint16_t curADCResult;
静态易失性浮点法正态ADCRes;

内部主(无效)

/*停止监视*/
MAP_WDT_A_HoldTimer();
curADCResult = 0;

Flashctl_setWaitState(flash_BANK0,2);
Flashctl_setWaitState(flash_Bank1,2);

PCM_setPowerState(PCM_AM_LDO_VCORE1);
cs_setDCOCenteredFrequency (CS_DCO_Frequency_48);

FPU_enableModule();
FPU_enableLazyStacking();
ADC14_enableModule();
ADC14_INITModule (ADC_CLOCKSOURCE_MCLK,ADC_PREDIVIDER_1,ADC_DIVIDER_4,0);

GPIO _setAsPeripheralModuleFunctionInputPin (GPIO_PORT_P5, GPIO_primary_module_function);//设置CO2传感器输入
ADC14_configureSingleSampleMode (ADC_MEM0,TRUE);
ADC14_configureConversionMemory (ADC_MEM0,ADC_VREFPOS_AVCC_VREFNEG_VSS,ADC_INPUT_A0,FALSE);
ADC14_enableSampleTimer(ADC_MANUAL_ITED);
ADC14_enableConversion();
ADC14_toggleConversionTrigger();

ADC14_enableInterrupt (ADC_INT0);
interrupT_enableInterrupt (INT_ADC14);
interrup_enableMaster();

GPIO_setAsOutputPin (GPIO端口P2,GPIO _PIN0);//红色
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN0);
GPIO _setAsOutputPin (GPIO端口P2,GPIO _PIN1);//绿色
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN1);
GPIO _setAsOutputPin (GPIO端口P2,GPIO _PIN2);//蓝色
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN2);

易失性UINT32_t u;
uINT32_t易失性I;


同时(1)

PCM_gotoLPM0();
i =(int)规范的ADCRes;

如果(I<=100)

GPIO_setOutputHighOnPin (GPIO端口P2,GPIO _PIN1);//绿灯亮起
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN2);
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN0);


}
否则,如果((i>100)&&(I<200))

GPIO_setOutputHighOnPin (GPIO端口P2,GPIO _PIN2);//蓝灯亮起
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN1);
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN0);

}
否则,如果(i>=200)

GPIO_setOutputHighOnPin (GPIO端口P2,GPIO _PIN0);//红灯亮起
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN1);
GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN2);

}
对于(u=1000;u>0;u--);

}
}

void ADC14_IRQHandler (void)

UINT64_t status = ADC14_getEnabledInterruptStatus();
ADC14_clearInterruptFlag (状态);

IF (ADC_INT0和STATUS)

curADCResult = ADC14_getResult(ADC_MEM0);
normalizedADCRes =(curADCResult * 5)/1.6384万;

ADC14_toggleConversionTrigger();
}
}

请帮助您提供有关此代码的建议,我们非常感谢您提供此优惠。 谢谢:D

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    归一化结果的数学运算将全部以整数算法完成,然后转换为浮点。 尝试:
    (curADCResult * 5.0)/ 1.6384万.0

    除此之外,您能描述一下为什么您认为该代码不起作用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当传感器给出不同的值时,我们尝试使用不同的LED亮起来确定这些值。 Energia的所有功能都很好,因为LED可以改变颜色,但是通过使用CCS,LED会保持绿色。 因此我们得出结论,CCS中的值根本不会更改,这可能是由于ADC在我们的代码中有未知错误。

    但非常感谢您的float错误,直到我们看到您的消息,我们才意识到这一点,我们还告诉我阅读(int)normalizedADCres。