当前位置: 首页 > news >正文

初学stm32 --- ADC模拟/数字转换器工作原理

目录

 常见的ADC类型

并联比较型工作示意图

逐次逼近型工作示意图

ADC的特性参数

STM32各系列ADC的主要特性

ADC框图简介

参考电压/模拟部分电压

输入通道( F1为例)

转换序列(F1为例)

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

规则序列和注入序列(F1为例)

触发源(F1)

外部触发转换

转换时间(F1)

数据寄存器(F1)

中断

单次转换模式和连续转换模式

扫描模式

不同模式组合的作用

ADC,全称:Analog-to-Digital Converter,指模拟/数字转换器

 常见的ADC类型

并联比较型工作示意图

 

优点:转换速度快

缺点:成本高、功耗高、分辨率低

逐次逼近型工作示意图

 逐次逼近就是,不断修改数码寄存器的值,然后通过D/A转换器转换为模拟电压,多次比较,然后得到逼近真实模拟电压输入的电压值

优点:结构简单、低功耗

缺点:转换速度较慢

特点:

分辨率和采样速度相互矛盾,

分辨率越高,采样速率越低

ADC的特性参数

分辨率:表示ADC能辨别的最小模拟量,用二进制位数表示,比如:8101216位等(刻度划分

转换时间:表示完成一次A/D转换所需要的时间,转换时间越短,采样率就可以越高

精度:最小刻度基础上叠加各种误差的参数,精度受ADC性能、温度和气压等影响(物理量的精准程度

量化误差:用数字量近似表示模拟量,采用四舍五入原则,此过程产生的误差为量化误差

STM32各系列ADC的主要特性

采样时间是指 ADC 进行采样的时间段。在这个时间段内,ADC 会将输入的模拟信号充电到其内部的采样保持电容(Sample-and-Hold Capacitor)上,以稳定该信号的电压。这个过程是为了确保输入信号的电压在转换过程中能够准确地反映。

转换时间是指 ADC 完成一个从模拟信号到数字信号的转换所需的时间。它不仅包括采样时间,还包括将采样的信号进行数字化处理的时间。转换时间由 ADC 的分辨率(例如 12 位、10 位)以及 ADC 时钟的频率等因素决定。

ADC框图简介

参考电压/模拟部分电压

输入通道

转换序列:注入通道、规则通道

触发源

转换时间

数据寄存器

中断

参考电压/模拟部分电压

 ADC供电电源:VSSA VDDA2.4VVDDA3.6V

ADC输入电压范围:VREFVINVREF+(即0VVIN3.3V

输入通道 F1为例)

 有十八个通道,通道0到通道15是外部通道,通道16和通道17是内部通道;

转换序列(F1为例)

A/D转换被组织为两组:规则组(常规转换组)注入组(注入转换组)

规则组最多可以有16个转换,注入组最多有4个转换

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

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

规则序列和注入序列(F1为例)

注入序列的转换顺序是从JSQx[ 4 : 0 ](x=4-JL[1:0])开始

触发源(F1

触发转换的方法有两种:

1ADON位触发转换(仅限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 = 0001.5个ADC时钟周期                  SMP = 001:7.5ADC时钟周期

SMP = 01013.5个ADC时钟周期                SMP = 011:28.5ADC时钟周期

SMP = 10041.5个ADC时钟周期                SMP = 101:55.5ADC时钟周期

SMP = 11071.5个ADC时钟周期                SMP = 111:239.5ADC时钟周期

举个例子: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 总结备注 两个链表的第一个公共结点 问题描述 给定两个无环的单向链表,找到它们的第一个公共节点。如果没有公共节点&#xff0c…...

细说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…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【2025年】解决Burpsuite抓不到https包的问题

环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...