【STM32笔记】STM32的ADC开发基础(一)

本文详细介绍了ADC的工作原理、性能参数如量程、分辨率、精度和转换时间,以及STM32F103系列微控制器中的ADC配置,包括单次、连续、扫描和间断转换模式。重点讨论了逐次逼近型ADC和不同类型的ADC在实际应用中的选择和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. ADC是什么

  ADC(analog-to-digital converter,模拟数字转换器,简称模数转换器),是一种将连续变化的模拟信号转换为离散的数字信号的电子器件。
  12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,3个ADC控制器,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次连续扫描间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。此外,还可以用作模拟看门狗,模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
在STM32F103ZET6芯片中一共有3个ADC控制器
在这里插入图片描述

而在STM32F103C8T6芯片中只有2个ADC控制器
在这里插入图片描述

二. ADC的性能参数

  ADC的主要性能参数有量程分辨率精度转换时间等,这些也是选择ADC的重要的参考指标。

1. 量程

  量程(full scale range,FSR)是指ADC所能转换的模拟输入电压的范围,分为单极性和双极性两种类型。单极性的量程为0 ~ +3.3V,0 ~ +5V等;双极性的量程为-5 ~ +5V、-12 ~ +12V等。

2. 分辨率

  分辨率(resolution)是指ADC所能分辨的最小的模拟输入量,反应ADC对输入信号微小变化的响应能力。若小于最小变化量的输入模拟电压的任何变化,那么将不会引起ADC输出数字值的变化。
  关于计算分辨率的公式:分辨率是由ADC的量化位数n决定,一个n位ADC的分辨率等于ADC的满量程与2n比值。例如:一个8位的ADC,其量程为0 ~ +5V,其分辨率就为5V/28 = 19.53 mV。

3. 精度

  精度(accuracy)是指对ADC的数字输出(二进制代码),其实际需要的模拟输入值理论上要求的模拟输入值之差。
  影响ADC精度值由很多的因素,如:量化误差、非线性误差,零点漂移误差、增益误差等。
  关于精度的计算方式不同,可以分为绝对精度相对精度绝对精度:通常用具体数值或输出数字量最低有效位LSB的分数值表示。相对精度:定义为这个最大差值与满量程模拟电压的百分数。例如:一个10位量程为0 ~ +10V的ADC,其绝对精度为+/- 0.5LSB,则绝对精度为0.5 * 10V/210 = 4.88mV,相对精度为4.88mV / 10V *100% = 0.048%。

4. 转换时间

  转换时间(conversation time)是ADC完成一次A/D转换所需要的时间,是指从启动ADC开始搭配获得相应数据所需要的总时间。ADC的转换时间等于ADC的采样时间加上ADC量化和编码时间。采样时间是指了两次A/D转换的间隔。

三. ADC的主要类型

  ADC的类型有很多,现在主流的有逐次逼近型ADC电压时间转换型ADC电压频率转换型ADC三种。

  • 逐次逼近型ADC:是目前应用非常普遍的一种数据转换器,尤其是在独立的集成ADC产品中。由一个D/A转换器和一个比较器构成,进行A/D转换时,由D/A转换器从高位到低位依次逐位增加转换位数,产生不同的输出电压,把输出电压与输入电压通过比较器进行直接比较,经过n次比较后得到最终的数字值。
  • 电压时间转换型ADC:是一种通过间接转换方式实现的A/D转换器。由一个V-T转换电路和一个计数器构成。进行A/D转换时,先把输入的模拟电压信号转换成与之成正比的时间宽度信号,然后在这个时间宽度里对固定频率的时钟脉冲计数,计数的结果就是正比于输入模拟电压的数字信号。
  • 电压频率转换型ADC:是另一种通过间接转换方式实现的A/D转换器。由一个V-F转换电路和一个计数器构成。进行A/D转换时,先把输入的模拟电压信号转换成与之成正比的频率信号,然后在一个固定的时间间隔里对得到的频率信号计数,所得到的计数的结果就是正比于输入模拟电压的数字量。

四. ADC的主要特征

  STM32F103微控制器内部集成1 ~ 3个12位逐次逼近型ADC。

  • 每一个ADC最多有18路模拟输入通道,可测量16个外部信号和2个内部信号。
  • ADC的供电要求2.4 - 3.6V。
  • ADC可测量模拟输入信号V-IN的范围是V-REF- <= V-IN <= V-REF+。
  • ADC的模数转换可以单次、连续、扫描或间断模式进行。
  • ADC可将18路通道分为规则通道组和注入通道组,其中规则通道组最多包含16路通道,注入通道组最多包含4路通道。
  • ADC具有12位分辨率。
  • 具有从通道0到通道n的自动扫描模式。
  • 当系统时钟等于56Hz,ADC时钟等于14Hz、ADC采样时间等于1.5个ADC时钟周期时,ADC获得最短的转换时间是1ms。

在这里插入图片描述
ADC通道的转换过程如下:

(1)输入信号经过ADC的输入信号通道ADCx_IN0—ADCx_IN15被送到ADC部件(图中的模拟至数字转换器)

(2)ADC部件需要受到触发信号后才开始进行A/D转换,触发信号可以使用软件触发,也可以是EXTI外部触发或定时器触发。

(3)ADC部件接收到触发信号后,在ADC时钟ADCCLK的驱动下,对输入通道的信号进行采样、量化和编码。

(4)ADC部件完成转换后,将转换后的12位数值以左对齐或者右对齐的方式保存到一个16位的规则通道数据寄存器中,产生ADC转化结束/注入转换结束事件,可触发中中断或DMA请求。



  STM32F103微控制器的ADC最多有18路模拟器输入通道。除了ADC1_IN16与内部温度传感器相连,ADC1_IN17与内部参考电压V-REFINT(1.2V)相连,其他的16路通道ADCx_IN0—ADCx_IN15都被连接到STM32F103微控制器对应的I/O引脚上,可以用作模拟信号的输入。
                       ADC模块通道和I/O引脚表

通道序号ADC1ADC2ADC3
0PA0PA0PA0
1PA1PA1PA1
2PA2PA2PA2
3PA3PA3PA3
4PA4PA4PF6
5PA5PA5PA7
6PA6PA6PF8
7PA7PA7PF9
8PB0PB0PF10
9PB1PB1
10PC0PC0PC0
11PC1PC1PC1
12PC2PC2PC2
13PC3PC3PC3
14PC4PC4
15PC5PC5
16内部温度
17内部参考电压

规则通道组:划分到规则通道组中的通道称为规则通道。多数情况下,如果仅是一般模拟输入信号的转换,那么将模拟输入信号的通道设置位规则通道即可。规则通道组最多可以有16个规则通道,当每个规则通道转换完成后,将转换结果保存到同一个规则通道数据寄存器、同时产生ADC转换结束事件,可以产生对应的中断和DMA请求。
注入通道组:划分到注入通道组中的通道称为注入通道。如果需要转换的模拟输入信号的优先级较其他模拟输入信号要高,那么可将该模拟输入信号的通道归入注入通道组中。注入通道组最多可以有4个注入通道,同样,会有4个注入通道寄存器用来存放注入通道的转换结果。当每个注入通道转换完成后,产生ADC注入转换结束事件,可产生对应的中断,但不具备DMA传输能力。

五. ADC的转换模式

1. 单次转换模式

  单次转换模式下,ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。
 ● 如果一个规则通道被转换:
  ─ 转换数据被储存在16位ADC_DR寄存器中
  ─ EOC(转换结束)标志被设置
  ─ 如果设置了EOCIE,则产生中断。
 ● 如果一个注入通道被转换:
  ─ 转换数据被储存在16位的ADC_DRJ1寄存器中
  ─ JEOC(注入转换结束)标志被设置
  ─ 如果设置了JEOCIE位,则产生中断。
然后ADC停止。

2. 连续转换模式

  连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。
 ● 如果一个规则通道被转换:
  ─ 转换数据被储存在16位的ADC_DR寄存器中
  ─ EOC(转换结束)标志被设置
  ─ 如果设置了EOCIE,则产生中断。
 ● 如果一个注入通道被转换:
  ─ 转换数据被储存在16位的ADC_DRJ1寄存器中
  ─ JEOC(注入转换结束)标志被设置
  ─ 如果设置了JEOCIE位,则产生中断。

3. 扫描模式

  扫描模式中,在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。

4. 间断模式

  间断模式中,允许用户通过设置一个或多个转换序列,并通过设置转换序列的长度来指定要进行的连续转换的次数。然后,启用采样周期的触发源(可以是软件触发或外部触发),并设置所需的转换通道。

下一节我们来聊聊基于STM32CubeMX的实现ADC模数转化的设计步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值