TA的每日心情 | 奋斗 2023-5-10 20:09 |
---|
签到天数: 1742 天 连续签到: 1 天 [LV.Master]伴坛终老
|
OKdo E1开发板具有A/D数据转换器,ADC CH0A通道所使用的引脚为PIO0_23,通过它可以对模拟信号进行采集。
现实数据采集的程序如下:
- #define DEMO_LPADC_BASE ADC0
- #define DEMO_LPADC_USER_CHANNEL 0U
- #define DEMO_LPADC_USER_CMDID 1U
- #define DEMO_LPADC_VREF_SOURCE kLPADC_Reference VoltageAlt2
- #define DEMO_LPADC_DO_OFFSET_CALIBRATION false
- #define DEMO_LPADC_OFFSET_VALUE_A 10U
- #define DEMO_LPADC_OFFSET_VALUE_B 10U
- int main(void)
- {
- uint32_t U;
- lpadc_config_t mLpadcConfigStruct;
- lpadc_conv_trigger_config_t mLpadcTriggerConfigStruct;
- lpadc_conv_command_config_t mLpadcCommandConfigStruct;
- lpadc_conv_result_t mLpadcResultConfigStruct;
- /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
- CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
- BOARD_InitPins();
- BOARD_BootClockFROHF96M();
- BOARD_InitDebugConsole();
- CLOCK_SetClkDiv(kCLOCK_DivAdcAsyncClk, 16U, true);
- CLOCK_AttachClk(kMAIN_CLK_to_ADC_CLK);
- /* Disable LDOGPADC power down */
- POWER_DisablePD(kPDRUNCFG_PD_LDOGPADC);
- SysTick_Config(SystemCoreClock / 1000U);
- app_oled_init();
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(0,0,"OKDOE1 TEST",16);
- OLED_ShowString(0,2,"ADC & OLED",16);
- OLED_ShowString(0,5,"ADC= .",16);
- LPADC_GetDefaultConfig(&mLpadcConfigStruct);
- mLpadcConfigStruct.enableAnalogPreliminary = true;
- mLpadcConfigStruct.referenceVoltageSource = kLPADC_Reference VoltageAlt2;
- #if defined(FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS) && FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS
- mLpadcConfigStruct.conversionAverageMode = kLPADC_ConversionAverage128;
- #endif /* FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS */
- LPADC_Init(ADC0, &mLpadcConfigStruct);
- #if defined(FSL_FEATURE_LPADC_HAS_CTRL_CALOFS) && FSL_FEATURE_LPADC_HAS_CTRL_CALOFS
- #if defined(FSL_FEATURE_LPADC_HAS_OFSTRIM) && FSL_FEATURE_LPADC_HAS_OFSTRIM
- /* Request offset calibration. */
- LPADC_SetOffsetValue(ADC0, 10U, 10U);
- #endif /* FSL_FEATURE_LPADC_HAS_OFSTRIM */
- /* Request gain calibration. */
- LPADC_DoAutoCalibration(ADC0);
- #endif /* FSL_FEATURE_LPADC_HAS_CTRL_CALOFS */
- #if (defined(FSL_FEATURE_LPADC_HAS_CFG_CALOFS) && FSL_FEATURE_LPADC_HAS_CFG_CALOFS)
- /* Do auto calibration. */
- LPADC_DoAutoCalibration(ADC0);
- #endif /* FSL_FEATURE_LPADC_HAS_CFG_CALOFS */
- /* Set conversion CMD configuration. */
- LPADC_GetDefaultConvCommandConfig(&mLpadcCommandConfigStruct);
- mLpadcCommandConfigStruct.channelNumber =0U;
- LPADC_SetConvCommandConfig(ADC0, 1U, &mLpadcCommandConfigStruct);
- /* Set trigger configuration. */
- LPADC_GetDefaultConvTriggerConfig(&mLpadcTriggerConfigStruct);
- mLpadcTriggerConfigStruct.targetCommandId = 1U;
- mLpadcTriggerConfigStruct.enableHardwareTrigger = false;
- LPADC_SetConvTriggerConfig(ADC0, 0U, &mLpadcTriggerConfigStruct);
- #if defined(FSL_FEATURE_LPADC_HAS_CMDL_CSCALE) && FSL_FEATURE_LPADC_HAS_CMDL_CSCALE
- while (1)
- {
- LPADC_DoSoftwareTrigger(ADC0, 1U); /* 1U is trigger0 mask. */
- #if (defined(FSL_FEATURE_LPADC_FIFO_COUNT) && (FSL_FEATURE_LPADC_FIFO_COUNT == 2U))
- while (!LPADC_GetConvResult(ADC0, &mLpadcResultConfigStruct, 0U))
- #else
- while (!LPADC_GetConvResult(ADC0, &mLpadcResultConfigStruct))
- #endif /* FSL_FEATURE_LPADC_FIFO_COUNT */
- {
- }
- U=mLpadcResultConfigStruct.convValue >> 3U;
- OLED_ShowNum(40,5,U,5,16);
- SysTick_DelayTicks(1000U);
- }
- }
复制代码
在程序编译下载后,其运行效果如图1所示。
图1 OLED屏显示效果
在使用串口的情况下,其执行效果如图所示。其中的零值,则为输入引脚接地时所测得的值。
图2 串口输出效果
|
|