STM32 ADC介绍(硬件原理篇)
目录
背景
AD转换器
采样与保持
量化
编码
AD转换器转换原理
DA转换原理
AD转换原理
1.逐次逼近型AD转换器
2.并联比较型AD转换器
编码器
同步D触发器和边沿D触发器
基本RS触发器
同步RS触发器
同步D触发器
边沿型D触发器(维持-阻塞D触发器)
背景
在数字系统的广泛应用中,用数字系统处理模拟量的情况十分普遍,因此引入了模拟信号和数字信号的接口问题。为了解决这一问题,首先利用模数转换电路把模拟信号转成数字信号。(数字信号经过处理之后,也可以通过数模转换电路将模拟信号转换回模拟信号)。单片机开发当中,ADC是经常要到的外设。通过本篇文章对ADC硬件部分进行原理说明。本篇文章需要涉及到基尔霍夫电压定理、理想运放的虚短虚断特性、以及采样量化编码、触发器知识,所以需要电路、模拟电路、数字电路的基础知识。另外,DA转换方法有多种、AD转换的方法也有多种。本篇中就以最常用的方法(T型电阻网络DA转换器、逐次逼近AD转换器并联比较型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.逐次逼近型AD转换器
1)转换开始前,将逐次逼近寄存器清零。
2)开始转换时将逐次逼近寄存器最高位置为1,其他位全0.此时DA转换器会输出电压和输入的模拟电压进行比较
A.DA转换器的输出电压U0 < 输入的模拟电压U1.说明DA转换的电压太大,要减小,此时Uc=1.
通过控制逻辑将最高位清零,次高位置为1,继续比较。
B.DA转换器的输出电压U0 > 输入的模拟电压U1.说明DA转换的电压太小,要增大,此时Uc=0.
通过控制逻辑将最高位保持为1,次高位置为1,继续比较。
就这样子逐位进行直到最低位,转换过程结束。此时寄存器的数值就是转换的结果。
2.并联比较型AD转换器
1)显然通过并联比较型工作示意图,根据电阻的伏安特性可以知道各个电阻的电压。
2)各个电阻的电压与模拟输入电压在运放电路中进行比较
A.当模拟输入电压>电阻侧电压,输出1
B.当模拟输入电压<电阻侧电压,输出0
3)和运放的比较结果有7中情况,可以用编码器将7中状态信息转化为计算机系统可以处理的二进制信息
编码器
因为数字系统只能处理二值运算,因此需要将数字电路的各种信息用二值代码表示出来。这个过程就是编码。实现编码的电路就称为编码器。编码器是一个多输入和多输出的组合逻辑电路。m表示输入信息的状态数,n表示代码的位数,一般情况下他们之间存在m<= 2的n次方关系。
寄存器+代码转换器-》编码器
输入有7种状态,所以3条输出线即可(2的3 次方-1)!
显然就完成了模数的转化。
下面对编码器的涉及到的逻辑器件进行说明,以完成所学的电路、模电、数电的知识闭环。
同步D触发器和边沿D触发器
在复杂的数字电路中,要继续进行各种的复杂的运算与控制,就必须将曾经的输入过的信号以及运算结果暂时保存起来。以便与新的输入信号进一步运算来共同确定电路的输出状态。这样子就要求电路中必须包含记忆功能的电路单元-触发器
触发器输出有Q和Q非,因此也称为双稳态触发器。
同步D触发器的由来:
基本RS触发器 -> 同步RS触发器 ->同步D触发器 和边沿D触发器
基本RS触发器
同步RS触发器
同步RS触发器是为了使得多个相关的触发器同时工作,必须给电路加上统一的控制信号,这个控制信号就叫做时钟脉冲信号,简称CP.,这种触发器叫做同步RS触发器
D触发器是在同步RS触发器的基础上解决约束条件问题(即同步RS寄存器都是有效设置信号情况)而产生的。
特性方程
补充同步输入端和异步输入端的概念!
同步D触发器
D触发器的特性方程位
边沿型D触发器(维持-阻塞D触发器)
由同步RS触发器与利用反馈构成了边沿型D触发器!
相关文章:
STM32 ADC介绍(硬件原理篇)
目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 1.逐次逼近型AD转换器 2.并联比较型AD转换器 编码器 同步D触发器和边沿D触发器 基本RS触发器 同步RS触发器 同步D触发器 边沿型D触发器(维持-阻塞D触发器ÿ…...
蚁剑(AutSword)的下载安装与报错解决
蚁剑(AutSword)的下载安装与报错解决 1.下载 唯一官方github下载地址 GitHub - AntSwordProject/AntSword-Loader: AntSword 加载器 2.安装 打开并且进入到下面的界面 下载需要的的版本 进行初始化 3.报错 出现下面的报错 4.解决方法 出现上面报错…...
BT401双模音频蓝牙模块如何开启ble的透传,有什么注意事项
BT401音频蓝牙模块如何开启ble的透传? 首先BT401的蓝牙音频模块,分为两个版本,dac版本和iis数字音频版本 DAC版本:就是BT401蓝牙模块【9和10脚】直接输出模拟音频信号,也就是说,直接推动耳机可以听到声音 …...
209. 长度最小的子数组
这个题目之前做过是用c语言写的 但是我这里用python来写 写的不是很好 感觉自己这里写的还是有问题 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,…...
使用IDEA创建Maven项目、Maven坐标,以及导入Maven项目
一、创建Maven项目 正如使用Vue创建工程化的前端项目,此时,使用Maven创建标准化的后端项目。 以下适用于2021版本的IDEA。 name和artifactid会自动保持一致。 Groupid:一般写公司域名倒写,再加上项目名(也可以不…...
从零到一实现微信小程序计划时钟:完整教程
在本教程中,我们将一起实现一个微信小程序——计划时钟。这个小程序的核心功能是帮助用户添加任务、设置任务的时间范围,并且能够删除和查看已添加的任务。通过以下步骤,我们将带你从零开始实现一个具有基本功能的微信小程序计划时钟。 项目…...
最长回文子串(蓝桥云课)
题目链接:8.最长回文子串 - 蓝桥云课 (lanqiao.cn) 代码如下 # include <iostream> # include <cstring> using namespace std; int main() {string str;getline(cin, str);int res 0;for(int i 0; i < str.length(); i){int l i - 1, r i 1;…...
12-滑动窗口
一,定义 滑动窗口算法是一种用于处理数组或字符串问题的技巧,特别适合解决涉及子数组或子串的问题。它的核心思想是通过维护一个“窗口”来高效地计算或查找满足条件的子数组或子串。 基本概念 窗口:窗口是数组或字符串中的一个连续子区间&a…...
时间序列分析(五)——移动平均模型(MA模型)
此前篇章: 时间序列分析(一)——基础概念篇 时间序列分析(二)——平稳性检验 时间序列分析(三)——白噪声检验 时间序列分析(四)——差分运算、延迟算子、AR(p)模型 …...
eNSP防火墙综合实验
一、实验拓扑 二、ip和安全区域配置 1、防火墙ip和安全区域配置 新建两个安全区域 ip配置 Client1 Client2 电信DNS 百度web-1 联通DNS 百度web-2 R2 R1 三、DNS透明代理相关配置 1、导入运营商地址库 2、新建链路接口 3、配置真实DNS服务器 4、创建虚拟DNS服务器 5、配置D…...
ES8字符串填充用法总结:padStart(),padEnd(),rest剩余参数的用法{name,...obj},扩展运算符的用法,正则表达式命名捕获组
ES8(ECMAScript 2017)引入了两个非常有用的字符串填充方法:padStart() 和 padEnd(),它们可以用来在字符串的两端添加指定的填充字符,从而达到指定的字符串长度。这些方法非常适合用于格式化文本和对齐输出。 1. padSt…...
Redis 统计每个数据类型中占用内存最多的前 N 个 bigkey
Redis 统计每个数据类型中占用内存最多的前 N 个 bigkey import redisdef find_bigkeys(hostlocalhost, port6379, db0, n10):r redis.Redis(hosthost, portport, db0)bigkeys {}# 用于存储每种数据类型的键及内存占用type_memory_dict {}# 扫描所有键for key in r.scan_it…...
C++中的.*运算符
看运算符重载的时候,看到这一句 .* :: sizeof ?: . 注意以上5个运算符不能重载。 :: sizeof ?: . 这四个好理解,毕竟都学过,但.*是什么? 于是自己整理了一下 .* 是一种 C 中的运算符,称为指针到成…...
大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
2025年初,中国推出了具有开创性且高性价比的「大型语言模型」(Large Language Model — LLM)DeepSeek-R1,引发了AI的巨大变革。本文回顾了LLM的发展历程,起点是2017年革命性的Transformer架构,该架构通过「…...
14-H指数
给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发…...
Param ‘serviceName‘ is illegal, serviceName is blank
今天测试nacos服务配置拉取时报了这样一个错误,发现是spring.application.name空值造成的,但是我的bootstrap.yml文件明明配置了,难不成是没有加载bootstrap.yml文件?于是我引入了下面的依赖 <dependency><groupId>o…...
深入剖析Spring MVC
一、Spring MVC 概述 1. 什么是 Spring MVC? Spring MVC 是基于 Spring 框架的 Web 框架,它实现了 MVC 设计模式,将应用程序分为三个核心部分: Model:封装应用程序的数据和业务逻辑。 View:负责渲染数据…...
LLM:RAG
原文链接:LLM:RAG 1、RAG 概览 RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了信息检索(IR)和 LLM 的技术。它的核心思想是在 LLM 生成回答之前,通过检索相关文档…...
Linux 信号量
Linux 信号量 一、信号量基础概念1.1 同步机制的核心需求1.2 信号量的核心原理1.3 信号量类型对比 二、实战代码解析2.1 共享内存与信号量结合示例2.2 信号量类实现要点 三、关键实现细节分析3.1 初始化三步骤3.2 SEM_UNDO机制3.3 原子操作保证 四、进阶应用场景4.1 生产者-消费…...
如何优化Spark作业的性能
优化Spark作业的性能是一个综合性的任务,涉及多个方面的调整和优化。以下是一些关键的优化策略: 一、开发调优 避免创建重复的RDD: 对于同一份数据,只应该创建一个RDD,避免多次创建RDD来增加性能开销。在对不同的数据…...
ERP对制造业务有何价值?
ERP 的定义 在定义 ERP 之前,我们先从其首字母缩写说起,ERP 代表企业资源规划。我们可以将 ERP 定义为一种企业软件,它帮助组织管理日常业务。从根本上讲,ERP 将客户管理、人力资源、商业智能、财务管理、库存以及供应链功能整合…...
python和pycharm 和Anaconda的关系
好的,下面我会详细说明 Python、PyCharm 和 Anaconda 三者的关系,并逐一解释它们的功能和作用。 1. Python(编程语言) 定义:Python 是一种高级编程语言,设计简洁,易于学习,且功能强…...
网络安全“挂图作战“及其场景
文章目录 一、网络安全挂图作战来源与定义1、网络安全挂图作战的来源2、网络安全挂图作战的定义 二、挂图作战关键技术三、挂图作战与传统态势感知的差异四、挂图作战主要场景五、未来趋势结语 一、网络安全挂图作战来源与定义 1、网络安全挂图作战的来源 网络安全挂图作战的…...
【对比】Pandas 和 Polars 的区别
Pandas vs Polars 对比表 特性PandasPolars开发语言Python(Cython 实现核心部分)Rust(高性能系统编程语言)性能较慢,尤其在大数据集上(内存占用高,计算效率低)极快,利用…...
投资组合风险管理
投资组合风险管理 市场风险 信用风险流动性风险风险指标收益率波动率最大回撤 α \alpha α(詹森指数), β \beta β卡玛比率月胜率上/下行捕获比夏普比率索提诺比率经风险调整的收益率(𝑀2)特雷诺比率信息…...
用 WOW.js 和 animate.css 实现动画效果
用 wow.js 就可以实现动画效果,但由于里面的动画样式太少,一般还会引入 animated.css 第一步:下载 选择合适的包管理器下载对应的内容 pnpm i wow.js animated.css --save 第二步:引入 在main.js中加入: import …...
2024年职高单招或高考计算机类投档线
问题: 这些学校2024年职高单招或高考计算机类投档线分别是多少 回答: 部分学校2024年职高单招或高考计算机类投档线如下: 湖南工业职业技术学院 职高单招:未查询到2024年职高单招计算机类专业明确的录取分数线信息。但在2024年…...
洛谷P11042 [蓝桥杯 2024 省 Java B] 类斐波那契循环数
像是这种填空题的话,就直接暴力还更加省时间,在本地算完后直接提交答案即可 #include<bits/stdc.h> using namespace std;const int N 10000000;bool isnumber(int n) {vector<int> a;int m n;while (n > 0) {a.push_back(n % 10);n / …...
[LeetCode]day25 151.翻转字符串里的单词
题目链接 题目链接 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能…...
2026考研趋势深度解析:政策变化+高效工具指南
2026考研深度解析:趋势洞察高效工具指南,助你科学备战上岸 从政策变化到工具实战,这份千字攻略解决99%考生的核心焦虑 【热点引入:考研赛道进入“高难度模式”】 2025年全国硕士研究生报名人数突破520万,报录比预计扩…...
【软考】【2025年系统分析师拿证之路】【啃书】第十一章 软件需求工程(十二)
目录 需求的层次需求工程的主要活动需求的记录技术需求分析需求定义 需求的层次 业务需求用户需求系统需求 需求工程的主要活动 需求获取需求分析形成需求规格需求确认和验证需求管理 需求的记录技术 任务卡片场景说明用户故事 需求分析 方法: 结构化分析&a…...
Cherry Studio 接入本地ollama 搭建可视化deepseek
本文介绍本地下载ollama 后,在cherry studio 中添加本地ollama 查看本地deepseek 模型列表 ollama list 运行模型 ollama run deepseek-r1 验证可以选用ollama 模型...
MapReduce远程调试
个人博客地址:MapReduce远程调试 | 一张假钞的真实世界 MR的远程调试分为两个方面: MapReduce Task远程调试AM(Application Master)远程调试MapReduce Task远程调试 Map Task远程调试 修改mapred-site.xml中的配置项: mapreduce.map.java.opts:Map Task JVM参数设置。…...
知识拓展:设计模式之装饰器模式
装饰器模式拓展 1. 什么是装饰器模式? 装饰器模式(Decorator Pattern)是一种结构型设计模式,允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式通过创建一个装饰类来包装原始类,从而在不修…...
【深度学习】计算机视觉(CV)-目标检测-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目标检测
1.什么是 DETR? DETR(DEtection TRansformer) 是 Facebook AI(FAIR)于 2020 年提出的 端到端目标检测算法,它基于 Transformer 架构,消除了 Faster R-CNN、YOLO 等方法中的 候选框(…...
C++ Primer 访问控制与封装
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
LSTM细胞状态门控设计详解:数学原理、代码实现与工业级优化方案
一、数学原理深度解析 1.1 细胞状态更新方程 LSTM通过三个门控机制精确控制细胞状态: 遗忘门:f_t σ(W_f[h_{t-1}, x_t] b_f)输入门: i_t σ(W_i[h_{t-1}, x_t] b_i) C̃_t tanh(W_C[h_{t-1}, x_t] b_C)状态更新:C_t f_…...
hive(hdfs)补数脚本
pb级别迁移通常要持续1个月以上。一般的过程是,全量迁移,追平数据,增量同步,校验,补数。 这里的指定补数脚本: 输入需要补数的表,如Input.txt,如果有分区则加补此分区,没…...
Python学习心得函数
一、函数的定义及调用 1.函数的定义: 函数的定义:函数是将一段能实现某种特定功能的代码,使用函数名进行封装,并通过函数名称进行调用。从而达到一次编写,多次调用的目的。 2.函数类型分为两类: &#…...
RabbitMQ服务异步通信
消息队列在使用过程中,面临着很多实际问题需要思考: 1. 消息可靠性 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生…...
适用于 Windows 仅 0.6MB 且免费无广告的绿色截图工具
软件介绍 YasoCut 可是一款源自 GitHub 的宝藏截图软件,专为 Windows 系统打造,亮点十足。它体积超小,仅有 0.6MB,并且简单易用、免费无广告,还贴心地提供了绿色版本。 这款软件的独特之处在于,和常见截图…...
three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系
本篇延续上篇内容: three.jsWebGL踩坑经验合集(8.1):用于解决z-fighting叠面问题的polygonOffset远没我们想象中那么简单-CSDN博客 笔者在上篇提到,叠面的效果除了受polygonOffset影响以外,还跟相机的近裁剪面camera.near密切相关ÿ…...
[LeetCode力扣hot100]-链表
相交链表 160. 相交链表 - 力扣(LeetCode) 思路就是遍历两个链表,有相同的部分就可以视为相交。 但是长度不一样,比如两个会相交的链表,headA 的长度为 a c,headB 的长度为 b c,其中 c 是公…...
Deepseek官方整理的13类提示词推荐
最近 deepseek 实在是太火了,网上出现了各种大神教你怎么用好它的免费教程,当然也还有各种需要付费才教你怎么用提示词的课程。但我觉得对于使用 AI 来说,根本就不需要教,关键是要理解一条和 AI 沟通的核心原则:和人交…...
hystrix超详细教学
1、什么是hystrix? 是一个做熔断的框架,当程序被高并发访问时可能会造成微服务的宕机,hystrix可以熔断微服务之间通信。防止后台服务发生雪崩。 2、Hystrix作用 熔断查看微服务请求状态 3、Hystrix使用场景 是在微服务架构下才有意义&am…...
Linux的基础指令和环境部署,项目部署实战(下)
目录 上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…...
250217-数据结构
1. 定义 数据结构是数据的存储结构,即数据是按某些结构来存储的,比如线性结构,比如树状结构等。 2. 学习意义 数据结构是服务于算法的,为了实现算法的高效计算,所以将数据按特定结构存储。比如使用快速插入或删除的…...
【Java基础】Java数组
前言 在Java编程中,数组是一种非常基础且重要的数据结构。无论你是新手还是有经验的开发者,理解如何有效地使用数组对于编写高效和可维护的代码至关重要。 数组的静态初始化 静态初始化是指在声明数组的同时为其元素赋值。这种方式非常适合于你已经知…...
【拥抱AI】GPT Researcher如何自定义配置LLM
GPT Researcher默认的 LLM(大型语言模型)和嵌入式模型是 OpenAI,因为其卓越的性能和速度。不过,GPT Researcher 支持各种开源和闭源的 LLM 和嵌入式模型,你可以通过更新 SMART_LLM、FAST_LLM 和 EMBEDDING 环境变量轻松…...
网工项目理论1.7 设备选型
本专栏持续更新,整一个专栏为一个大型复杂网络工程项目。阅读本文章之前务必先看《本专栏必读》。 一.交换机选型要点 制式:盒式交换机/框式交换机。功能:二层交换机/三层交换机。端口密度:每交换机可以提供的端口数量。端口速率:百兆/千兆/万兆。交换容量:交换矩阵…...