【STM32学习】模数转换器——ADC

news2024/11/15 23:35:32

【STM32学习】模数转换器——ADC

  • 零、参考
  • 一、ADC转换耗时
  • 二、转换模式
  • 三、对某些寄存器的理解
    • 1、ADC_CR2
    • 2、ADC_SQRX
  • 四、库函数注意事项

零、参考

STM32固件库(标准外设库)入门学习 第七章 ADC数模转换(一)
刘凯:STM32F103(一):ADC

通过上述的两个链接以及stm32的参考手册,应该可以把ADC理解的差不多了,接下来说一下自己对某些内容的理解。

在这里插入图片描述

一、ADC转换耗时

STM32 ADC转换速度与精度

对于AD转换所需要的时间,我们经常看到:Tconv = Sampling time + 12.5 cycles
总时间=采集时间+转换时间
采样时间是我们根据ADC_SMPR寄存器设置的,采样时间越长,精度越高
后面的12.5个ADC周期,表示转换时间,即由采集到的信息到转换出数据的时间。查询资料说是固定的。

二、转换模式

ADC有规则组和注入组,又有扫描、单次、连续、单多通道,很多很复杂,就做了如下表格,也进行了实验验证。

在这里插入图片描述

绿色表示可以使用该模式;
红色表示该模式无法正确转换出想要的结果;
蓝色表示使用该模式无意义;

规则组与注入组的区别,不在描述;简单的说,注入组就是比规则组优先级高的组,注入组一来,规则组必须停止,先让注入组转换,转换结束,规则组才能继续转换。所以,注入组是不支持连续转换的,如果它一直连续转换,岂不是规则组一直不能转换。但是如果使用了“自动注入模式”,注入组是支持使用连续转换的(在此模式里,必须禁止注入通道的外部触发。)

对单通道而言,不用使用扫描模式,所以非扫描模式即可;
单次转换:假如开启了ADC通道1,每次有外部事件,就会转换一次;
连续转换:假如开启了ADC通道1,只要来一次外部事件,就会一直转换。又因为规则通道就一个数据寄存器,所以需要DMA传输数据;

对多通道而言,必须使用扫描模式。在非扫描模式下,只会转换第一个通道;
单次转换:假如开启了ADC通道1、2、3,每次有外部事件,就按照通道的转换顺序转换一次(顺序是由ADC_SQRX控制的);当然也需要DMA传输。
连续转换:假如开启了ADC通道1、2、3,只要来一次外部事件,就会一直按照通道的转换顺序转换:1->2->3->1->2->3…。当然也需要DMA传输。

对于注入组来说,最多能使用四个ADC通道,并且每一个通道都有自己的数据存储寄存器,所以并不需要DMA传输。

规则组和注入组是可以同时使用的。例如通道1、2设置为规则组,通道3、4设置为注入组。

对于转换模式如果还不清楚的话,可以看这个:ADC扫描模式理解

三、对某些寄存器的理解

1、ADC_CR2

在这里插入图片描述

在stm32的参考手册中,该寄存器的第20位:EXTTRIG:用于是否开启外部触发事件。
我一开始理解,ADC如果用软件触发的话,就不用开启该位,因为软件触发不算是外部,只有中断、定时器事件才算是外部事件。我错了,并不是这样的。
根据最上边的结构图也能看到,想要触发规则通道必须开启EXTTRIG。
根据EXTSEL位也能看出,111为软件触发,剩余的为中断和定时器事件,所以它指的外部事件全部都包括了。根据下图也能得到证实:
在这里插入图片描述

2、ADC_SQRX

在这里插入图片描述

ADC_SQR1、2、3,是用来设置规则组通道个数和扫描时的转换顺序。
我想要让通道几第几个转换,那么我就把它写到第几个转换的位置。
例如,在库函数中,通道1设定为第一个转换的,通道2设定为第二个转换的。
你可以去底层的寄存器配置看看。在这里插入图片描述

四、库函数注意事项

在这里插入图片描述

我们常用的库函数中ADC的配置,红色处的两个框,是针对规则组设置的;绿色的是针对注入组设置的,它们两个是互不干扰的。

在这里插入图片描述

这个是针对ADC_CR2的位设置的,开始规则组(注入组)的转换,以及开启其可以启动规则组(注入组)转换的外部触发事件;

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

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

相关文章

flyway:数据库移植框架,再也不用担心历史版本表结构管理问题

0. 引言 在开发周期较长,或者需求变更频繁,涉及多版本发布的项目中,我们常常遇到这样的问题: 改了表结构,开发环境执行了,忘记保存,发测试、生产环境时又要重写一遍DDL多人开发,都…

ChatGPT如何应用在数据治理的具体场景中?

自从ChatGPT爆火以来,技术圈的爆炸新闻是一波接一波,让人目不暇接,突然有了一种“人间一日,AI一年的感觉”。上周就有几条重磅新闻,来跟大家分享一下: New Bing 对所有用户放开,注册即可用周三…

每个企业经营者都应该了解的几个网络安全趋势

每个企业主都应了解的一些网络安全趋势: 1. 对实时数据可见性的需求增加 根据 IBM 发布的调查数据,企业发现并遏制漏洞的平均时间为 277 天。这种漏洞得不到解决的时间越长,泄露的数据就越多。这反过来会对您的业务产生更大的影响。企业需要…

【无人机】基于灰狼优化算法的无人机路径规划问题研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

蓝桥杯0基础学习

目录 Split()分隔字符串 StringBuilder用法 反转字符串中的单词 LocalDate用法 LocalDate类具体方法 查询年月日 修改时间 判断日期先后,是否是闰年,月份年份长度 对时间进行加减操作 跑步锻炼 使用LoaclDate解法 没使用LocalDate解法 next()…

Linux学习_设备树理论

Linux学习_设备树总结三种写驱动的方法资源和驱动在同一个文件里资源用 platform_device 指定、驱动在 platform_driver 实现资源用设备树指定驱动在 platform_driver 实现设备树的语法实际使用时,include模板小改常用属性#address-cells、#size-cells、regcompatib…

DBSCAN聚类算法及Python实现

DBSCAN聚类算法 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,可以将数据点分成不同的簇,并且能够识别噪声点(不属于任何簇的点)。 DBSCAN聚类算法的基…

告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目(实际项目开发的浓缩精华版)

告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目一、前言二、如何选择版本2.1 SpringCloud 和 Spring Boot 版本选型2.1.1 Spring Cloud 版本与 Spring Boot 版本关系2.1.2 选择具体的合适版本2.2 第三方组件的版本选型三、…

SpringCloud之Eureka原理分析与实战(注册与发现)

目录 1、从本质理解服务治理思想 2、为什么选择Spring Cloud服务治理组件 3、Spring Cloud Eureka服务发现 3.1 Eureka的优势 3.2 Eureka架构组成 3.3 搭建Eureka Server 实战 3.3.1 添加依赖 3.3.2 开启服务注册 3.3.3 添加YML配置 3.3.4 访问服务 3.4 搭建Eureka …

【c语言】指针数组、数组指针

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

打造出ChatGPT的,是怎样一群人?

震惊世界的ChatGPT&#xff0c;要多少人才能开发出来&#xff1f;几百&#xff0c;还是几千&#xff1f; 答案是&#xff1a;87个人。 老实说&#xff0c;刚看到这个数字真是惊到我了&#xff0c;印象里&#xff0c;之前看媒体报道各大巨头人工智能人才储备时&#xff0c;动辄…

学编程应该选择什么操作系统?

今天来聊一个老生常谈的问题&#xff0c;学编程时到底选择什么操作系统&#xff1f;Mac、Windows&#xff0c;还是别的什么。。 作为一个每种操作系统都用过很多年的程序员&#xff0c;我会结合我自己的经历来给大家一些参考和建议。 接下来先分别聊聊每种操作系统的优点和不…

Linux服务器如何查看CPU使用率、内存占用情况

Linux服务器如何查看CPU使用率、内存占用情况 作为Linux运维工程师&#xff0c;系统维护过程以及日常工作中需要我们经常查看CPU使用率、内存使用率、带宽占用&#xff0c;从资源使用的程度分析系统整体的运行情况。 在 Linux 上查看资源使用情况有很多命令可以参考&#xff0c…

【SpringMVC】9—底层原理

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…

基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)

上次说到了log/log_list.html的doGetObjects()&#xff0c;其中有doFindPageObjects&#xff08;&#xff09;方法。 找到全部的日志对象&#xff0c;并且输出到div上。这里是后台的代码。 01.pojo对象&#xff0c;这里需要序列化保存。序列化的作用是保存对象到内存缓存中&am…

腾讯38K测试良心分享,熬夜整理10万字详细软件测试面试笔记

国内的互联网面试&#xff0c;恐怕是现存的、最接近科举考试的制度。 这是由于互联网IT行业的求职者太多了&#xff0c;如果考察的是清一溜的算法题和设计题&#xff0c;那么会要求面试官有极高的技术水平&#xff0c;还要花大量的时间成本和精力。 所以&#xff0c;八股文面…

普通人如何使用ChatGPT接单挣钱-第一弹

嘿&#xff0c;我是灵牧&#xff0c;今天这一期给大家带来的是普通人如何使用chatGPT挣钱的第一期 第一弹&#xff1a;通过GPT写一个Tkinter数独案例赚取&#xffe5;50 事情原委&#xff1a; 今天在接单群里看到一个Tkinter写数独的需求案例&#xff0c;想要加一个独立的弹…

Golang每日一练(leetDay0031)

目录 91. 解码方法 Decode Ways &#x1f31f;&#x1f31f; 92. 反转链表 II Reverse Linked List II &#x1f31f;&#x1f31f; 93. 复原 IP 地址 Restore IP Addresses &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练…

pdf转excel表格怎么做?这3种方法简单又方便

在日常工作和生活中&#xff0c;我们经常需要转换不同格式的文件&#xff0c;比如将PDF转换为Excel表格。虽然转换过程看似简单&#xff0c;但实际上要想转换好&#xff0c;选择一款专业的PDF转换器是非常必要的。今天&#xff0c;我将为大家介绍几款值得推荐的PDF转换器&#…

一文全解经典机器学习算法之线性回归(关键词:回归分析、最小二乘法、极大似然估计、梯度下降法、逻辑回归、对数几率、线性判别分析)

文章目录一&#xff1a;线性回归基本概念&#xff08;1&#xff09;回归分析&#xff08;2&#xff09;线性回归二&#xff1a;线性回归确定参数的方法&#xff08;1&#xff09;最小二乘法A&#xff1a;代数求法B&#xff1a;矩阵求法&#xff08;主要使用&#xff09;&#x…