接上一节,我们已经知道开发板开放程度很高,且硬件上对ADC所有通道做了滤波电容的预留设计,接下来咱们即对ADC进行基本测试。
ADC简述
阅读数据手册可知(中文版对我很友好),ME32-MCU 是自带12位AD功能,即当检测3.3V电压时,最大分辨率可达3.3/(2^12)=0.0008V,即可最小检测0.8mV的电压值。特性内容如下:
A/D 准确度测试
1.为了快速上手,咱们使用原厂提供给的工程示例来修改做测试。
基本思路为使用ADC0通道测试一个已知的电压,通过串口打印的数据来看准确性。
2.硬件上,通过给开发板加上两个短路帽即可将CH340与单片机的串口1接通,如图:
2-1为了防止干扰,咱们给开发板AD0通道预留的电容位置给加上一个电容:
2-2测试电压的对象,选中了开办板上的LED电源指示灯,因为它正好是LED侧接地,相当于测试LED两端的电压即可。测试时,将AD0通道使用杜邦线怼在LED上即可!
2-3咱们使用万用表实测一下两端电压待会儿用于比对,得到两端电压为1.852V,单片机供电电压为3.314V:
3.Keil双击打开工程文件,来到主界面;找到Demo.c文件,在main函数中即可看到熟悉的配置;
程序中:
1.PA0_INIT (PA0_ADC_IN0);-->首先初始化IO口,配置ADC0~7通道。
2.ADC_Init(1000000,INTERNALVDDGND);-->然后对ADC配置进行初始化速度为最大的1Mhz,同时指定基准电压为VDD供电电压。
3.ADC_SetTrigger(ADC_START_BY_SOFTWAER,0);-->触发方式为软件触发,且为上升沿有效。
4.ADC_SetupChannels(AD0|AD1|AD2|AD3|AD4|AD5|AD6|ADx,TRIGGERMODE);-->选定ADC通道0--7,同样为软件触发模式。
5.PA2_INIT(PA2_UART1_TX);PA3_INIT(PA3_UART1_RX);-->初始化一个串口,便于打印调试信息;
6.UART_Open(UART1,115200,UART_NO_PARITY,UART_TRIGGER_LEVEL_1_BYTE);-->配置串口为115200波特率
以上即完成了所有初始化准备工作,通过引入“stdio.h”头文件,咱们即可使用Sprintf函数对数据格式化;
然后通过获取AD0通道的值进行数据转换,用串口打印出来!
7.将程序编译下载,使用串口助手查看数据,如图可知ADC返回的数据未做滤波算法的时候,数据与实测值非常吻合!