一、ADC简介
STM32 的 ADC 是 12 位逐次逼近型 的模拟数字转换器。 它有 18 个通道,可测量 16 个外部和 2 个内部信号源。 各通道的 A/D 转换可以 单次、连续、扫描或间断模式 执行。 ADC 的结果可以 左对齐或右对齐方式 (12位)存储在 16 位数据寄存器中。
二、ADC特点
12位表示ADC的分辨率,大小为0~2^12-1;
1us表示从转换开始到产生结果需要最快的转换时间为1us,对应的AD转换频率为1MHZ;
16个外部信号源就是16个GPIO口,引脚可以直接测电压;
2个内部信号源是内部温度传感器(可测CPU温度)和内部参考电压(1.2V左右的基准电压,不随外部供电电压而变化,可读取基准电压校准外部引脚电压);
三、 ADC功能图
1、逐次逼近型ADC芯片结构框图
2、ADC框图
四、ADC基本结构
最左边是18个信号源,进入AD转换器后可以选择16个规则组和4个注入组,转换完成的结果会放在AD数据寄存器,其中规则组有一个,注入组有四个;
触发数据转换的触发控制部分提供了软件触发和硬件触发两种选择;
右边推动ADC逐次比较的时钟CLOCK来自RCC时钟;
上面的模拟看门狗用于监测转换结果的范围,超出阈值就会申请中断;
规则组注入组转换完成会有EOC信号,会置标志位,也可以申请中断。
五、输入通道
六、转换模式
ADC可选择单次转换和连续转换,扫描和非扫描。他们排列组合就会产生四种模式。
1、ADC单通道
单次转换,扫描模式失能:转换一次后停止转换,要想再次启动转换就要再次触发;
连续转换,扫描模式失能:转换一次后继续下一轮转换,只用开始时触发一次即可;
2、ADC多通道
单次转换,扫描模式使能:ADC的多个通道按照配置的顺序依次转换,转换完成后停止转换,要想再次启动转换就要再次触发;
连续转换,扫描模式使能:ADC的多个通道按照配置的顺序依次转换,转换完成后继续下一轮转换,只用开始时触发一次即可;
下一次的刷新会覆盖上一次的值,在扫描模式下可通过DMA转运数据
七、触发控制
八、数据对齐
12位ADC转换器转换的结果也是12位的数据,但数据寄存器是16位的。所以就存在数据对齐的问题。
1、数据右对齐
十二位数据向右靠,高位补0;
2、数据左对齐
十二位数据向左靠,低位补0;
九、转换时间
ADC的转换步骤:采样,保持,量化,编码;
Tconv = 采样时间 + 12.5个ADC周期 (采样时间就是采样与保持的时间;12.5个ADC周期就是量化与编码的时间)(ADC周期就是从RCC分频过来的ADCCLK,最大为14MHZ)
当ADCCLK=14MHZ,采样时间为1.5个ADC周期时:
Tconv = 1.5 + 12.5 = 14个ADC周期 = 1us
采样时间短速度快,采样时间长避免毛刺干扰