ADC,全称Anlog-to-Digital Converter,模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件,我们能通过ADC将外界的电压值读入我们的单片机中.
常见的ADC有两种
1.并联比较型:
它的优点是转换速度最快,但也有成本高功耗高、分辨率低的问题。
Vref是参考电压,用来与从v1输入的模拟电压输入进行对比从而获取相应电压值。比较器会一级一级地输出电压,不断逼近我们真实的输入电压。最后从编码器引出3个引脚,这个就是ADC的分辨率。比如最后有12个数字输出引脚,那我们的比较端需要2^12个电阻,2^12-1个比较器,这样才能获得相应精度的电压值。
2.逐次逼近型:
该类型的模拟/数字转换器的工作原理是这样的:先在数码寄存器中将最高位置1,然后通过D/A转换器将数字量转化为模拟量发送给比较器,让测试电压于模拟输入进行比较,如果模拟输入电压大于等于这个D/A转换器输出的电压,则数码转换器则会将这个1锁定;如果不够大,则置0,然后把下一位置1,再次进行这样的比较,大于等于就锁定,小于就把相应位置0,最后循环之后会得到相应的结果。
总结出的规律是分辨率越高,采样速度越低。
--------------------------------------------------------------------------------------
下面介绍ADC的几个特性参数:
1、分辨率(刻度划分):表示ADC所能辨别的最小模拟量,用二进制位数表示,比如8、10、12位,比如12位的A/D转换器,它的分辨率就是3.3V/2^12;
2、转换时间:表示完成一次A/D转换所需要的实际,采样时间越短,采样率就越高;
3、精度(物理量的精确程度):在最小刻度上叠加的各种参数,收ADC性能、温度、气压等因素的控制,对于12位的A/D转换器,精度就是3.3V/2^12±Δ;
4、量化误差:因为A/D转换器实际上是通过数字量近似表示模拟量,采样四舍五入法则,此时产生的误差为量化误差
一般STM32的A/D的参考电压是3.3V.
--------------------------------------------------------------------------------------
下图中是STM32的部分A/D的输入通道:
--------------------------------------------------------------------------------------
A/D转换器被组织为:规则组(常规转换组)和注入组(注入转换组)。
规则组:最多有16个转换。规则组的执行优先级对比中,它会按照规则组的排列,从第一个转换、第二个转换······直到第N个转换,顺序进行到后续的转换中;
注入组:最多有4个转换。一开始它是进行顺序执行,但会收中断触发的影响。比如先执行了第一个,然后在执行第二个转换的期间,第一个又被触发了,则会先完成第二个的转换,再跳到第一个转换进行执行,执行完第一个转换之后再执行第2,3,4个转换。
通常,A/D转换是由外部事件触发转换。
如何设置A/D时钟如图,A/D转换的时间转换公式为:Tcvt = 采样时间 + 12.5个周期,而采样时间可通过SMPx[2:0]设置,x=0~17(18个通道),对应的ADC周期如下二图,比如最小的周期里,Tcvtmin=(12.5+1.5)周期=14/(12MHz)=1.17us。