本文主要适用于初学ADC的新手了解一些易混淆的概念,不适合具体配置的时候参考,建议从独立模式单通道采集电压值入手学习配置。

推荐参考资料:《STM32F4XX参考手册》

ADC的定义与理解

ADC(Analog-to-Digital Converter)为模拟数字转换器(或称AD转换器)的简称。ADC是将模拟量转换为数字量的器件,常见的应用是将连续变化的电压值转换为数字量。原理是采样原理,可以简单理解为,以一定的频率采样电压值,使连续值变为离散值,也就得到了若干数字量。

12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。

实际使用时,不需要清楚其具体的实现原理,只需要知道如何配置其采集数据、转换数据和传输数据的方式即可。

ADC分辨率(12位、10位、8位、6位)

可配置 12 位、10 位、8 位或 6 位分辨率。12位分辨率精度最高。

ADC通道(规则、注入)

STM32F4共有3个ADC转换器ADC1、ADC2、ADC3,可以同时进行3个模拟量的转换。每个ADC转换器又可以转换多个引脚通道的模拟量,ADC1可以转换PA0、PA1、PA3等引脚的模拟量,分时转换多个通道的模拟量,即多通道。同时,有的引脚(比如PA1)可以选用其中一个ADC转换器(ADC1或ADC2或ADC3)进行模拟量转换,也可以用双重或三重模式,使用两个或以上ADC(比如ADC1和ADC3)交叉采集同一通道(比如PA1)的数据。

如表所示,ADC1、ADC2、ADC3分别对应16个可用的通道。
在这里插入图片描述
ADC通道在转换时分为规则通道注入通道

  • 规则通道:最多支持16个通道。一般将使用的通道配置为规则通道。可以通过配置转换序列决定通道转换的顺序。
  • 注入通道:最多支持4个通道。可以优先于规则通道抢先进行AD转换的一种通道。

ADC模式(独立、双重、三重)

ADC模式分为独立模式、双重模式和三重模式。

  • 独立模式:ADC转换完1个通道的数据后才能转换下一个通道的数据。
  • 双重模式:具有两个 ADC时可实现。
  • 三重模式:具有三个 ADC时可实现。

在多重 ADC 模式下,通过 ADC1 主器件到 ADC2 和 ADC3 从器件的交替触发或同时触发来启动转换。

可实现以下四种模式:
● 注入同时模式
● 规则同时模式
● 交替模式
● 交替触发模式

也可按以下方式组合使用上述模式:
● 注入同时模式 + 规则同时模式
● 规则同时模式 + 交替触发模式

ADC转换模式(单次、连续)

AD 转换包括采样阶段和转换阶段。

  • 在采样阶段才对通道数据进行采集。
  • 在转换阶段只是将采集到的数据进行转换为数字量输出,此刻通道数据变化不会改变转换结果。

转换模式分为单次转换模式和连续转换模式。

  • 单次转换模式:ADC执行一次转换后停止。
  • 连续转换模式:ADC结束一个转换后立即启动一个新的转换。

ADC结果的读取方式(中断、DMA)

单通道采集时,可在AD转换后通过中断,在中断服务函数中读取数据。
多通道采集时,可使用DMA传输。

单通道独立模式ADC电压采集

初始化配置ADC的顺序:

  • 初始化模拟量引脚为模拟输入模式。
  • 使能GPIO时钟。
  • 调用函数ADC_CommonInit()。配置ADC Common 结构体,设置通用ADC为独立模式,采用4分频(一般是4分频)。
  • 调用函数ADC_Init()。配置ADC Init结构体,设置为禁止扫描模式,使用软件触发,1个通道。
  • 调用函数ADC_RegularChannelConfig()。配置 ADC 转换通道顺序及采样时间。
  • 调用函数ADC_ITConfig()。配置使能 ADC 转换完成中断,在中断内读取转换完数据。
  • 调用函数NVIC_Init()。配置中断优先级分组和优先级配置。
  • 调用ADC_Cmd()。使能ADC转换。
  • 调用函数ADC_SoftwareStartConv()。使能软件触发ADC转换,开启转换。

具体如何配置参数还需查看其他资料。比如开发板配套资料、STM32F4XX中文参考手册。

多通道ADC

需要注意的是,如果单片机支持3个ADC,则可以同时独立用3个ADC对3个通道的模拟量进行转换。但如果需要转换超过3个通道的模拟量,则需要同时启用DMA进行传输。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐