一、ADC简介
ADC(Analog-Digital Converter)模拟-数字转换器
ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁(DAC,数字模拟转换器,使用DAC就可以将数字变量转为模拟电压(PWM也是一种))
12位逐次逼近型ADC(它的表示范围就是0~2^(12-1)——> 0~4095),1us转换时间(对应频率1MHz)
输入电压范围:0~3.3V,转换结果范围:0~4095
18个输入通道,可测量16个外部(16个GPIO口)和2个内部信号源(内部温度传感器和内部参考电压)
规则组和注入组两个转换单元
模拟看门狗自动监测输入电压范围。
STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道
二、逐次逼近型ADC
第一次比较的时候输出一半,也就是128,比较谁大谁小,如果DAC电压大了,第二次比较的时候,就在给64,如果还大,第三次给32,如果这次小了,第四次那么就给32-64之间的值。如果用二进制来表示的话这些数据正好二进制是每一位的位权,那么这个按段的过程相当于就是对二进制从高位到低位依次判断是1还是0的过程,对于8位的ADC,依次判断8次就能找到未知电压的编码了。
三、ADC框图
规则组虽然可以转16个通道,但是只有一个数据寄存器,如果不想被覆盖,那在赋值之后尽快拿走
注入组有4个通道,4个数据寄存器,不需要担心数据被覆盖的问题。
我们学习规则组,通过结合DMA转运数据,这样就不用担心数据被覆盖的问题了。
触发ADC转换的信号有两种,软件触发(在程序中手动调用一条代码)和硬件触发。
ADCCLK最大是14MHz,选择的预分频也只能是6分频12MHz和8分频9MHz。
四、ADC基本结构
五、输出通道
六、转换模式
单次转换,非扫描模式
连续转换,非扫描模式
单次转换,扫描模式
连续转换,扫描模式
七、触发控制
八、数据对齐
常用右对齐
九、转换时间
AD转换的步骤:采样,保持,量化,编码
STM32 ADC的总转换时间为:
TCONV = 采样时间 + 12.5个ADC周期
例如:当ADCCLK=14MHz,采样时间为1.5个ADC周期
TCONV = 1.5 + 12.5 = 14个ADC周期 = 1μs
十、校准
ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。
建议在每次上电后执行一次校准。
启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期。
十一、硬件电路