微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > A/D采样与验证

A/D采样与验证

时间:10-02 整理:3721RD 点击:

    在开发板的诸多功能中,除RTC之外A/D转换也极为常用的功能,将A/D转换功能与LCD5110显示相结合就可以观察出A/D转换的结果。

    使用例程所提供的A/D转换程序及LCD5110显示程序,只需对主函数稍加修改即可显示图1的效果。

   

    图1 显示A/D转换结果


    原A/D转换程序的功能是对3个通道进行A/D采集,在修改后的主函数中,只对第2个通道的检测值进行显示,其程序为:

  1. int32_t main (void)
  2. {
  3.     uint32_t u32Result;
  4.     SYS_Init();
  5.     /* Init UART0 for printf */
  6.     UART0_Init();
  7.     printf("\n\nCPU @ %dHz\n", SystemCoreClock);
  8.     printf("\nThis sample code demonstrate ADC single cycle scan conversion\n");
  9.     printf("It convert channel 0,1,2 and print conversion result\n");
  10.     GPIO_Configuration();
  11.     SetLCD_CS_Low();
  12.     PD7 = 1;//开启背光
  13.     LCD_Init();
  14.     LCD_Clear();//清屏
  15.     LCD_write_english_string(0,0,"A/D:");        //显示提示内容
  16.     // Enable channel 0,1,2
  17.     ADC_Open(ADC, ADC_INPUT_MODE_SINGLE_END, ADC_OPERATION_MODE_SINGLE_CYCLE, (ADC_CH_0_MASK | ADC_CH_1_MASK | ADC_CH_2_MASK));
  18.     // Power on ADC
  19.     ADC_POWER_ON(ADC);
  20.     // Enable ADC ADC_IF interrupt
  21.     ADC_EnableInt(ADC, ADC_ADF_INT);
  22.     NVIC_EnableIRQ(ADC_IRQn);

复制代码


       如何没有LCD5110屏做显示,还可借助串行通讯功能,具体的方法是用USB装TTL串行通讯模块连接开发板的UART0,详见图2所示。进而通过串行通讯来显示转换结果,以便进行验证。

        

     图2 串行通讯模块连接


      相关的验证程序如下:

  1. void UART0_Init(void)
  2. {
  3.     SYS_ResetModule(UART0_RST);
  4.     /* Configure UART0 and set UART0 Baudrate */
  5.     UART0->LINE |=0x07;

复制代码

  1. int32_t main (void)
  2. {
  3.     uint32_t u32Result;
  4.     SYS_Init();
  5.     /* Init UART0 for printf */
  6.     UART0_Init();
  7.     printf("\n\nCPU @ %dHz\n", SystemCoreClock);
  8.     printf("\nThis sample code demonstrate ADC single mode conversion\n");
  9.     printf("It convert channel 0 and print conversion result\n");
  10.     // Enable channel 0
  11.     ADC_Open(ADC, ADC_INPUT_MODE_SINGLE_END, ADC_OPERATION_MODE_SINGLE, ADC_CH_0_MASK);
  12.     // Power on ADC
  13.     ADC_POWER_ON(ADC);
  14.     // Enable ADC ADC_IF interrupt
  15.     ADC_EnableInt(ADC, ADC_ADF_INT);
  16.     NVIC_EnableIRQ(ADC_IRQn);
  17.     u8ADF = 0;
  18.     ADC_START_CONV(ADC);
  19.     while (u8ADF == 0);
  20.     u32Result = ADC_GET_CONVERSION_DATA(ADC, 0);
  21.     printf("Channel 0 conversion result is 0x%x\n",u32Result);
  22.     ADC_DisableInt(ADC, ADC_ADF_INT);
  23.     while (1);
  24. }

复制代码

        使用串口通讯助手即可对转换结果进行观察,其效果如图3所示。

        

        图2 串行通讯验证结果


       通过上面的介绍,我们再面对验证问题时,就具备了2种验证手段和工具。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top