ADC(Analog-Digital Converter)模拟-数字转换器
ADC可以将引脚上连续变化的模拟电压转你换位内存中存储的数字变量,建立模拟电路到数字电路的桥梁。
12位逐次逼近型ADC,1us转换时间
输入电压范围:0-3.3V转换结果范围:0-4095
18个输入通道,可以测量16个外部和2个内部信号源
规则组和注入组两个转换单元
模拟看门狗自动检测输入电压范围
STM32F1系列的ADC介绍
STM32F1的ADC为12位ADC,是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部 信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右 对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。 ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。
ADC转换时间:
STM32F103xx增强型产品:时钟为56MHz时为1us(时钟为72MHz为1.17us)
STM32F101xx基本型产品:时钟为28MHz时为1us(时钟为36MHz为1.55us)
STM32F102xxUSB型产品:时钟为48MHz时为1.2us
STM32F105xx和STM32F107xx产品:时钟为56Mhz时为1us(时钟为72MHz为1.17us)
工作原理
STM32的ADC模块通常基于逐次逼近寄存器(SAR)架构,其工作原理包括采样、转换和数据存储三个阶段。在采样阶段,ADC将模拟输入信号保持在采样电容上,以稳定输入电压。在转换阶段,ADC通过逐次逼近算法,将模拟电压与参考电压进行比较,生成相应的数字值。最后,在数据存储阶段,转换完成的数字值被存储在数据寄存器中,供CPU读取或通过DMA(Direct Memory Access,直接存储器访问)传输到内存。
关键参数
- 分辨率:通常以位(bit)表示,决定了数字输出的精度。例如,12位ADC可以将输入电压分辨为4096(2¹²)个不同的数字值。
- 采样率:单位时间内采样的次数,决定了ADC能够捕捉的信号变化速度。
- 输入通道数:ADC可以同时采集的模拟输入信号数量。STM32的ADC模块支持多个输入通道,用户可以通过配置选择不同的输入源。
- 转换精度:包括信噪比(SNR)、总谐波失真(THD)等指标,反映ADC的性能。
- 功耗:ADC在工作时消耗的电能,影响整体系统的能效。
工作模式
STM32的ADC支持多种工作模式,以适应不同的应用需求:
- 单次转换模式:每次触发只进行一次ADC转换,适用于不频繁采样的应用。
- 连续转换模式:持续不断地进行ADC转换,适用于需要连续数据流的应用,如音频采集。
- 扫描模式:在单次或连续转换模式下,依次转换多个通道,适用于多通道数据采集。
- 注入转换模式:用于优先级更高的ADC转换任务,通常与常规转换并行工作。
- 双ADC模式:多个ADC模块协同工作,提高采样速度和数据精度。
配置步骤
在STM32中配置ADC通常包括以下几个步骤:
- 启用相应的时钟信号。
- 将ADC输入引脚配置为模拟模式,避免数字干扰。
- 使用HAL库或其他库函数配置ADC的基本参数,如分辨率、采样时间、扫描模式等。
- 配置ADC通道,选择要转换的ADC通道,并设置相应的采样时间。
- 根据工作模式选择不同的启动方法,如单次转换或连续转换。
- 读取转换结果,可以使用DMA通道将转换结果直接存储到内存,也可以直接读取寄存器中的值。
实际应用
STM32的ADC模块在传感器数据采集、温度监测、音频信号处理等方面具有广泛应用。例如,在温度监测系统中,可以通过ADC采集温度传感器的模拟信号,并将其转换为数字信号进行处理和显示。在音频信号处理中,ADC可以将模拟音频信号转换为数字音频信号,进行后续的数字信号处理和分析。