ADC的基本概念

  • ADC的定义与理解
  • ADC分辨率(12位、10位、8位、6位)
  • ADC通道(规则、注入)
  • ADC模式(独立、双重、三重)
  • ADC转换模式(单次、连续)
  • ADC结果的读取方式(中断、DMA)
  • 单通道独立模式ADC电压采集
  • 多通道ADC
  • 本文主要适用于初学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进行传输。

    物联沃分享整理
    物联沃-IOTWORD物联网 » ADC基础概念学习总结

    发表评论