打印
[STM32F4]

STM32F4之ADC介绍

[复制链接]
772|59
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. STM32F4 ADC 简介
    STM32F4xx 系列一般都有 3 个 ADC,这些 ADC 可以独立使用,也可以使用双重/三重模式(提高采样率)。 STM32F4 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。 ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。ADC 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。注: STM32F4 的 ADC 最大的转换速率为 2.4Mhz,也就是转换时间为 0.41us(在 ADCCLK=36M,采样周期为 3 个 ADC 时钟下得到),不要让 ADC 的时钟超过 36M,否则将导致结果准确度下降。

1.1 ADC 特性
可配置 12 位、 10 位、 8 位或 6 位分辨率
在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断
单次和连续转换模式
用于自动将通道 0 转换为通道“ n”的扫描模式
数据对齐以保持内置数据一致性
可独立设置各通道采样时间
外部触发器选项,可为规则转换和注入转换配置极性
不连续采样模式
双重/三重模式(具有 2 个或更多 ADC 的器件提供)
双重/三重ADC 模式下可配置的 DMA 数据存储
双重/三重交替模式下可配置的转换间延迟
ADC 转换类型(参见数据手册)
ADC电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V
ADC 输入范围: VREF— VIN VREF+
规则通道转换期间可产生 DMA 请求

使用特权

评论回复
沙发
初级工程渣|  楼主 | 2023-10-29 01:53 | 只看该作者
1.2 ADC 工作框图

使用特权

评论回复
板凳
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者
IO 口需要使用 ADC 功能,只需要将 IO 口配置为模拟输入,然后再去编程此 IO 口对应的 ADC 通道;
注意:不是所有的 IO 口都有 ADC 通道,需要查找数据手册的 ADC 通道映射表。

使用特权

评论回复
地板
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者
1.3 通道选择
    STM32F4 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于你正常运行的程序,而注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才得以继续转换。
    通过一个形象的例子可以说明: 假如你在家里的院子内放了 5 个温度探头,室内放了 3 个温度探头; 你需要时刻监视室外温度即可,但偶尔你想看看室内的温度;因此你可以使用规则通道组循环扫描室外的 5 个探头并显示 AD 转换结果,当你想看室内温度时,通过一个按钮启动注入转换组(3 个室内探头)并暂时显示室内温度,当你放开这个按钮后,系统又会回到规则通道组继续检测室外温度。从系统设计上,测量并显示室内温度的过程中断了测量并显示室外温度的过程,但程序设计上可以在初始化阶段分别设置好不同的转换组,系统运行中不必再变更循环转换的配置,从而达到两个任务互不干扰和快速切换的结果。可以设想一下,如果没有规则组和注入组的划分,当你按下按钮后,需要从新配置 AD 循环扫描的通道,然后在释放按钮后需再次配置 AD 循环扫描的通道。

使用特权

评论回复
5
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者
 上面的例子因为速度较慢,不能完全体现这样区分(规则通道组和注入通道组)的好处,但在工业应用领域中有很多检测和监视探头需要较快地处理,这样对 AD 转换的分组将简化事件处理的程序并提高事件处理的速度。

使用特权

评论回复
6
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者
有 16 条复用通道。可以将转换分为两组:规则转换和注入转换。每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。例如,可按以下顺序对序列进行转换: ADC_IN3、ADC_IN8、 ADC_IN2、 ADC_IN2、 ADC_IN0、 ADC_IN2、 ADC_IN2、 ADC_IN15。

使用特权

评论回复
7
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者
一个规则转换组最多由 16 个转换构成。必须在 ADC_SQRx 寄存器中选择转换序列的规则通道及其顺序。规则转换组中的转换总数必须写入ADC_SQR1 寄存器中的 L[3:0] 位。

使用特权

评论回复
8
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者
一个注入转换组最多由 4 个转换构成。必须在 ADC_JSQR寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位。

使用特权

评论回复
9
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者
如果在转换期间修改 ADC_SQRx 或 ADC_JSQR 寄存器,将复位当前转换并向 ADC 发送一
个新的启动脉冲,以转换新选择的组。

使用特权

评论回复
10
初级工程渣|  楼主 | 2023-10-29 01:54 | 只看该作者

使用特权

评论回复
11
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
注意: 我们使用 ADC 通道时,查找 stm32f405.407 数据手册的 Page46。

使用特权

评论回复
12
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
温度传感器、 VREFINT 和 VBAT 内部通道
对于 STM32F40x 和 STM32F41x 器件,温度传感器内部连接到通道 ADC1_IN16。内部参考电压 VREFINT 连接到ADC1_IN17。

使用特权

评论回复
13
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
对于 STM23F42x 和 STM32F43x 器件,温度传感器内部连接到与 VBAT共用的通道ADC1_IN18。一次只能选择一个转换(温度传感器或 VBAT)。同时设置了温度传感器和 VBAT 转换时,将只进行 VBAT转换。

使用特权

评论回复
14
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
内部参考电压 VREFINT 连接到 ADC1_IN17。

使用特权

评论回复
15
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
VBAT 通道连接到通道ADC1_IN18。该通道也可转换为注入通道或规则通道。
注意: 温度传感器、 VREFINT 和 VBAT通道只在主 ADC1 外设上可用。

使用特权

评论回复
16
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
1.4 ADC 相关寄存器
1.4.1 外设时钟使能寄存器 (RCC_APB2ENR)

使用特权

评论回复
17
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
例如:使能ADC1外设时钟

RCC->APB2ENR |=(1<<8);//ADC1

使用特权

评论回复
18
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者
1.4.2 ADC 状态寄存器 (ADC_SR)

使用特权

评论回复
19
初级工程渣|  楼主 | 2023-10-29 01:55 | 只看该作者

使用特权

评论回复
20
初级工程渣|  楼主 | 2023-10-29 01:56 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

682

帖子

0

粉丝