STM32 ADC介绍(硬件原理篇)
目录
背景
AD转换器
采样与保持
量化
编码
AD转换器转换原理
DA转换原理
AD转换原理
背景
在数字系统的广泛应用中,用数字系统处理模拟量的情况十分普遍,因此引入了模拟信号和数字信号的接口问题。为了解决这一问题,首先利用模数转换电路把模拟信号转成数字信号。(数字信号经过处理之后,也可以通过数模转换电路将模拟信号转换回模拟信号)。单片机开发当中,ADC是经常要到的外设。通过本篇文章对ADC硬件部分进行原理说明。本篇文章需要涉及到基尔霍夫电压定理、理想运放的虚短虚断特性、以及采样量化编码知识,所以需要电路、模拟电路、数字电路的基础知识。另外,DA转换方法有多种、AD转换的方法也有多种。本篇中就以最常用的方法(T型电阻网络DA转换器和逐次逼近AD转换器)来对DA转换和AD转换原理进行说明。嵌入式软件工程师能理解更好,但是不一定要掌握,只要懂得和硬件工程师合作懂得配置相关寄存器或者调用相关固件库函数即可。不要被吓倒!

AD转换器
AD转换器中一般要经过采样、保持、量化、编码这四个步骤来完成从模拟量到数字量的转换。
采样与保持

截图部分就是经典的采样保持电路。Ui(t)为输入的模拟信号。其中场效应管做成采样开关。它通过采样频率f(sample)的采样脉冲来完成控制开关的通断。电容C为保持功能,当采样开关导通的时候,电容迅速通电,使得电容的电压=输入的模拟电压!;当采样开关断开的时候,由于电容的漏电很小,所以电容电压基本保持不变!
因此经过采样保持电路之后,输入的模拟信号变成了一系列时间间隔内的阶梯信号。
量化
将采样输出的电压用某个最小单位的整数倍来表示的过程。这个最小数量单位称为量化单位(经常用🔺表示)。
编码
将量化的结果用代码来表示出来的过程称为编码(最小量化单位的整数倍->二进制数)。
AD转换器转换原理
本篇文章只是对原理进行一个说明。不同的芯片可以采用不同的技术。不代表stm32就是采用该技术。这篇文章只是个人学习过模电和数电的知识。在ADC原理说明的时候,将这些知识串联起来,形成一个知识的闭环。
因为AD转换器转换原理DA转换器,因此先对DA转换的原理先进行说明!
DA转换原理
。

本篇文章以T型电阻网络型进行说明

当dn-1闭合的时候,也就是说最左边的电阻接到参考电压,其他的模拟开关接地。
看截图中的电路,从左往右看,两个2R并联再和R串联 等价于一个2R电阻。所以最终的等效电路是


理想运放的两个特性(虚短和虚断)
虚短:反向输入端和同向输入端电位相同
虚断:运放的反向输入端和同相输入端的电流为0.
1)根据虚短特性可以知道,反相输入端的电压和同相输入端的电压相等,都为0.
2)根据虚断原理可以知道流过RF的电流(截图中的红色箭头)。
3)根据基尔霍夫电压定理可以知道Uo的电压就等于Rf上的电压大小相等,方向相反!
当d0为1(连接参考电压时),其他位模拟开关全部接地情况。

该等效电路也很好理解,通过从右往左看,就可以知道,和dn-1接参考电压的类似。

再根据电路知识中的线性电路的叠加原理可知

显然看截图中最后的式子就可以看出数-模的转换了!
DA转换器的最小输出电压与最大输出电压的比值称为分辨率,显然DA转换器的位数越多,分辨出的最小电压能力就越强。
前面的知识讲完了,我们现在就可以介绍AD的转换原理了。
AD转换原理

1)转换开始前,将逐次逼近寄存器清零。
2)开始转换时将逐次逼近寄存器最高位置为1,其他位全0.此时DA转换器会输出电压和输入的模拟电压进行比较
A.DA转换器的输出电压U0 < 输入的模拟电压U1.说明DA转换的电压太大,要减小,此时Uc=1.
通过控制逻辑将最高位清零,次高位置为1,继续比较。
B.DA转换器的输出电压U0 > 输入的模拟电压U1.说明DA转换的电压太小,要增大,此时Uc=0.
通过控制逻辑将最高位保持为1,次高位置为1,继续比较。
就这样子逐位进行直到最低位,转换过程结束。此时寄存器的数值就是转换的结果。
相关文章:
STM32 ADC介绍(硬件原理篇)
目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 背景 在数字系统的广泛应用中,用数字系统处理模拟量的情况十分普遍,因此引入了模拟信号和数字信号的接口问题。为了解决这一问题,首先利用模数转换…...
snort3.0 获取注册规则(19000多条)
面对生活中的手机、电脑网络监控,很多人都是束手无策的,只不过雁过留声风过留痕,黑客路过就会留下入侵痕迹,比如手机没玩的时候,流量异常的增多,并且一直和某一个IP地址通信很频繁,可能是黑客正…...
【GitHub】装修个人主页
持续更新各种好文,长期更新技能手册,建议关注收藏点赞! 创建仓库,仓库名自己用户名 权限:public 勾选add a README file修改README.md 这里都是运用markdown语法,以及html标签编写的,可以自行修…...
名词解释:npm,cnpm,yarn,vite,vue,electron
1. npm (Node Package Manager) 读音: “N-P-M” 或者直接读作 “npm”。 npm 是 Node.js 的官方包管理器,用于安装、发布和管理 JavaScript 软件包。它允许开发者轻松地共享代码,并且可以通过命令行工具来管理依赖关系。通过 npm init 命令可以交互式…...
XMOS的多项音频技术创新将大模型与边缘AI应用密切联系形成生态化合
2025蛇年春节,DeepSeek大语言模型以超低的训练成本震撼全球,预示着大模型技术将以更快的脚步全面走进我们的工作和生活,同时也促进了能够连通各种大模型和应用场景的智能终端将加速演进。语音作为人类与机器最常用的互动沟通媒体,…...
九.Spring Boot使用 ShardingSphere + MyBatis + Druid 进行分库分表
文章目录 前言一、引入依赖二、创建一个light-db_1备用数据库三、配置文件 application-dev.yml四、创建shardingsphere-config.yml完整项目结构 五、测试总结 前言 在现代化微服务架构中,随着数据量的不断增长,单一数据库已难以满足高可用性、扩展性和…...
大数据治理:构建数据驱动的未来基石
一、大数据治理的定义与核心价值 在大数据战略从顶层设计到底层实现的落地过程中,数据治理是基础,技术是承载,分析是手段,应用是目的。与传统数据管理不同,数据治理更侧重于制定行业级制度规范,通过建立数…...
常见的几种设计模式(详细)——应用场景和实现方式
文章目录 🎯单例模式应用实现 🏭工厂模式应用实现 ❓策略模式应用实现 🧑⚖️代理模式应用实现 🔍观察者模式(发布订阅模式)应用实现 🧰装饰器模式应用实现 📰模版方法模式应用实现…...
SonarQube
不同版本的sonarqube需要不同版本的数据库、jdk环境。这个看文档然后确定要求 (有时候文档里标注的系统要求是不行的。比如要求内存2G,但是实际上是不够的,要注意) 我安装的: 官方文档 Prerequisites and overview…...
Nginx 之Rewrite 使用详解
文章目录 1. 概述2. Rewrite 指令 2.1 指令语法2.2 Flag 标记说明 3. Rewrite 与 Location 3.1 Location 分类3.2 Rewrite 和 Location 比较 4. Rewrite 实际场景 4.1 基于域名的跳转4.2 基于客户端 IP 访问跳转4.3 基于参数匹配的跳转4.4 基于目录下所有 PHP 文件跳转4.5 基于…...
注册Gmail如何跳过手机验证环节?
很多小伙伴在注册Gmail的时候都会遇到一个难题:手机号码验证,有可能包括了“手机号无法验证” “国内手机号验证失败” “收不到验证码”等等问题,但 根据真实案例,还有部分人则是“幸运地”没有手机号验证环节,那么今…...
WordPress自助建站全攻略
一、基础概念与核心优势 WordPress自助建站是一种无需编程即可搭建网站的平台,基于开源CMS系统,支持高度定制化。其核心优势主要体现在: 易用性:拖拽式编辑器和直观的后台操作,适合零基础用户快速上手。低成本&#x…...
TreeSet(单列集合)
TreeSet 是 Java 集合框架中的一种实现了 Set 接口的类,它通过一个红黑树(Red-Black Tree)来存储元素。由于使用了树结构,TreeSet 保证了元素的有序性,并且不允许重复元素。 1. TreeSet 的基本特性 有序性࿱…...
Elasticsearch:同义词在 RAG 中重要吗?
作者:来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索,以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为,由于…...
Docker安装分布式vLLM
Docker安装分布式vLLM 1 介绍 vLLM是一个快速且易于使用的LLM推理和服务库,适合用于生产环境。单主机部署会遇到显存不足的问题,因此需要分布式部署。 分布式安装方法 https://docs.vllm.ai/en/latest/serving/distributed_serving.html2 安装方法 …...
可视化实操记录(自用)
流程 读取数据 original_data pd.read_csv(“Penguins.csv”) original_data.head() 评估和清理数据 cleaned_data original_data.copy() #备份 结构 original_data.sample(5) 数据符合“每个变量为一列,每个观察值为一行,每种类型的观察单位为一…...
二叉树的遍历方式和子问题思路
目录 二叉树的遍历: 前序遍历: 中序遍历: 后序遍历: 二叉树的基本操作: 求树的结点个数(递归遍历思路): 求树的结点个数(子问题思路): 求树的…...
运用Deek Seeker协助数据分析
我的数据源有两张表,一个是每日销售表(字段有日期、产品名称、实际销量),一个是每月目标表(字段有年度月份、产品名称、目标销量);我的需求是,按月、按年来统计每个产品的目标完成情况请问用PowerBl进行分析,应该如何建立数据模型…...
服务器之连接简介(Detailed Explanation of Server Connection)
一台服务器最大能支持多少连接?一台客户端机器最多能发起多少条连接?? 我们知道TCP连接,从根本上看其实就是client和server端在内存中维护的一组【socket内核对象】(这里也对应着TCP四元组:源IP、源端口、…...
低空经济:开启未来空中生活的全新蓝海
引言 随着科技的进步,我们不再仅仅依赖地面交通和传统物流。你是否曾幻想过,未来的某一天,快递、外卖可以像魔法一样直接从空中送到你手中?或者,你能乘坐小型飞行器,快速穿梭于城市之间,告别拥堵…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
