Analog - Digital Converter 模拟数字转换器,指将 随时间连续变化的模拟信号 转换为 离散的数字信号 的一种器件。
1、ADC工作原理
采样 -> 保持 -> 量化 -> 编码
①采样:采样就是把随时间连续变化的模拟量转换为随时间离散的模拟电平,把模拟量采样分为几份,由采样位数决定。
奈奎斯特采样定理:ADC采样率为 fs,待测量模拟信号的最高频率为 fmax,则 fs 与 fmax 必须满足关系:fs ≥ 2 fmax,常用 fs = 4*fmax。
②保持:为了给后续的量化编码过程提供一个稳定值,每次取得的模拟信号必须通过保持电路保持一段时间。
③量化:将采样后的 随时间离散的模拟电平 转换为与之接近的 数字电平 ,还必须将取样-保持电路的输出电压,按某种近似方式归化到相应的离散电平上,这一转化过程称为数值量化,简称量化。
④编程:将量化后的结果按照一定数制形式表示,量化后的数值最后还需通过编码过程用一个代码表示出来。经编码后得到的代码就是A/D转换器输出的数字量。
2、两个重要指标(采样率、采样位数)、ADC类型
2.1 采样率
转换速率,是AD转换一次所需要时间的倒数,假如采集 1Hz 正弦信号。 我以 1Hz 1s的采样率采集一次,那么完全看不出这个信号的变化和波形; 但我以10Hz100ms采集一次呢,一个信号周期内就采集了10个点,可以大致看出这个信号的波形; 但我以1KHz 1ms,1MHz 1us采集一次呢?那么这个信号的波形就完全被我们知道了。
2.2 采样位数
2.3 ADC类型
直接比较型 :就是将输入模拟信号直接与标准的参考电压比较。例如并行ADC、逐次比较型ADC。
间接比较型:输入模拟量不是直接与参考电压比较,而是将二者变为中间的某种物理量在进行比较。例如双积分ADC。
3、STM32内部ADC
转换/采样时间
STM32 ADC 常见是12 位逐次逼近型,STM32F1的ADC 的时钟不超过 14M,否则将导致结果准确度下降。
转换时间 = 采样周期 + 12.5 固定周期
假如ADC时钟为14MHz,14T = 1.5T + 12.5T ,转换频率 14T / 14MHz = 1us,所以 最大采样间隔时间为1us,最大采样频率为 1MHz,现实根据ADC分频时钟最接近理想值,分频因子6,时钟12MHz
规则/注入通道
规则通道:相当于正常运行的程序
注入通道:就相当于中断。在你程序正常执行的时候,中断是可以打断你的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才得以继续转换。
3.1 ADC内部框图
5 图
32位规则数据寄存器 (ADC_DR)。转换后的结果存储在数据寄存器中。来自规则通道的转换结果存储在32位规则数据寄存器 (ADC_DR)中,规则数据寄存器只有一个,数据有左对齐和右对齐两种方式;
32位注入数据寄存器(ADC_JDRx) (x= 1~4)。来自注入通道的转换结果存储在32位注入数据寄存器中,注入数据寄存器有4个(ADC_JDRx) (x= 1…4),分别对应着各自的通道数据也有左对齐和右对齐两种方式。
寄存器
ADC_CR1 控制寄存器
ADC_CR1 的 SCAN 位:
1,扫描模式,0,关闭扫描模式。由软件设置和清除
ADC_CR1 的 位[19:16]:
设置 ADC 的操作模式
ADC_CR2 控制寄存器
ADON 位 :开关 AD 转换器
CONT 位:设置是否进行连续转换,如使用单次转换,所以 CONT 位必须为 0
ALIGN 位:设置数据对齐,0 使用右对齐
EXTSEL[2:0] :选择启动规则转换组转换的外部事件
ADC_SMPR1 采样事件寄存器
ADC_SMPR2 采样事件寄存器
ADC_SMPR1 设置转换通道10~17,
ADC_SMPR2 设置转换通道0~9
ADC_SQR1 规则序列寄存器
ADC_DR 规则数据寄存器
规则序列中的 AD 转化结果都将被存在这个寄存器里面
注入通道的转换结果被保存在 ADC_JDRx
ADC_SR 状态寄存器