查看: 1078|回复: 0

[评测分享] 【NXP OKdo E1双核Cortex M33开发板】测评+ A/D数据采集

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2020-11-21 21:52:20 | 显示全部楼层 |阅读模式
    分享到:
    OKdo E1开发板具有A/D数据转换器,ADC CH0A通道所使用的引脚为PIO0_23,通过它可以对模拟信号进行采集。
    现实数据采集的程序如下:
    1. #define DEMO_LPADC_BASE            ADC0
    2. #define DEMO_LPADC_USER_CHANNEL   0U
    3. #define DEMO_LPADC_USER_CMDID     1U
    4. #define DEMO_LPADC_VREF_SOURCE     kLPADC_Reference VoltageAlt2
    5. #define DEMO_LPADC_DO_OFFSET_CALIBRATION   false
    6. #define DEMO_LPADC_OFFSET_VALUE_A  10U
    7. #define DEMO_LPADC_OFFSET_VALUE_B  10U

    8. int main(void)
    9. {
    10.     uint32_t U;
    11.         lpadc_config_t mLpadcConfigStruct;
    12.     lpadc_conv_trigger_config_t mLpadcTriggerConfigStruct;
    13.     lpadc_conv_command_config_t mLpadcCommandConfigStruct;
    14.     lpadc_conv_result_t mLpadcResultConfigStruct;
    15.     /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
    16.     CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
    17.     BOARD_InitPins();
    18.     BOARD_BootClockFROHF96M();
    19.     BOARD_InitDebugConsole();
    20.     CLOCK_SetClkDiv(kCLOCK_DivAdcAsyncClk, 16U, true);
    21.     CLOCK_AttachClk(kMAIN_CLK_to_ADC_CLK);
    22.     /* Disable LDOGPADC power down */
    23.     POWER_DisablePD(kPDRUNCFG_PD_LDOGPADC);
    24.     SysTick_Config(SystemCoreClock / 1000U);
    25.         app_oled_init();
    26.         OLED_Init();
    27.         OLED_Clear();
    28.         OLED_ShowString(0,0,"OKDOE1 TEST",16);
    29.         OLED_ShowString(0,2,"ADC & OLED",16);
    30.         OLED_ShowString(0,5,"ADC=     .",16);
    31.     LPADC_GetDefaultConfig(&mLpadcConfigStruct);
    32.     mLpadcConfigStruct.enableAnalogPreliminary = true;
    33.     mLpadcConfigStruct.referenceVoltageSource = kLPADC_Reference VoltageAlt2;
    34. #if defined(FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS) && FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS
    35.     mLpadcConfigStruct.conversionAverageMode = kLPADC_ConversionAverage128;
    36. #endif /* FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS */
    37.     LPADC_Init(ADC0, &mLpadcConfigStruct);
    38. #if defined(FSL_FEATURE_LPADC_HAS_CTRL_CALOFS) && FSL_FEATURE_LPADC_HAS_CTRL_CALOFS
    39. #if defined(FSL_FEATURE_LPADC_HAS_OFSTRIM) && FSL_FEATURE_LPADC_HAS_OFSTRIM
    40.     /* Request offset calibration. */
    41.     LPADC_SetOffsetValue(ADC0, 10U, 10U);
    42. #endif /* FSL_FEATURE_LPADC_HAS_OFSTRIM */
    43.     /* Request gain calibration. */
    44.     LPADC_DoAutoCalibration(ADC0);
    45. #endif /* FSL_FEATURE_LPADC_HAS_CTRL_CALOFS */
    46. #if (defined(FSL_FEATURE_LPADC_HAS_CFG_CALOFS) && FSL_FEATURE_LPADC_HAS_CFG_CALOFS)
    47.     /* Do auto calibration. */
    48.     LPADC_DoAutoCalibration(ADC0);
    49. #endif /* FSL_FEATURE_LPADC_HAS_CFG_CALOFS */
    50.     /* Set conversion CMD configuration. */
    51.     LPADC_GetDefaultConvCommandConfig(&mLpadcCommandConfigStruct);
    52.     mLpadcCommandConfigStruct.channelNumber =0U;
    53.     LPADC_SetConvCommandConfig(ADC0, 1U, &mLpadcCommandConfigStruct);
    54.     /* Set trigger configuration. */
    55.     LPADC_GetDefaultConvTriggerConfig(&mLpadcTriggerConfigStruct);
    56.     mLpadcTriggerConfigStruct.targetCommandId       = 1U;
    57.     mLpadcTriggerConfigStruct.enableHardwareTrigger = false;
    58.     LPADC_SetConvTriggerConfig(ADC0, 0U, &mLpadcTriggerConfigStruct);
    59. #if defined(FSL_FEATURE_LPADC_HAS_CMDL_CSCALE) && FSL_FEATURE_LPADC_HAS_CMDL_CSCALE
    60.     while (1)
    61.     {
    62.         LPADC_DoSoftwareTrigger(ADC0, 1U); /* 1U is trigger0 mask. */
    63. #if (defined(FSL_FEATURE_LPADC_FIFO_COUNT) && (FSL_FEATURE_LPADC_FIFO_COUNT == 2U))
    64.         while (!LPADC_GetConvResult(ADC0, &mLpadcResultConfigStruct, 0U))
    65. #else
    66.         while (!LPADC_GetConvResult(ADC0, &mLpadcResultConfigStruct))
    67. #endif /* FSL_FEATURE_LPADC_FIFO_COUNT */
    68.         {
    69.         }
    70.                         U=mLpadcResultConfigStruct.convValue >> 3U;
    71.                                 OLED_ShowNum(40,5,U,5,16);
    72.                                 SysTick_DelayTicks(1000U);
    73.     }
    74. }
    复制代码


    在程序编译下载后,其运行效果如图1所示。
    1.jpg
    图1 OLED屏显示效果

    在使用串口的情况下,其执行效果如图所示。其中的零值,则为输入引脚接地时所测得的值。
    2.jpg
    图2 串口输出效果
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-15 00:24 , Processed in 0.126691 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.