STM32F4系列ADC最大转换速率及操作条件(以STM32F407ZGT6为例)
前言
对于不同型号的MCU(Microcontroller Unit),极限参数可能会有所不同,因此必须以具体型号的数据手册(datasheet)为准,这里以STM32F407ZGT6为例进行讲解。
一、如何获取数据手册?
请参考本人的另一篇文章 如何下载STM32某型号MCU的数据手册(datasheet)
二、STM32F4系列ADC相关基础
ADC时钟
ADC有两个时钟
- 模拟电路时钟(ADCCLK):所有ADC(ADC1、ADC2和ADC3)共用,用于ADC转换部分模拟电路。
- 数字接口时钟(APB2):每个ADC独立使能其数字接口时钟,用于寄存器读/写访问。
其中ADCCLK由PCLK2(APB2时钟)分频而来,由ADC通用控制寄存器 ADC_CCR 中的 ADCPRE 位编程预分频系数。
ADC采样时间
ADC采样时间可由寄存器 ADC_SMPRx 软件编程,这里的周期是指模拟时钟周期
(即ADCCLK)。每个ADC转换器的采样时间是独立设置的。
ADC分辨率
ADC分辨率同样可由软件编程,通过ADC_CR1寄存器的RES位可设置ADC转换器的分率。分辨率越低转换所需周期数(下图含最小采样时间)越少,每个ADC转换器的分辨率是独立设置的。

三、一般操作条件
参考数据手册中的电气特性(Electrical characteristics)-> 操作条件(Operating conditions)-> 一般操作条件(Operating conditions)。
注意!!!: 此数据手册中存在一处笔误,VDDA=2.4~3.6V时,应该是 (ADC limited to 2.4 M
samples) 而非 1.4M。
由表14可知,ADC的最大转换速率
与VDDA有关,当VDDA低于2.4V时,转换速率最大只有1.2Msps(million samples per second);而当VDDA高于2.4V时,可达2.4Msps,即每秒一百二十万次转换。
无论是1.2Msps还是2.4Msps,都是相对于12位分辨率
来说的,即表14中给出的是最高分辨率(12bit)下的最大转换速率。STM32F4系列MCU支持12位、10位、8位和6位可编程分辨率,更低的分辨率可以缩短转换周期。因此采用降低分辨率的方法还可以进一步获得更大的转换速率。
四、ADC特性
参考数据手册中的电气特性(Electrical characteristics)-> 操作条件(Operating conditions)-> 12位ADC特性(12-bit ADC characteristics)。
由表67可知,ADC的最大时钟频率在VDDA低于2.4V时为18MHz,VDDA高于2.4V时为36MHz。
对于12位分辨率来说,转换周期为12个ADC周期,采样时间可编程的最小值为3个ADC周期,即12位分辨率的最少转换周期数为15个ADC周期。
因此,当VDDA低于2.4V时12位分辨率的最大转换速率为 18/15 Msps,即上面提到的1.2Msps。当VDDA高于2.4V时12位分辨率的最大转换速率为 36/15 Msps,即上面提到的2.4 Msps。
五、总结
影响ADC转换速率的因素:
- 模拟供电电压VDDA——通过影响最大ADC时钟频率而间接限制最大转换速率。
- ADC时钟频率(ADCCLK)
- 采样保持时间
- ADC分辨率
ADC一次转换所需周期数计算公式:
总转换周期数 = 采样周期数 + X个周期数
- 其中 X 为分辨率