433|4

997

帖子

0

资源

纯净的硅(中级)

【AB32VG1开发板测评】A/D采集及显示 [复制链接]

AB32VG1 有 16 个ADC通道,精度为 10 bit ,且有100k 的内部上拉电阻,其最大采样速度为 78k/s。

为进行A/D采集,可对硬件加以设置,见图1所示,随后在图2的对话框中选取“保存”。

image-20210911154049-1.png  

图1 硬件配置

image-20210911154049-2.png  

图2 保存配置

由资料可知adc0是与 PA5相对于的,因此在测试过程中将外部的模拟信号连接到该引脚即可。

在编程时,需在程序首部作如下的定义:

#define ADC_DEV_NAME   "adc0"

#define ADC_DEV_CHANNEL 0

此外,在程序中还需调用rt_device_find()函数来查找设备以获取设备句柄,调用rt_adc_enable()函数来使能ADC设备,调用rt_adc_read()函数来读取ADC设备及调用rt_adc_ disable ()函数来关闭ADC设备.

结合前面已介绍的OLED屏显示功能,即可将A/D的采样值直接显示出来。

实现数据采集与显示的主程序如下:

int main(void)
{
    uint32_t cnt = 0;
    rt_adc_device_t adc_dev;
    rt_err_t ret = RT_EOK;
    rt_uint32_t value_sum,vol,vol_ave,ii;
    rt_uint32_t value,CONVERT_BITS=1023;
    rt_uint32_t REFER_VOLTAGE=33,
    pin = rt_pin_get("PE.1");
    rt_pin_mode(pin, PIN_MODE_OUTPUT);
    pin_cs = rt_pin_get("PA.0");
    pin_scl = rt_pin_get("PE.3");
    pin_sda = rt_pin_get("PE.2");
    rt_pin_mode(pin_cs, PIN_MODE_OUTPUT);
    rt_pin_mode(pin_scl, PIN_MODE_OUTPUT);
    rt_pin_mode(pin_sda, PIN_MODE_OUTPUT);
    rt_pin_write(pin_cs, PIN_HIGH);
    OLED_Init();
    OLED_Clear();
    OLED_ShowString(0,0,"AB32VG1 RISC-V",16);
    OLED_ShowString(0,2,"OLED & A/D",16);
    rt_thread_mdelay(2000);
    OLED_Clear();
    adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
    if (adc_dev == RT_NULL)
    {
        OLED_ShowString(0,0,"can't find",16);
        while(1);
    }
    else{
    ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
    }
    while(1)
    {
            value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
            rt_kprintf("\nthe value is :%d \n", value);
            OLED_ShowString(0,2,"value=",16);
            OLED_ShowNum(50,2,value,5,16);
            vol = value * REFER_VOLTAGE /CONVERT_BITS;
            OLED_ShowString(0,0,"voltage= . V",16);
            OLED_ShowNum(64,0,vol / 10,1,16);
            OLED_ShowNum(80,0,vol % 10,1,16);
            rt_pin_write(pin, PIN_LOW);
            rt_thread_mdelay(500);
            rt_pin_write(pin, PIN_HIGH);
            rt_thread_mdelay(500);
    }
}

经程序的编译与下载,其运行效果如图2所示。

image-20210911154049-3.png  

图2 运行效果

 

为了能动态地改变模拟信号量,这里是将电位器连接到PA5,通过调节电位器就可改变采样信号值。此外,为了能直观地读取采集信号的电位值,还通过转换处理完成了电压值的显示。

有了A/D采集功能,我们通过它来连接相应的模拟信号传感器来感知周围环境的状态以便进行相应的处理。


回复

6124

帖子

0

资源

五彩晶圆(初级)

那个电位器看着很炫酷

电压值的显示的怎么样,精度如何

点评

一般的使用还是可以的,为省事只显示了一位小数。  详情 回复 发表于 2021-9-12 00:51

回复

997

帖子

0

资源

纯净的硅(中级)

Jacktang 发表于 2021-9-11 16:54 那个电位器看着很炫酷 电压值的显示的怎么样,精度如何

一般的使用还是可以的,为省事只显示了一位小数。


回复

8701

帖子

20

资源

版主

我也看到手册里提到上拉电阻,感觉给ADC配100K上拉电阻挺奇怪的,你试过没,如果输入悬空测量的结果会是1023吗?

点评

有空试试,一般是无需配上拉电阻的,除非是I/O口进行输入检测。  详情 回复 发表于 2021-9-12 11:25

回复

997

帖子

0

资源

纯净的硅(中级)

littleshrimp 发表于 2021-9-12 02:35 我也看到手册里提到上拉电阻,感觉给ADC配100K上拉电阻挺奇怪的,你试过没,如果输入悬空测量的结果会是102 ...

有空试试,一般是无需配上拉电阻的,除非是I/O口进行输入检测。


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

最新文章 更多>>
    关闭
    站长推荐上一条 1/9 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表