stm32入门-----ADC模数转换器(理论篇——上)

目录

前言        

一、ADC模数转换器

 1.简介

2.ADC的结构

 3.输入通道

 4.转换模式

5.触发控制

6.数据对齐

7.转换时间

8.校准


前言        

        本期就开始学习ADC模数转换器,这个大家在学习51单片机的时候应该就接触过了,实际上就是把模拟电压转换为内存上的数字变量实现模拟数据到数字数据的转换,这个还是很长用到的,所以本期就从ADC模数转换器的理论部分开始,下一期再进行相关的项目实操。(视频:[7-1] ADC模数转换器_哔哩哔哩_bilibili)

一、ADC模数转换器

 1.简介

  • ADCAnalog-Digital Converter)模拟-数字转换器
  • ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
  • 12位逐次逼近型ADC1us转换时间
  • 输入电压范围:0~3.3V,转换结果范围:0~4095
  • 8个输入通道,可测量16个外部和2个内部信号源
  • 规则组和注入组两个转换单元
  • 模拟看门狗自动监测输入电压范围

  • STM32F103C8T6 ADC资源:ADC1ADC210个外部输入通道

        stm32中是自带有模数转换器的外设的,在早期单片机还刚刚起步的时候,很多单片机是没有带ADC模数转换器的功能,基本上都是需要去外接一个ADC的芯片,现在我们学习的stm32是自带有ADC功能而且还是12位的有16个通道。对于ADC的转换方式是这样子的,首先把当前输入的电压数字信号进行模拟信号的划分,也就是电压数字信号比如为0~3.3V,那么根据当前的转换位12位对应的十进制也就是0~4095 ,所以0~3.3V的电压划分为0~4095份。

         下图展示的是逐次逼近型ADC,这个是8个输入通道的,在51单片机的时候我们就了解过下面这个ADC,通道选择开关是根据三位地址锁存执行的二进制数从IN0~IN7中选择一个开关,然后进入到比较器,与DAC进行比较,DAC是跟ADC反过来的,把数字信号(输入的电压)转换为模拟信号,DAC的输入电压部分为 VERF+和VREF- 在单片机内部基本上这二者对应的是接VCC和GND的,在这二者会在SAR进行二分法比较,也就是对应的找到此时电压对应的模拟信号量进行确定转换。

2.ADC的结构

 从下面输入时钟图可以看出,虽然ADC最大输入时钟位14MHz,但是随机数预分配器只有2,4,6,8这几个选择,而内部时钟是72MHz,所以实际上分频的最大值只有12MHz。

         下图是stm32中ADC的基本结构图,也是最主要的部分,我们可以看到数字信号的输入口GPIO有16个,然后还有两个可选的额外温度和内部电压输入通道,之后就进入到了AD转换器那里,这里可以去选择两者方式分别是规则组和注入组,这两者转换方式都有多种输入通道,规则组是有16个通道可以选择,但是进行转换的存放结果只能是其中的一个,因为其转换后的数据寄存器只有一个16位的也就只能存放一个,但是如果有多个要进行转换的话前面的会被覆盖掉,这里如果不想前面的数据被覆盖就需要用到一个DMA搬运到其他地方保存起来,关于DMA后继我们会学到;注入组是一次性可以选择4个输入通道,然后4个通道都可以进行转换,转换后的结果都能放入到注入组的AD数据寄存器刚刚好也是4个16位寄存器,这里就不会涉及到覆盖的问题了,相较于规则组更加高级一些。下面我们主要以规则组作为示例进行讲解。

 3.输入通道

下面展示的是ADC是输入通道,其中ADC1和ADC2的前16个通道是一样的,但是ADC1是有另外两个温度传感器和内部电压输入的通道,而其他的就没有了,我们用到的stm32是没有ADC3的这里就不需要搭理太多。

通道

ADC1

ADC2

ADC3

通道0

PA0

PA0

PA0

通道1

PA1

PA1

PA1

通道2

PA2

PA2

PA2

通道3

PA3

PA3

PA3

通道4

PA4

PA4

PF6

通道5

PA5

PA5

PF7

通道6

PA6

PA6

PF8

通道7

PA7

PA7

PF9

通道8

PB0

PB0

PF10

通道9

PB1

PB1

通道10

PC0

PC0

PC0

通道11

PC1

PC1

PC1

通道12

PC2

PC2

PC2

通道13

PC3

PC3

PC3

通道14

PC4

PC4

通道15

PC5

PC5

通道16

温度传感器

通道17

内部参考电压

 4.转换模式

ADC的转换模式是根据转换次数和扫描模式来确定的,所以有4种转换模式。

(1)单次转换,非扫描模式

这种模式是最简单的,也就是把药转换的通道放到序列1里面,触发ADC后就开始转换,转换后的结果放到数据寄存器,同时EOC置为1表示转换结束,当读取到EOC为1时就可以去数据寄存器拿转换后的结果了。当想再次进行转换的时候就只能重新触发一次,重新开始转换,如果想换通道的话,这里序列1在转换之前就要去设置好通道然后再去触发转换操作。

(2)连续转换,非扫描模式

这个对比与上面那个不同的是为连续转换,相同的是都是非扫描模式,因此非扫描模式对应的序列都是只有一个的。不同的是为连续转换,当开始触发的时候这个转换就会自动进行下去,不需要我们去重新触发转换,这就是其最大的好处,当我们想要数据的时候直接去数据存储器读取就行了。

(3)单次转换,扫描模式

这个模式是单次转换,也就跟第一个一样的,不同的是扫描模式,这就可以实现存放多个通道(最多不超过16个),这些通道是可以重复的,而且这里还需要去说明通道数目,这样转换的时候就会去看前面指定数目的通道,转换后的结果都会放到数据存储器,但是数据存储器是有限的,这里就需要用DMA及时取走数据,免得被下一个给覆盖了。

(4)连续转换,扫描模式

这个模式也就是在第三个模式变了一点,也就是跟第二个一样,在触发之后会自动触发执行下一个转换,不需要去手动执行触发操作。

5.触发控制

6.数据对齐

 因为我们这里ADC转换是12位的,那出来的数据也是同样12位的,但是数据寄存器是16位的,也就是说会多出来两位,那下面有两者处理方式。

  •  数据右对齐

 高四位补零

  • 数据左对齐

 低四位补零 

这里我们一般都是用数据右对齐的方式,其数据是0~4095 ,而左对齐的方式读出来的数据会比较大,毕竟是在右对齐的基础上左移4位也就是在原来的数据乘上了16,分辨率没有右对齐的那么高

7.转换时间

  • AD转换的步骤:采样,保持,量化,编码
  • STM32 ADC的总转换时间为

                TcoNv=采样时间 +12.5个ADC周期

  • 例如:当ADCCLK=14MHz,采样时间为1.5个ADC周期

                TcoNv=1.5+12.5=14个ADC周期=1us

8.校准

  • ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差
  • 建议在每次上电后执行一次校准
  • 启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期

以上就是本期的全部内容了,我们下次见!

 今日壁纸:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5改进 | 卷积模块 | 即插即用的递归门控卷积gnConv

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

认识到自己的无知,需要一定的智慧

知识本是补药,却被变成毒药——“新无知”的三种表现 今天,一个人如果把评书、演义、宫廷剧当作真实历史,把当年从教科书上学来的过时理论当做“观世界”的金科玉律,并以此嘲笑别人“无知”的,属于典型的“新古人”—…

线程的同步和优先级

文章目录 前言一、优先级和同步各是什么?二、使用方法 1.线程的优先级2.线程的同步总结 前言 线程不仅可以实现代码的单线程运行和并发运行,在线程安全的情况下,还可以实现共同处理相同的系统资源。该篇文章还介绍了开发者如何设置线程运行的…

【数据结构】单链表带头双向循环链表的实现

一、链表的概念及结构 1.链表的概念 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 2.链表的结构 一般讲的链表包括数据域和指针域: 二、链表的种类 实际中链表的结构…

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架同时支持云、边…

fatal: refusing to merge unrelated histories

出现本地仓库和远程仓库的代码合并不兼容问题,解决方法: 添加--allow-unrelated-histories,让git允许提交不关联的历史代码。 成功提交:

gitee的fork

通过fork操作,可以复制小组队长的库。通过复制出一模一样的库,先在自己的库修改,最后提交给队长,队长审核通过就可以把你做的那一份也添加入库 在这fork复制一份到你自己的仓库,一般和这个项目同名 现在你有了自己的库…

git 学习总结

文章目录 一、 git 基础操作1、工作区2、暂存区3、本地仓库4、远程仓库 二、git 的本质三、分支git 命令总结 作者: baron 一、 git 基础操作 如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库. 1、工作区 存放项目代码的地方,他有两种状态 Unm…

Vue3时间选择器datetimerange在数据库存开始时间和结束时间

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

《GPT-4o mini:开启开发与创新的新纪元》

在科技发展的快速进程中,OpenAI 推出的 GPT-4o mini 模型如同一阵春风,给开发者们带来了新的希望和机遇。它以其卓越的性能和极具吸引力的价格,成为了行业内热议的焦点。 当我首次听闻 GPT-4o mini 的消息时,内心充满了好奇与期待…

详解Mysql InnoDB引擎 04

文章目录 1. InnoDB 简介2. 逻辑存储结构2.1 表空间 idb文件2.2 段2.3 区 1M2.4 页 16KB2.5 行 3. 架构3.1 内存结构3.1.1 Buffer Pool 缓冲池3.1.2 Change Buffer 更改缓冲区3.1.3 Adaptive Hash Index3.1.4 Log Buffer 3.2 磁盘结构 4. 后台线程5. 事务原理5.1 redo log 重做…

运行python项目出现ModuleNotFoundError: No module named ‘sklearn‘问题

问题1:ModuleNotFoundError: No module named sklearn 1.WindowsR键,输入cmd,进入命令行窗口 2.安装sklearn,使用清华镜像安装: python -m pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple …

算法学习day22

一、函数的独占时间 给你一个进程数量,和运行日志。运行日志log的格式为:进程id:(start/end):运行时间 其中一个进程运行时可以被另一个优先级较高的进程抢占cpu。求每个进程独占cpu的时间。 输入:n 2, logs ["0:start:0","1:start:…

Spring Boot - 优雅实现支持通配符和IP段的IP访问黑白名单机制

文章目录 CodeIpAccessInterceptoraddInterceptor工具类配置文件 application.yml单元测试 Code 废话不多说,直接上码 IpAccessInterceptor package cn.cloud.bus.module.servicebus.framework.ipconfig;import cn.cloud.bus.module.servicebus.util.IpFilterUti…

深入理解计算机系统 CSAPP 家庭作业11.10

A: //home.html <form action"/cgi-bin/adder" method"GET"><ul><li><label for"n1">n1:</label><input type"text" id"n1" name"n1" /> //name的值决定页面提交后&#xf…

栈知识梳理和函数实现

参考此文章数据结构——栈&#xff0c;此文章写的更详细&#xff0c;由于我们都是学自于比特课程&#xff0c;这里做个自我备份&#xff0c;方便后续查阅、修改和补充。 栈知识梳理和函数实现 前言1.栈是什么&#xff1f;2.栈的接口实现2.1初始化栈2.2入栈2.3 出栈2.4 获取栈顶…

C语言图书信息管理系统

题目&#xff1a;图书信息管理系统 内容及主要功能描述&#xff1a; 该系统用于管理图书信息&#xff0c;包括图书的增加、删除、查找、修改、浏览、按出版社统计图书数量等功能。具体功能包括&#xff1a; 增加图书&#xff1a;输入图书信息并添加到系统中。删除图书&#x…

【漏洞复现】phpStudy 小皮 Windows面板 存在RCE漏洞

靶场资料后台自行领取【靶场】 image-20240726092307252 PhpStudy小皮面板曝RCE漏洞&#xff0c;本质是存储型XSS引发。攻击者通过登录用户名输入XSS代码&#xff0c;结合后台计划任务功能&#xff0c;实现远程代码执行&#xff0c;严重威胁服务器安全。建议立即更新至安全版…

JAVA SE 类和对象

类和对象 类定义和使用类的定义格式 类的实例化什么是实例化 this 引用this引用的特性 对象的构造及初始化如何初始化对象构造方法概念特性 在这里插入图片描述 **注意**&#xff1a; 封装封装的概念封装扩展之包导入包中的类自定义包包的访问权限控制举例 static成员static修饰…