cortex_m3_stm32嵌入式学习笔记16之ADC实验

来源:本站
导读:目前正在解读《cortex_m3_stm32嵌入式学习笔记16之ADC实验》的相关信息,《cortex_m3_stm32嵌入式学习笔记16之ADC实验》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《cortex_m3_stm32嵌入式学习笔记16之ADC实验》的详细说明。
简介:STM32 拥有 1~3 个 ADC( STM32F101/102 系列只有 1 个 ADC),这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。 STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。

之前没学过数模电,对A/D D/A转换一窍不通,也百度了很多资料大都深奥难懂。。算了,先自以为是一下吧,等以后学了专业课再说。。(寒假回家一定要学。。恩 就这么决定了)看了那么多资料,感觉 A/D转换就是将电压(或者是其他模拟量:如 压力,图像等)转换为数字,D/A就是反过来,而ADC就是A/D转换器,他可以采集外部电压转化为数字。本节实验通过ADC采集外部电压转换为数字显示在屏幕上。

STM32 拥有 1~3 个 ADC( STM32F101/102 系列只有 1 个 ADC),这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。 STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。

STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于你正常运行的程序,而注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才得以继续转换。

通过一个形象的例子可以说明: 假如你在家里的院子内放了 5 个温度探头,室内放了3个温度探头; 你需要时刻监视室外温度即可,但偶尔你想看看室内的温度;因此你可以使用规则通道组循环扫描室外的 5 个探头并显示 AD 转换结果,当你想看室内温度时,通过一个按钮启动注入转换组(3 个室内探头)并暂时显示室内温度,当你放开这个按钮后,系统又会回到规则通道组继续检测室外温度。从系统设计上,测量并显示室内温度的过程中断了测量并显示室外温度的过程,但程序设计上可以在初始化阶段分别设置好不同的转换组,系统运行中不必再变更循环转换的配置,从而达到两个任务互不干扰和快速切换的结果。可以设想一下,如果没有规则组和注入组的划分,当你按下按钮后,需要从新配置 AD 循环扫描的通道,然后在释放按钮后需再次配置 AD 循环扫描的通道。

但本节只用到规则通道,因为是单次转换模式。。大概可以理解为我们现在只测量一个地方的电压值。。

配置ADC步骤如下:

1) 开启PA口和ADC1时钟,设置PA1为模拟输入。

STM32F103RCT6 的 ADC 通道 1 在 PA1 上,所以,我们先要使能 PORTA 的时钟,然后设置 PA1 为模拟输入。 使能 GPIOA 和 ADC 时钟用 RCC_APB2PeriphClockCmd 函数,设置 PA1的输入方式,使用 GPIO_Init 函数即可。这里我们列出 STM32 的 ADC 通道与 GPIO 对应表:

cortex_m3_stm32嵌入式学习笔记16之ADC实验

2)复位ADC1,同时设置ADC1分频因子。

3)初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息。

4)使能ADC并校准。

5)读取ADC值。

配置ADC的文件adc.c

cortex_m3_stm32嵌入式学习笔记16之ADC实验

cortex_m3_stm32嵌入式学习笔记16之ADC实验

cortex_m3_stm32嵌入式学习笔记16之ADC实验

cortex_m3_stm32嵌入式学习笔记16之ADC实验

获得了ADC的值之后。。 再转换成电压值的公式就看不懂了。。orz

不过有一个地方需要注意 LCD_ShowxNum()的用法

再次翻出它的源

cortex_m3_stm32嵌入式学习笔记16之ADC实验

看到最后一个参数的说明, mode 是一个8位的变量,第7位为0代表不填充,1代表填充。

一开始对填充这个概念没什么理解,于是将两种结果(填充和不填充)烧进去看了一下,发现显示0.001 的时候,如果选不填充,它会显示0. 1(点和1之间有2个空格),如果是填充就会显示0.001 (正常显示)所以我对填充的理解是:假如一个数6, 你想显示006,那么需要设置数的长度为3,填充模式

提醒:《cortex_m3_stm32嵌入式学习笔记16之ADC实验》最后刷新时间 2024-03-14 00:54:28,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《cortex_m3_stm32嵌入式学习笔记16之ADC实验》该内容的真实性请自行鉴别。