STM32单片机(七)ADC模拟数字转换器 您所在的位置:网站首页 单片机内部晶振怎么用 STM32单片机(七)ADC模拟数字转换器

STM32单片机(七)ADC模拟数字转换器

2023-07-01 22:50| 来源: 网络整理| 查看: 265

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。 🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。 🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。 💑专栏主页:http://t.csdn.cn/HCD8v

本学习过程参考:https://space.bilibili.com/383400717

STM3单片机安装软件、各种资料以及源码的路径: 链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F 提取码:asdf

链接里压缩包的解压密码:32

本大节主要学习ADC模拟数字转换器的相关知识,包含两小节: 第一小节主要学习ADC模拟数字转换器的理论基础知识,第二小节是对第一小节的内容写两个程序进行练习,分别是AD单通道和AD多通道; 最终附上所有的源代码;

本小节主要学习ADC模拟数字转换器的理论基础知识。

ADC的作用: 对于GPIO来说,它只能读取引脚的高低电平,要么是高电平,要么是低电平,只有两个值;而使用ADC之后,我们就可以对这个高电平和低电平之间的任意电压进行量化,最终用一个变量来表示,读取这个变量,就可以知道引脚的具体电压是多少了;所以ADC其实就是一个电压表,把引脚的电压值测出来,放在一个变量里,这就是ADC的作用;

文章目录 1 ADC简介2 逐次逼近型ADC3 ADC框图4 ADC基本结构5 输入通道6 转换模式7 触发控制8 数据对齐9 转换时间10 校准11 硬件电路

1 ADC简介

在这里插入图片描述

STM32主要是数字电路,数字电路只有高低电平,没有几伏电压的概念,所以如果想要读取电压值,就需要借助ADC模数转换器来实现了;ADC读取引脚上的模拟电压,转换为一个数据,存在寄存器里,我们再把这个数据读取到变量里,就可以进行显示、判断、记录等等操作了;ADC可以将模拟信号转换为数字信号,是模拟电路到数字电路的桥梁;DAC模拟数字转换器,可以将数字量转换为模拟电压;

ADC有两个关键参数:

第一个是分辨率,一般用多少位来表示,12位AD值,它的表示范围就是0~2^12-1;就是量化结果范围是0~4095;位数越高,量化结果就越精细,对应分辨率就越高;第二个是转换时间,就是转换频率;AD转换是需要花一小段时间的,这里的1us就表示从AD转换开始,到产生结果,需要花1us时间,对应AD转换的频率就是1MHz;这个就是STM32 ADC最快的转换频率; 2 逐次逼近型ADC

在这里插入图片描述

上图是ADC0809的内部结构图;它是一个独立的8位逐次逼近型ADC芯片,其是一款经典的外挂型ADC芯片;左边IN0-IN7是8路输入通道;通过通道选择开关,选中一路,输入到比较器进行转换;下面的地址锁存和译码模块;就是你想选中哪个通道,就把通道号放在ADDA-ADDC这三个引脚上,然后给一个锁存信号,则上面通道选择开关里对应的通路开关就可以自动拨好了;这个ADC只有8个输入通道,而我们STM32内部的ADC是有18个输入通道的;所以对应上面输入通道,STM32内部是有18个输入的;比较器可以判断两个输入信号电压的大小关系,输出一个高低电平指示谁大谁小,它的两个输入端,一个是待测电压,另一个是DAC的电压输出端,DAC是数模转换器,给它一个数据,它就可以输出数据对应的电压;现在在比较器两端,一端有了一个外部通道输入的位置编码的电压,另一端有了一个DAC输出的一直编码的电压,他俩同时输入到电压比较器,进行大小判断;如果DAC输出的电压比较大,我就调小DAC数据,如果DAC输出的电压比较小,我就增大DAC数据,直到他们相等;就得到了外部位置编码电压的具体数值,这样DAC输入的数据就是外部电压的编码数据了 ;这就是DAC的实现原理;上面提到的比较方法,使用的是二分法的比较方法; 3 ADC框图

在这里插入图片描述 在这里插入图片描述

模拟多路开关,可以指定我们想要选择的通道;右边是多路开关的输出,进入到模数转换器;这里的模数转换器就是执行逐次比较的过程;转换结果会直接放在数据寄存器里;通过程序读取寄存器就能直到ADC转换的结果了;

在这里插入图片描述

4 ADC基本结构

在这里插入图片描述

左边是输入通道,16个GPIO口,外加两个内部的通道;然后进入AD转换器,AD转换器里有两个组,一个是规则组,一个是注入组,规则组最多可以选中16个通道,注入组最多可以选择4个通道;转换的结果可以存放在AD数据寄存器里,其中规则组只有1个数据寄存器,注入组有4个然后下面有触发机制,提供了开始转换这个START信号,触发控制可以选择软件触发和硬件触发,硬件触发主要是来自于定时器,当然也可以选择外部中断的引脚;右边是来自于RCC的ADC时钟CLOCK;ADC逐次比较的过程就是由这个时钟推动的;模拟看门狗用于检测转换结果的范围, 如果超出设定的阈值,就通过中断输出控制,向NVIC申请中断;另外,规则组和注入组转换完成后会有个EOC信号,它会置一个标志位,当然也可以通向NVIC;最后右下角还有个开关控制,在库函数中,就是ADC_Cmd函数,用于给ADC上电的; 5 输入通道

在这里插入图片描述

上图是ADC通道和引脚复用的关系;

6 转换模式

在这里插入图片描述

单词转换,非扫描模式,单次转换后就会停止;然后开启下一次转换;

在这里插入图片描述

连续转换,非扫描模式:它与单次转换,非扫描模式的不同是,它在一次转换结束后不会停止,而是立刻开始下一轮的转换,然后一直持续下去;这样只需要最开始触发一次,之后就可以一直转换了;这个模式的好处是开启转换后不需要等待一段时间;

在这里插入图片描述

单次转换,扫描模式:也是单次转换,所以每触发一次,转换结束后就会停下来,下次转换就得再触发才能开始;然后它是扫描模式,就会用到列表了,左边的每个位置是通道几可以任意指定,并且可以重复;初始化结构体里还会有个参数,就是通道数目,因为16个位置可以不用完,只用前几个,所以需要指定通道数; 在这里插入图片描述连续转换,扫描模式 7 触发控制

在这里插入图片描述

8 数据对齐

在这里插入图片描述

一般我们使用右对齐 9 转换时间

在这里插入图片描述

10 校准

在这里插入图片描述

11 硬件电路

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有