找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 984|回复: 0
收起左侧

STM32-ADC原理

[复制链接]
ID:431258 发表于 2018-11-22 16:46 | 显示全部楼层 |阅读模式
STM32 拥有 1~3 个 ADC (STM32F101/102 系列只有 1 个 ADC),这些 ADC 可以独立
使用, 也可以使用双重模式(提高采样率)。 STM32 的 ADC 是 12 位逐次逼近型的模拟数
字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可
以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位
数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀
值。
STM32F103 系列最少都拥有 2 个 ADC,我们选择的 STM32F103ZET 包含有 3 个 ADC。
STM32 的 ADC 最大的转换速率为 1Mhz,也就是转换时间为 1us(在 ADCCLK=14M,采样周期
为 1.5 个 ADC 时钟下得到),不要让 ADC 的时钟超过 14M,否则将导致结果准确度下降。
STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于你正常
运行的程序,而注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你
的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完
成之后,规则通道才得以继续转换。
通过一个形象的例子可以说明: 假如你在家里的院子内放了 5 个温度探头,室内放了
3 个温度探头; 你需要时刻监视室外温度即可,但偶尔你想看看室内的温度;因此你可以
使用规则通道组循环扫描室外的 5 个探头并显示 AD 转换结果,当你想看室内温度时,通
过一个按钮启动注入转换组(3 个室内探头)并暂时显示室内温度,当你放开这个按钮后,系
统又会回到规则通道组继续检测室外温度。从系统设计上,测量并显示室内温度的过程中断
了测量并显示室外温度的过程,但程序设计上可以在初始化阶段分别设置好不同的转换组,
系统运行中不必再变更循环转换的配置,从而达到两个任务互不干扰和快速切换的结果。可
以设想一下,如果没有规则组和注入组的划分,当你按下按钮后,需要从新配置 AD 循环扫  

描的通道,然后在释放按钮后需再次配置 AD 循环扫描的通道。
上面的例子因为速度较慢,不能完全体现这样区分(规则通道组和注入通道组)的好处,
但在工业应用领域中有很多检测和监视探头需要较快地处理,这样对 AD 转换的分组将简化
事件处理的程序并提高事件处理的速度。
STM32 其 ADC 的规则通道组最多包含 16 个转换,而注入通道组最多包含 4 个通道。
关于这两个通道组的详细介绍,请参考《STM32 参考手册的》第 155 页,第 11 章。 STM32
的 ADC 可以进行很多种不同的转换模式,这些模式在《STM32 参考手册》的第 11 章也都
有详细介绍,我们这里就不在一一列举了。我们本章仅介绍如何使用规则通道的单次转换模
式。
STM32 的 ADC 在单次转换模式下,只执行一次转换,该模式可以通过 ADC_CR2 寄存器
的 ADON 位(只适用于规则通道)启动,也可以通过外部触发启动(适用于规则通道和注入
通道),这是 CONT 位为 0。以规则通道为例,一旦所选择的通道转换完成,转换结果将被
存在 ADC_DR 寄存器中, EOC(转换结束)标志将被置位, 如果设置了 EOCIE,则会产生中
断。然后 ADC 将停止,直到下次启动

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表