初学stm32 --- ADC模拟/数字转换器工作原理
目录
常见的ADC类型
并联比较型工作示意图
逐次逼近型工作示意图
ADC的特性参数
STM32各系列ADC的主要特性
ADC框图简介
参考电压/模拟部分电压
输入通道( F1为例)
转换序列(F1为例)
规则组和注入组执行优先级对比
规则序列和注入序列(F1为例)
触发源(F1)
外部触发转换
转换时间(F1)
数据寄存器(F1)
中断
单次转换模式和连续转换模式
扫描模式
不同模式组合的作用
ADC,全称:Analog-to-Digital Converter,指模拟/数字转换器

常见的ADC类型

并联比较型工作示意图

优点:转换速度快
缺点:成本高、功耗高、分辨率低
逐次逼近型工作示意图

逐次逼近就是,不断修改数码寄存器的值,然后通过D/A转换器转换为模拟电压,多次比较,然后得到逼近真实模拟电压输入的电压值
优点:结构简单、低功耗
缺点:转换速度较慢
特点:
分辨率和采样速度相互矛盾,
分辨率越高,采样速率越低
ADC的特性参数
分辨率:表示ADC能辨别的最小模拟量,用二进制位数表示,比如:8、10、12、16位等(刻度划分)
转换时间:表示完成一次A/D转换所需要的时间,转换时间越短,采样率就可以越高
精度:最小刻度基础上叠加各种误差的参数,精度受ADC性能、温度和气压等影响(物理量的精准程度)
量化误差:用数字量近似表示模拟量,采用四舍五入原则,此过程产生的误差为量化误差
STM32各系列ADC的主要特性

采样时间是指 ADC 进行采样的时间段。在这个时间段内,ADC 会将输入的模拟信号充电到其内部的采样保持电容(Sample-and-Hold Capacitor)上,以稳定该信号的电压。这个过程是为了确保输入信号的电压在转换过程中能够准确地反映。
转换时间是指 ADC 完成一个从模拟信号到数字信号的转换所需的时间。它不仅包括采样时间,还包括将采样的信号进行数字化处理的时间。转换时间由 ADC 的分辨率(例如 12 位、10 位)以及 ADC 时钟的频率等因素决定。
ADC框图简介

①参考电压/模拟部分电压
②输入通道
③转换序列:注入通道、规则通道
④触发源
⑤转换时间
⑥数据寄存器
⑦中断
参考电压/模拟部分电压

ADC供电电源:VSSA、 VDDA (2.4V≤VDDA≤3.6V )
ADC输入电压范围:VREF–≤VIN≤VREF+(即0V≤VIN≤3.3V )
输入通道( F1为例)

有十八个通道,通道0到通道15是外部通道,通道16和通道17是内部通道;
转换序列(F1为例)
A/D转换被组织为两组:规则组(常规转换组)和注入组(注入转换组)
规则组最多可以有16个转换,注入组最多有4个转换

规则组和注入组执行优先级对比

当没有触发注入组的通道转换时,规则组按照从小到大的顺序转换,当触发了注入组的通道转换的时候,首先将当前规则组的当前通道的转换完成,然后先去执行注入组的通道转换,入组按照从小到大的顺序转换。执行完注入组的通道转换后, 再取执行剩余规则组的通道转换。
规则序列和注入序列(F1为例)


注入序列的转换顺序是从JSQx[ 4 : 0 ](x=4-JL[1:0])开始
触发源(F1)
触发转换的方法有两种:
(1)ADON位触发转换(仅限F1系列)
当ADC_CR2寄存器的ADON位为1时,再单独给ADON位写1,只能启动规则组转换
(2)外部事件触发转换
外部事件触发转换分为:规则组外部触发和注入组外部触发

外部触发转换
转换可以由外部事件触发(例如定时器捕获, EXTI线)。如果设置了EXTTRIG控制位,则外部事件就能够触发转换。 EXTSEL[2:0]和JEXTSEL2:0]控制位允许应用程序选择8个可能的事件中的某一个,可以触发规则和注入组的采样。
注意: 当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。
1. TIM8_TRGO事件只存在于大容量产品
2.对于规则通道,选中EXTI线路11或TIM8_TRGO作为外部触发事件,可以分别通过设置ADC1和ADC2的ADC1_ETRGREG_REMAP位和ADC2_ETRGREG_REMAP位实现。

1. TIM8_CC4事件只存在于大容量产品
2.对于注入通道,选中EXTI线路15和TIM8_CC4作为外部触发事件,可以分别通过设置ADC1和ADC2的ADC1_ETRGINJ_REMAP位和ADC2_ ETRGINJ_REMAP位实现。
转换时间(F1)
如何设置ADC时钟?

如何设置ADC转换时间?
ADC转换时间: TCONV = 采样时间 + 12.5个周期
采样时间可通过SMPx[2:0]位设置,x=0~17
SMP = 000:1.5个ADC时钟周期 SMP = 001:7.5个ADC时钟周期
SMP = 010:13.5个ADC时钟周期 SMP = 011:28.5个ADC时钟周期
SMP = 100:41.5个ADC时钟周期 SMP = 101:55.5个ADC时钟周期
SMP = 110:71.5个ADC时钟周期 SMP = 111:239.5个ADC时钟周期
举个例子:ADC时钟频率为12MHz时,ADC最短的转换时间是多少?
TCONV = 采样时间 + 12.5个周期 = 1.5个周期 + 12.5个周期 = 14个周期 =
(1/12000000)∗14 s = 1.17us
数据寄存器(F1)

16个通道对应一个数据寄存器,所以存在数据的覆盖。

由ADCx_CR2寄存器的ALIGN位设置数据对齐方式,可选择:右对齐或者左对齐
中断
F1/F4/F7系列ADC中断事件汇总表:

DMA请求(只适用于规则组)
规则组每个通道转换结束后,除了可以产生中断外,还可以产生DMA请求,我们利用DMA及时把转换好的数据传输到指定的内存里,防止数据被覆盖。
单次转换模式和连续转换模式


扫描模式


不同模式组合的作用


相关文章:
初学stm32 --- ADC模拟/数字转换器工作原理
目录 常见的ADC类型 并联比较型工作示意图 逐次逼近型工作示意图 ADC的特性参数 STM32各系列ADC的主要特性 ADC框图简介 参考电压/模拟部分电压 输入通道( F1为例) 转换序列(F1为例) 规则组和注入组执行优先级对比 规则…...
导航技术的分类
导航技术可以根据不同的分类标准进行划分,以下是从不同角度对导航技术的分类: 一、按导航信息获取原理分类 无线电导航:利用无线电波的传播特性来测定运动体的位置、速度等导航参数。常见的无线电导航系统包括罗兰-C、奥米加、台卡等。卫星…...
C++语言的函数实现
C语言中的函数实现详解 C是一种强大的编程语言,广泛应用于系统软件、游戏开发、实时物理模拟等多个领域。在C中,函数是组织和重用代码的重要工具。本文将深入探讨C中的函数实现,包括函数的定义、调用、重载、递归、作用域、内联函数和模板函…...
每日一题-两个链表的第一个公共结点
文章目录 两个链表的第一个公共结点问题描述示例说明示例 1示例 2 方法及实现方法描述代码实现 复杂度分析示例运行过程示例 1示例 2 总结备注 两个链表的第一个公共结点 问题描述 给定两个无环的单向链表,找到它们的第一个公共节点。如果没有公共节点,…...
细说STM32F407单片机以轮询方式读写外部SRAM的方法
目录 一、实例的功能 二、工程配置 1、KEYLED 2、时钟、DEBUG、USART6、NVIC、GPIO、CodeGenerator 3、FSMC (1) 模式设置 (2) Bank 1子区3参数设置 1) NOR/PSRAM control组,子区控制参数 2) NOR/PSRAM timi…...
【3】安装cyclictest和iperf
cyclictest 安装比较简单,我是直接使用命令行: apt-get install rt-tests 随后,运行 sudo cyclictest 但是这个程序会一直运行,直到你手动中断程序,而且每秒生成一行输出也很烦人,所以可以选择把结果…...
C语言将点分十进制的IP字符串转成4个整数
最近在做lldp的snmp返回值时需要做这样的转换处理:C语言将点分十进制的IP字符串转成4个整数。 这里用两种方式: sscanf格式化处理用 inet_aton函数将ip字符串转成32位的整形,然后再根据bit转成对应的4个整数。 man命令可以确认下sscanf和i…...
go语言学习 笔记 1(变量,语法,数据类型)
1,包管理 一个文件夹可以称为一个包 在一个包里面可以创建多个文件 包中可以创建包 同一个包内的同一级的包的名字要相同 如:包a中的包b.包b中的包得是同一个package,a中和包b同级的包名字也得是一个名字 必须要有一个main包,入口,就像是c必须有一个main函数 如果没有mai…...
无网络时自动切换备用网络环境
目录 背景目标为什么需要做自动网络切换网络切换手段 网络环境实现思路和代码部署脚本开机自动执行附录连接两个网络时的路由问题 背景 目标 学校实验室有两个网络环境,我电脑使用网线连接稳定但低速的网络A,使用WiFi连接高速但不稳定的网络B。因此&am…...
电脑32位和64位之区别(Difference between 32-Bit and 64 Bit Computers)
电脑32位和64位之区别 很多小伙伴还不知道电脑32位和64位是什么意思,今天小编就来普及一下。 32位和64位是指电脑处理器(CPU)和操作系统的架构,决定了电脑如何处理数据、存储信息、运行程序等。 32位和64位是指电脑系统中每个处…...
系统思考—结构影响行为
前段时间,我遇到了一位健康食品初创公司的创始人,产品质量毋庸置疑,但销量却始终打不开局面,资金链也日渐紧绷。他一脸困惑地问我:“我们已经尽力了,为什么结果还是不如人意?”经过深入交流&…...
【算法不挂科】算法期末考试【选择题专项练习】<多单元汇总>
前言 大家好吖,欢迎来到 YY 滴算法不挂科系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 下面是相关传送门 【算法不挂科】算法期末考试题库1(带解析)【选择题53道&填空题36道&算法填空题7道&a…...
2025.1.8(c++对c语言的扩充——堆区空间,引用,函数)
笔记 上一笔记接续(练习2的答案) 练习:要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数,并在主程序中完成测试 要求使用new和d…...
如何将Yum源修改为本地挂载的ISO镜像
要将yum源修改为本地挂载的ISO镜像,您可以按照以下步骤进行操作。假设您使用的是CentOS或类似的基于Red Hat的Linux发行版,且已经将ISO镜像文件挂载到系统中。 步骤一:挂载ISO镜像 创建一个挂载点: 首先,您需要创建一个目录来作为ISO镜像的挂载点。例如: sudo mkdir /mnt…...
salesforce如何在系统里保存密码
在 Salesforce 中,保存密码或类似敏感信息时,不应以明文形式存储,而应采用安全的加密和存储机制。以下是一些最佳实践和实现方法: 1. 使用 Salesforce 提供的加密机制 Salesforce 提供了一些内置的加密工具,可以用来加…...
函数提升+上下文+内存清理及释放
文章目录 函数提升上下文函数释放拓展-垃圾回收机制垃圾回收之触发应用 函数提升上下文 函数提升(Hoisting) 概念:在JavaScript中,函数声明会被提升到当前作用域的顶部。这意味着可以在函数声明之前调用函数。例如: sa…...
计算机网络之---计算机网络的性能评估
计算机网络的性能评估是指通过各种标准和指标来衡量网络的工作效率和质量,进而对网络进行优化和改进的过程。评估的目标是确保网络能够满足预期的服务质量(QoS)和性能需求。常见的计算机网络性能评估指标包括带宽、延迟、吞吐量、丢包率等。 …...
Unity学习之UGUI进阶
一、事件监听接口 1、作用 用于实现类型长按、双击、拖拽等基础控件无法实现的功能 所有控件都能够添加更多的事件监听来处理对应的逻辑 2、事件监听接口类型 (1)常用事件接口 (2)不常用事件接口 3、使用事件监听接口 &#…...
深度学习领域创新黑马!频域特征融合新突破
最近,FreqFusion引起了广泛关注,这是一种创新的频率感知特征融合方法,可以提升数据处理的准确性和效率,尤其在语义分割、目标检测、实例分割和全景分割等任务中表现卓越。 通过结合频域分析与特征融合技术,FreqFusion…...
路由器的转发表
【4-24】 已知路由器R₁ 的转发表如表T-4-24 所示。 表T-4-24 习题4-24中路由器R₁的转发表 前缀匹配 下一跳地址 路由器接口 140.5.12.64/26 180.15.2.5 m2 130.5.8/24 190.16.6.2 ml 110.71/16 ----- m0 180.15/16 ----- m2 190.16/16 ----- ml 默认 11…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
