标题:
STM32 ADC 简介
[打印本页]
作者:
x、b
时间:
2018-10-31 18:17
标题:
STM32 ADC 简介
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
循环扫描的通道,然后在释放按钮
后需再次配置
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
将停止,直
到下次启动。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1