实验 15 ADC 实验
本章我们将向大家介绍 STM32 的 ADC 功能。 在本章中,我们将利用 STM32
的 ADC1 通道 1 来采样外部电压值,并将采集到的电压数据通过 printf 打印输
出在串口助手上。 本章分为以下学习目标:
1. 掌握 STM32 的内部 ADC 的操作方式
1.1 STM32 内部 ADC 的简介
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 循环扫
评论0