请选择 进入手机版 | 继续访问电脑版
查看: 554|回复: 1

RT1052 A/D数据采集

[复制链接]
  • TA的每日心情
    奋斗
    2019-7-10 13:53
  • 签到天数: 427 天

    [LV.9]以坛为家II

    144

    主题

    2006

    帖子

    34

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    4652
    最后登录
    2019-7-10
    发表于 2018-11-9 10:20:33 | 显示全部楼层 |阅读模式
          在开发板的例程中,提供了A/D数据采集的程序,使用时可调节板上的电位器来调节电压值来改变采集结果,通过串口调试工具可观察其采样值如图1所示。
    图片1.png
          图1 数据采集效果


          利用前面所介绍的OLED屏显示方法与A/D采集相结合,可达到图2所示的直观显示效果。
    图片2.png
        图2 ADC 数据采集


           实现图示效果的主程序如下:
    1. int main(void)
    2. {
    3.     adc_config_t adcConfigStrcut;
    4.     adc_channel_config_t adcChannelConfigStruct;

    5.     BOARD_ConfigMPU();
    6.     BOARD_InitPins();
    7.     BOARD_BootClockRUN();
    8.     BOARD_InitDebugConsole();
    9.     PRINTF("\r\nADC polling Example.\r\n");
    10.         OLED_Init();
    11.         OLED_Clear();
    12.         OLED_ShowString(8,0,"OK1052-C");
    13.         OLED_ShowString(8,2,"ADC TEST");
    14.         OLED_ShowString(8,4,"ADC Value:");
    15.     ADC_GetDefaultConfig(&adcConfigStrcut);
    16.     ADC_Init(DEMO_ADC_BASE, &adcConfigStrcut);
    17. #if !(defined(FSL_FEATURE_ADC_SUPPORT_HARDWARE_TRIGGER_REMOVE) && FSL_FEATURE_ADC_SUPPORT_HARDWARE_TRIGGER_REMOVE)
    18.     ADC_EnableHardwareTrigger(DEMO_ADC_BASE, false);
    19. #endif

    20.     /* Do auto hardware calibration. */
    21.     if (kStatus_Success == ADC_DoAutoCalibration(DEMO_ADC_BASE))
    22.     {
    23.         PRINTF("ADC_DoAntoCalibration() Done.\r\n");
    24.     }
    25.     else
    26.     {
    27.         PRINTF("ADC_DoAutoCalibration() Failed.\r\n");
    28.     }

    29.     /* Configure the user channel and interrupt. */
    30.     adcChannelConfigStruct.channelNumber = DEMO_ADC_USER_CHANNEL;
    31.     adcChannelConfigStruct.enableInterruptOnConversionCompleted = false;

    32.     while (1)
    33.     {
    34.         ADC_SetChannelConfig(DEMO_ADC_BASE, DEMO_ADC_CHANNEL_GROUP, &adcChannelConfigStruct);
    35.         while (0U == ADC_GetChannelStatusFlags(DEMO_ADC_BASE, DEMO_ADC_CHANNEL_GROUP))
    36.         {
    37.         }
    38.                                 OLED_ShowNum(20,6,ADC_GetChannelConversionValue(DEMO_ADC_BASE, DEMO_ADC_CHANNEL_GROUP),4,16);
    39.                                 delay_ms(500);
    40.     }
    41. }
    复制代码

           在此基础上若添加相应的数值变换,则可达到一个数字电压表的效果。


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-29 13:53
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    453

    主题

    1357

    帖子

    0

    金豆

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3992
    最后登录
    2019-8-20
    发表于 2018-11-9 11:28:45 | 显示全部楼层
    学习下
    今天天气不错!签到!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2019-8-21 06:27 , Processed in 0.096389 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表