一.知识点学习
ADC是模数转换器的缩写,将连续变化的模拟信号转换为离散信号的一个器件
GD32可以将外部的模拟电压信号转换为处理器可以处理的数字量信号
ADC对于电源纯净度的要求远高于数字电路
数字电路可以忍受电源上的小波动,因为他只需要分辨0和1
但ADC需要精确的测量电压上的细微变化
ADC转化的基准是他的参考电压
ADC的输入范围一般是从0到参考电压
其中触发方式取决于应用需求
eg需要精确的采样周期时,使用定时器触发;需要对外部事件快速响应时,使用外部触发
由于外部干扰较多,所以用多次采样,求平均值,所以采用平均值滤波的滤波方式,尤其适合信号缓慢变化,但噪声比较大的场合
该方式的缺点就是采样时间缓慢;若快速变化的信号,速度快于采样周期平均值滤波会把它油涂抹掉,导致失真;若,周围噪声时周期性的,且恰好与采样频率有着某种联系,平均值滤波会完全无效,甚至会固化干扰;平均值滤波只能消除随机噪声,无法消除系统偏差
分辨率是评价ADC性能的核心指标之一,他决定了ADC能够分辨的最小电压变化
ADC的分辨率是指用多少位的二进制的数字来表示模拟量,对于N位的ADC他能将输入范围分为2的n次方个等级
通过该公式计算ADC能分辨的最小电压变化
若模拟电压位3.3v,则能识别的最小电压变化为0.8mv
二.keil的编写(ADC的采样程序)
因为想使用pc0端口接入滑动变阻器,发现
在datasheet中,
在该位置写对应的采集数据
之后等待下一次的转换的结束标志
若转换完成,去把这个值读取出来,我们在这去定义一个变量
由于滑动变阻器直接接到了3.3v上那么因此,我们ADC在转换的最大值和最小值对应的就是3.3v和0v,我们的ADC其实,获取的它是一个数字量的值。,那它只代表0到4096这样一个值,我们想要读取的,其实是对用的电压是多少,在这里对应一个转换
实际工程量的值就是我们的电压,这里取他的两位小数