什么是 ADC ?
ADC,Analog-to-Digital Converter 的缩写,指模/数转换器或者模数转换 器。是指将 连续变化的模拟信号 转换为 离散的数位讯号的器件 。真实世界的模拟 信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射 的数字形式,模/数转换器可以实现这个功能。
AD 转换的过程(原理)
①抗混叠滤波(Anti-aliasing),可以理解为一个低通滤波器
②采样保持电路(Sample and hold)
③量化 (Quantizer)
④编码(Coder)
量化和编码
模拟信号通过 ADC 转换成数字信号的这一过程称为量化,由于量化输出的数字信号位数有限,所以输出的数字信号和你采样得到的模拟信号会有一个误差,被称为量化误差,对于一个 N 位 ADC 来说,假设其满量程电压为 Vref , V ref被 ADC分为 2^ N个区间,区间宽度(精度 分辨率)用 LSB (lastsignificant bit)表示, LSB=V ref /(2^ N) 。
例如:H743为 16位 ADC,满量程电压位为 3.3V,所以 LSB为 3.3/65535=0.05mv
ADC 的分类
①逐次比较型 ADC
基本原理是从高位到低位逐位试探比较,好像用天平称物体,从重到轻逐级增减砝码进行试探。逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置 1,送入 DIA 转换器,经 DIA 转换后生成的模拟星送入比较器,称为 Vo,与送入比较器的待转换的模拟量 V 进行比较,若 Vo 简单说就是开启转换后,将 逐次逼近寄存器 各位清零(逐次逼近寄存器的位 数取决于 ADC 转换结果的精度),然后再将该寄存器从高到低依次置 1,每次置位完成后 D/A 转换器会将当前 逐次逼近寄存器 的值转换成对应大小模拟量,转换后的模拟量会和待转换的电压进行比较,如果转换后的模拟量大于待转换的电压则该位的值被保留,否则该位将置 0。随后进行低一位的置位、转换、比较过程,到最低位也比较完成。( 逐次比较型 ADC 是先比较高电压 )
②双积分式 ADC
基本原理是将输入电压变换成与其平均值成正比的时间间隔,再把时间间隔转换成数字量,属于间接转换。转换过程是:先将开关接通待转换的模拟量 V,Vi 采样输入到积分器,积分器从零开始固定时间 T 的正向积分,时间 T 到后,开关再接通与 V 极性相反的基准电压 Vref,将 Vref 输入到积分器进行反向积分,直到输出位 OV 时停止积分。Vi 越大,积分器输出电压越大,反向积分时间也越长。计数器在反向积分时间内所计的数值,就是模拟电压 Vi 所对应的数字量,实现了 A/D 转换。
③全并行/串并行 ADC
ADC 的参数
①分辨率
数字量变化一个最小量时模拟信号的变化量,定义为满刻度与 2"的比值,通常以数字信号的位数来表示。 最大输入电压/(2^ADC 转换精度-1)
②转换速率
转换速率是指 AD 转换一次所需要时间的倒数,即单位时间内完成 A/D 转换的次数 1s/[(采样时间+转换时间)*1 个 ADC 时钟周期对应的时间]
③采样速率
采样速率是两次采样(两次转换)的间隔时间的倒数,为了保证转换的正确完成,一般采样速率必须小于等于转换速率,即采样时间大于等于转换时间。 1s/(采样时间*1 个 ADC 时钟周期对应的时间)
STM32的ADC
3个逐次逼近型ADC,最高分辨率16位,最大转换速率4.5Mhz(0.22us 12位分辨率时)。ADC时钟不能超过36M,否则导致结果准确度下降。
SAR ADC 内部结构
STM32微控制器中内置的ADC使用SAR(逐次逼近)原则,分多步执行转换。转换步骤数等于ADC转换器中的位数。每个步骤均由ADC时钟驱动。每个ADC时钟从结果到输出产生一 位。ADC的内部设计基于切换电容技术。下面的图介绍了ADC的工作原理。下面的示例仅显示 了逼近的前面几步,但是该过程会持续到LSB为止 SAR切换电容ADC的基本原理(10位ADC示例)
带数字输出的ADC基本原理图
采样状态
采样状态:电容充电至电压 VIN 。 Sa 切换至 VIN ,采样期间 Sb 开关闭合
保持状态
保持状态:输入断开,电容保持输入电压。 Sb 开关打开,然后 S1-S11 切换至接地且Sa切换至 VREF 。
逐次逼近
1、第一个逼近步骤。S1切换至VREF。VIN与VREF/2比较
2、如果MSB = 0,则与¼VREF进行比较,S1切换回接地。S2切换至VREF。
3、如果MSB = 1,则与¾VREF进行比较,S1保持接地。S2切换至VREF。
重复如上步骤,直到LSB为止。可以简单理解为二分法逐次进行输入电压与参考电压的比较。首次于VREF/2比较,下次比较根据上次比较结果决定,如果MSB=1则与¾VREF比较。如果MSB=0则与¼VREF比较。后面决定与1/8VREF 3/8VREF、 5/8VREF、7/8VREF之一做比较。循环直到输出LSB为止。