STM32中的 SAR ADC 简介
1、模拟转换器原理
模数转换器,即ADC(Analog to Digital Converter),是一个将模拟信号转换为数字信号的器件(电路),例如将温度、湿度、压力、位置(都是基于电阻,电容上面产生的电压信号)等信息转换为数字信号。但由于数字信号本身不具有实际意义,仅仅表示一个相对大小。因此所有ADC转换过程中都需要一个参考模拟量(REF)作为转换的标准。
而对于SAR ADC,即逐次逼近型ADC是一种直接ADC。由于其采样速率中等,分辨率中等,且位数较多时使用元器件较少等原因(成本较低),所以被广泛应用于集成ADC中。例如集成在各种ARM内核的MCU中。
2、AD转换原理与步骤
A/D转换的作用是将时间、幅值连续的模拟信号转换为时间、幅值离散的数字信号。所以,A/D转换一般要经过采样、保持、量化及编码四个过程。
3、采样和保持(Sampling and Holding)
采样是指在时间上将模拟信号离散化,即是将时间上连续的信号转为一系列等时间间隔的信号离散序列。其中离散信号脉冲的幅度取决于输入模拟量。下图列举了一个模拟信号从采样到保持的过程。
采样需要满足香农定理: 采样频率大于模拟信号中最高频率成分的两倍时,采样值才能不失真的反映原来模拟信号。
4、量化和编码(Quantizing and Encoding)
量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。而编码则是按照一定的规律,把量化后的值用二进制数字表示。
下图列举了12bits ADC FSR为3V时的量化到编码的过程
n:分辨率,用于对输入进行量化的位数
FSR: Full-Scale Range,满量程
LSB: Least Significant Bit,最低有效位
MSB: Most Significant Bit,最高有效位
5、分辨率
理论上,n位输出的ADC能区分2^n个不同等级的模拟输入电压。如上图所示,能分辨的最小输入电压步长LSB = FSR / 2^n = 732uV。
6、量化误差
量化误差是由于量化过程引入的误差,通常是以输出误差的最大值形式标出。表示ADC实际输出的数字量和理论输出数字量之间的误差。使用“四舍五入法”时,ADC 转换器的量化误差是 ±½ LSB。
7、转换时间
转换时间是指ADC从转换控制信号触发开始,到输出端得到稳定的数字信号所经过的时间。该时间受ADC类型、ADC时钟和外部输入阻抗等因素影响。
8、STM32中的SAR ADC
STM32中的ADC是逐次逼近型ADC(Successive Approximation ADC),是逐个产生比较电压Vref,并逐次与输入电压分别比较,以逐渐逼近的方式进行A/D转换的。而其中的用来产生Vref的电路就是DAC电路。 因此一般DAC电路比较容易设计,而DAC在采样速度和精度的权衡上会比较复杂。
SAR ADC的转换原理是把输入的模拟信号按规定的时间间隔采样(采样),并与一系列标准的数字信号相比较,数字信号逐次收敛,直至两种信号相等为止(量化完成),最后输出代表此信号的二进制数(编码)。
9、SAR ADC结构
结构上主要包括采样保持电路(S/H),比较器(COMPARATOR,COMP),SAR逻辑控制电路、时钟(CLOCK)和时序(TIMING)控制电路及DAC电路。
10、S/H电路
为了达到快速的采样,被采样的脉冲宽度一般是很短的,在下一个采样脉冲到来之前,要暂时保持所采得的样值脉冲幅度,以便进行后续转换。所以,在采样电路之后和比较电路之间要加保持电路。它的原理是通过一个开关连接一个电容,通过给电容进行充电来保持模拟信号的幅值信息。
11、DAC电路
大多SAR ADC的DAC都使用电容式DAC来提供内在的跟踪/保持功能。电容式DAC是采用电荷再分配原理来产生模拟输出电压的。电容式DAC由N个具有二进制权重值的电容器阵列再加上一个“虚拟LSB”电容器组成。
首先通过Sa开关连接VIN,并将所有S1-S11的开关连接到VIN,给所有并联的电容进行充电,这样就将所有电容充满,并且充电电压为VIN。
然后通过将Sa开关连接到Vref,并且通过数字信号对应到S1-S11的开关上,也就是关闭一些电容的开关连接到GND上,断开电容,对地放电。
此时对于Vref上的电压就会根据断开电容的容量使得输出电压降低,从而将数字信号转换成一个模拟信号。
电容器阵列容量总量要等于2C。
12、转换步骤
转换步骤数等于 ADC的分辨率,比如12bits ADC就有12个转换步骤,每个 ADC 时钟产生一个数据位。
13、采样状态
该状态下,电容充电至电压VIN。Sa切换至VIN,采样期间Sb开关闭合。
14、保持状态
该状态下,输入断开,电容保持输入电压。Sb开关打开,然后S1-S11切换至接地,且Sa切换至VREF。
15、转换(量化和编码)状态
该状态下,每个 ADCCLK 执行一个步骤,每一步完成后 ADC 输出一位数。采用二分法进行逐次逼近到 ADC 的精度(位数)。整个转换过程如下图所示。