没有合适的资源?快使用搜索试试~ 我知道了~
STM32_实验13_ADC实验
5星 · 超过95%的资源 需积分: 49 29 下载量 47 浏览量
2011-06-01
09:05:43
上传
评论
收藏 934KB PDF 举报
温馨提示
试读
11页
我们将向大家介绍STM32的ADC。本节将利用STM32的ADC1通道0来采样外部电压值值,并在TFTLCD模块上显示出来.
资源推荐
资源详情
资源评论
206
3.13 ADC实验
这一节我们将向大家介绍 STM32 的 ADC。本节将利用 STM32 的 ADC1 通道 0 来采样外
部电压值值,并在 TFTLCD 模块上显示出来。本节分为如下几个部分:
3.13.1 STM32 ADC 简介
3.13.2 硬件设计
3.13.3 软件设计
3.13.4 下载与测试
207
3.13.1 STM32 ADC 简介
STM32 拥有 1~3 个 ADC,这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。
STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2
个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以
左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压
是否超出用户定义的高/低阀值。
STM32F103 系列最少都拥有 2 个 ADC,我们选择的 STM32F103RBT6 也包含有 2 个 ADC。
STM32 的 ADC 最大的转换速率为 1Mhz,也就是转换时间为 1us(在 ADCCLK=14M,采样周期
为 1.5 个 ADC 时钟下得到),不要让 ADC 的时钟超过 14M,否则将导致结果准确度下降。
STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于你运
行的程序,而注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你的执
行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,
规则通道才得以继续转换。
通过一个形象的例子可以说明:假如你在家里的院子内放了 5 个温度探头,室内放了 3 个
温度探头;你需要时刻监视室外温度即可,但偶尔你想看看室内的温度;因此你可以使用规则
通道组循环扫描室外的 5 个探头并显示 AD 转换结果,当你想看室内温度时,通过一个按钮启
动注入转换组(3 个室内探头)并暂时显示室内温度,当你放开这个按钮后,系统又会回到规则通
道组继续检测室外温度。从系统设计上,测量并显示室内温度的过程中断了测量并显示室外温
度的过程,但程序设计上可以在初始化阶段分别设置好不同的转换组,系统运行中不必再变更
循环转换的配置,从而达到两个任务互不干扰和快速切换的结果。可以设想一下,如果没有规
则组和注入组的划分,当你按下按钮后,需要从新配置 AD 循环扫描的通道,然后在施放按钮
后需再此配置 AD 循环扫描的通道。
上面的
例子因为速度较慢,不能完全体现这样区分(规则通道组和注入通道组)的好处,但
在工业应用领域中有很多检测和监视探头需要较快地处理,这样对 AD 转换的分组将简化事件
处理的程序并提高事件处理的速度。
STM32ADC 的规则通道组最多包含 16 个转换,而注入通道组最多包含 4 个通道。关于这
两个通道组的详细介绍,请参考《STM32 参考手册的》第 113 页,第 10 章。
STM32 的 ADC 可以进行很多种不同的转换模式,这些模式在《STM32 参考手册》的第 10
章也都有详细介绍,我们这里就不在一一列举了。我们本节仅介绍如何使用规则通道的单次转
换模式。
STM32 的 ADC 在单次转换模式下,只执行一次转换,该模式可以通过 ADC_CR2 寄存器
的 ADON 位(只适用于规则通道)启动,也可以通过外部触发启动(适用于规则通道和注入通
道),这是 CONT 位为 0。
以规则通道为例,一旦所选择的通道转换完成,转换结果将被存在 ADC_DR 寄存器中,
EOC(转换结束)标志将被置位,如果设置了 EOCIE,则会产生中断。然后 ADC 将停止,直
到下次启动。
接下来,我们介绍一下我们执行规则通道的单次转换,需要用到的 ADC 寄存器。第一个
要介绍的是 ADC 控制寄存器(ADC_CR1 和 ADC_CR2)。ADC_CR1 的各位描述如下:
208
图 3.13.1.1 寄存器 ADC_CR1 各位描述
这里我们不再详细介绍每个位,而是抽出几个我们这一节要用到的位进行针对性的介绍,
详细的说明及介绍,请参考《STM32 参考手册》第 10 章的相关章节。
ADC_CR1 的 SCAN 位,该位用于设置扫描模式,由软件设置和清除,如果设置为 1,则
使用扫描模式,如果为 0,则关闭扫描模式。在扫描模式下,由 ADC_SQRx 或 ADC_JSQRx 寄
存器选中的通道被转换。如果设置了 EOCIE 或 JEOCIE,只在最后一个通道转换完毕后才会产
生 EOC 或 JEOC 中断。
ADC_CR1[19:16]用于设置 ADC 的操作模式,详细的对应关系如下:
图 3.13.1.2 ADC 操作模式
本节我们要使用的是独立模式,所以设置这几位为 0 就可以了。接着我们介绍 ADC_CR2,
该寄存器的各位描述如下:
图 3.13.1.3 寄存器 ADC_CR2 操作模式
该寄存器我们也只针对性的介绍一些位:ADCON 位用于开关 AD 转换器。而 CONT 位用
于设置是否进行连续转换,我们使用单次转换,所以 CONT 位必须为 0。CAL 和 RSTCAL 用
于 AD 校准。ALIGN 用于设置数据对齐,我们使用右对齐,该位设置为 0。
EXTSEL[2:0]用于选择启动规则转换组转换的外部事件,详细的设置关系如下:
剩余10页未读,继续阅读
资源评论
- today_cs2012-04-29原子的程序,写得很明白
smallpig555
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功