初学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…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
