一. ADC是什么
ADC(analog-to-digital converter,模拟数字转换器,简称模数转换器),是一种将连续变化的模拟信号转换为离散的数字信号的电子器件。
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,3个ADC控制器,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。此外,还可以用作模拟看门狗,模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
在STM32F103ZET6芯片中一共有3个ADC控制器
而在STM32F103C8T6芯片中只有2个ADC控制器
二. ADC的性能参数
ADC的主要性能参数有量程、分辨率、精度、转换时间等,这些也是选择ADC的重要的参考指标。
1. 量程
量程(full scale range,FSR)是指ADC所能转换的模拟输入电压的范围,分为单极性和双极性两种类型。单极性的量程为0 ~ +3.3V,0 ~ +5V等;双极性的量程为-5 ~ +5V、-12 ~ +12V等。
2. 分辨率
分辨率(resolution)是指ADC所能分辨的最小的模拟输入量,反应ADC对输入信号微小变化的响应能力。若小于最小变化量的输入模拟电压的任何变化,那么将不会引起ADC输出数字值的变化。
关于计算分辨率的公式:分辨率是由ADC的量化位数n决定,一个n位ADC的分辨率等于ADC的满量程与2n比值。例如:一个8位的ADC,其量程为0 ~ +5V,其分辨率就为5V/28 = 19.53 mV。
3. 精度
精度(accuracy)是指对ADC的数字输出(二进制代码),其实际需要的模拟输入值与理论上要求的模拟输入值之差。
影响ADC精度值由很多的因素,如:量化误差、非线性误差,零点漂移误差、增益误差等。
关于精度的计算方式不同,可以分为绝对精度和相对精度,绝对精度:通常用具体数值或输出数字量最低有效位LSB的分数值表示。相对精度:定义为这个最大差值与满量程模拟电压的百分数。例如:一个10位量程为0 ~ +10V的ADC,其绝对精度为+/- 0.5LSB,则绝对精度为0.5 * 10V/210 = 4.88mV,相对精度为4.88mV / 10V *100% = 0.048%。
4. 转换时间
转换时间(conversation time)是ADC完成一次A/D转换所需要的时间,是指从启动ADC开始搭配获得相应数据所需要的总时间。ADC的转换时间等于ADC的采样时间加上ADC量化和编码时间。采样时间是指了两次A/D转换的间隔。
三. ADC的主要类型
ADC的类型有很多,现在主流的有逐次逼近型ADC、电压时间转换型ADC和电压频率转换型ADC三种。
- 逐次逼近型ADC:是目前应用非常普遍的一种数据转换器,尤其是在独立的集成ADC产品中。由一个D/A转换器和一个比较器构成,进行A/D转换时,由D/A转换器从高位到低位依次逐位增加转换位数,产生不同的输出电压,把输出电压与输入电压通过比较器进行直接比较,经过n次比较后得到最终的数字值。
- 电压时间转换型ADC:是一种通过间接转换方式实现的A/D转换器。由一个V-T转换电路和一个计数器构成。进行A/D转换时,先把输入的模拟电压信号转换成与之成正比的时间宽度信号,然后在这个时间宽度里对固定频率的时钟脉冲计数,计数的结果就是正比于输入模拟电压的数字信号。
- 电压频率转换型ADC:是另一种通过间接转换方式实现的A/D转换器。由一个V-F转换电路和一个计数器构成。进行A/D转换时,先把输入的模拟电压信号转换成与之成正比的频率信号,然后在一个固定的时间间隔里对得到的频率信号计数,所得到的计数的结果就是正比于输入模拟电压的数字量。
四. ADC的主要特征
STM32F103微控制器内部集成1 ~ 3个12位逐次逼近型ADC。
- 每一个ADC最多有18路模拟输入通道,可测量16个外部信号和2个内部信号。
- ADC的供电要求2.4 - 3.6V。
- ADC可测量模拟输入信号V-IN的范围是V-REF- <= V-IN <= V-REF+。
- ADC的模数转换可以单次、连续、扫描或间断模式进行。
- ADC可将18路通道分为规则通道组和注入通道组,其中规则通道组最多包含16路通道,注入通道组最多包含4路通道。
- ADC具有12位分辨率。
- 具有从通道0到通道n的自动扫描模式。
- 当系统时钟等于56Hz,ADC时钟等于14Hz、ADC采样时间等于1.5个ADC时钟周期时,ADC获得最短的转换时间是1ms。
ADC通道的转换过程如下:
(1)输入信号经过ADC的输入信号通道ADCx_IN0—ADCx_IN15被送到ADC部件(图中的模拟至数字转换器)
(2)ADC部件需要受到触发信号后才开始进行A/D转换,触发信号可以使用软件触发,也可以是EXTI外部触发或定时器触发。
(3)ADC部件接收到触发信号后,在ADC时钟ADCCLK的驱动下,对输入通道的信号进行采样、量化和编码。
(4)ADC部件完成转换后,将转换后的12位数值以左对齐或者右对齐的方式保存到一个16位的规则通道数据寄存器中,产生ADC转化结束/注入转换结束事件,可触发中中断或DMA请求。
STM32F103微控制器的ADC最多有18路模拟器输入通道。除了ADC1_IN16与内部温度传感器相连,ADC1_IN17与内部参考电压V-REFINT(1.2V)相连,其他的16路通道ADCx_IN0—ADCx_IN15都被连接到STM32F103微控制器对应的I/O引脚上,可以用作模拟信号的输入。
ADC模块通道和I/O引脚表
通道序号 | ADC1 | ADC2 | ADC3 |
---|---|---|---|
0 | PA0 | PA0 | PA0 |
1 | PA1 | PA1 | PA1 |
2 | PA2 | PA2 | PA2 |
3 | PA3 | PA3 | PA3 |
4 | PA4 | PA4 | PF6 |
5 | PA5 | PA5 | PA7 |
6 | PA6 | PA6 | PF8 |
7 | PA7 | PA7 | PF9 |
8 | PB0 | PB0 | PF10 |
9 | PB1 | PB1 | |
10 | PC0 | PC0 | PC0 |
11 | PC1 | PC1 | PC1 |
12 | PC2 | PC2 | PC2 |
13 | PC3 | PC3 | PC3 |
14 | PC4 | PC4 | |
15 | PC5 | PC5 | |
16 | 内部温度 | ||
17 | 内部参考电压 |
规则通道组:划分到规则通道组中的通道称为规则通道。多数情况下,如果仅是一般模拟输入信号的转换,那么将模拟输入信号的通道设置位规则通道即可。规则通道组最多可以有16个规则通道,当每个规则通道转换完成后,将转换结果保存到同一个规则通道数据寄存器、同时产生ADC转换结束事件,可以产生对应的中断和DMA请求。
注入通道组:划分到注入通道组中的通道称为注入通道。如果需要转换的模拟输入信号的优先级较其他模拟输入信号要高,那么可将该模拟输入信号的通道归入注入通道组中。注入通道组最多可以有4个注入通道,同样,会有4个注入通道寄存器用来存放注入通道的转换结果。当每个注入通道转换完成后,产生ADC注入转换结束事件,可产生对应的中断,但不具备DMA传输能力。
五. ADC的转换模式
1. 单次转换模式
单次转换模式下,ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。
● 如果一个规则通道被转换:
─ 转换数据被储存在16位ADC_DR寄存器中
─ EOC(转换结束)标志被设置
─ 如果设置了EOCIE,则产生中断。
● 如果一个注入通道被转换:
─ 转换数据被储存在16位的ADC_DRJ1寄存器中
─ JEOC(注入转换结束)标志被设置
─ 如果设置了JEOCIE位,则产生中断。
然后ADC停止。
2. 连续转换模式
连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。
● 如果一个规则通道被转换:
─ 转换数据被储存在16位的ADC_DR寄存器中
─ EOC(转换结束)标志被设置
─ 如果设置了EOCIE,则产生中断。
● 如果一个注入通道被转换:
─ 转换数据被储存在16位的ADC_DRJ1寄存器中
─ JEOC(注入转换结束)标志被设置
─ 如果设置了JEOCIE位,则产生中断。
3. 扫描模式
扫描模式中,在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。
4. 间断模式
间断模式中,允许用户通过设置一个或多个转换序列,并通过设置转换序列的长度来指定要进行的连续转换的次数。然后,启用采样周期的触发源(可以是软件触发或外部触发),并设置所需的转换通道。