目录
二、ADC的整体结构(前面只是讲了ADC的结构里面的一部分)
一、SAR-ADC
1.ADC是什么
广义ADC,其实就是把自然界连续的信号转为计算机可存储的离散的数字信号
狭义ADC,是把电压信号转为离散的数字去存储下来

模拟信号的时间连续表示的是任意时间(不管是几分几秒几毫秒等等)下都记录着值,同理幅度连续也是表示其纵轴的值的精度无限大。

2.单片机里的ADC模块

3.采样深度
12位:采样深度为12位
采样深度:用多少二进制位来存储数字
简单来说就是采样深度越大,转换后的值越精确
为啥深度越大,转换的越精确
如下:4位ADC,0-1111,共16个数,即0-15,0对应0V,1111对应3.3V,那每两数之间对应的电压是多少?即16个数对应的15个间隔下的各自的电压宽度,那就是把3.3进行15等分.
那用这16个数的15个间隔去平均存放等同的电压值,即如果是0-3.3V电压的话就是0.22V。
那2V的电压经过ADC转换后(转换时就是x个0.22V,最近的不高于2V的是1.98(即2V/0.22V=9,即二进制的1001b))为1.98V,(数字化)量化后的误差为0.02V
但是12位的就不同了,其存储的位置多,既而间隔有2的12次-1,既而得到的电压分辨率是更小的值,那也就是说其精度更高了,所以其量化误差更小
注意:采样深度 和 常规序列或注入序列的寄存器的位数 没有多大关联,也别搞混了
采样深度是数据用多少位表示,用的这个位数也决定了ADC 本身的精度(能分多细的电压间隔)。
而常规/注入序列的寄存器是最后存储结果的地方,默认是固定的16位
但是采样深度 和 逐次逼近型ADC内部的结果寄存器是有关联的
比如4位的寄存器,分辨率是0.22V,那对于2V的电压,其表示为:x个0.22V,这里最接近的就是9。换成二进制就是1001,那这个也表示结果寄存器的b0和b3都为1,另外两个都为0。
又由第6小节里面讲的,2V刚好为b3的1.76V+b0的0.22V
所以转换后的电压结果的求法:
一个方法是对多位进行逐次逼近的累加去得到结果寄存器的结果码,然后结果码对应的值为1的地方进行电压值的相加,参考下面第6节(这是SAR-ADC的底层本质)
另一个方法是采用计算的方法得到结果码,而不是累加:
结果码*分辨率 (但是其中结果码是由:输入电压//分辨率得到最接近的小于输入电压的值,注意这里是取整,因为不仅代表是第几份电压,以及也要将其转为二进制)
---但是第二种只是计算方法,并不是SAR-ADC的底层,这个只能用来便捷计算,底层还是逐次逼近的累加
而且这两个方法的结果也可以进行二进制上的转换(比如你算的除后的值为9,转为二进制是1001,将其乘分辨率,那就等价于逐次逼近法的取b0砝码的重量 + b3砝码的重量)

**特别特别注意:**ADC的寄存器里面(不管是SAR-ADC内部的结果寄存器还是DR,JDR存的都是)存的统一都是输入电压的结果码,也叫量化值,而不是量化电压(即转换后的电压值,这个值一般和实际的输入电压有些量化误差,并且它不是 ADC 真的输出的,而是你用数字码 反推得到的"最接近的电压值。)
4.逐次逼进型ADC



5.采样保持电路
采样:从连续的模拟信号得到想要的某个点的电压
方法:闭合电路开关,既而快速给电容充电,冲到后面当电容逐渐平稳到想要的电压时,就达到采样的目的了。所以采样时间就是该电路闭合的时间
保持:进行比较的时候,另一短是要逐次逼近的,所以需要时间,这个时间下需要左边的电压保持恒定,就像天平上的这一端,需要他保持电压不变
方法:当采样后得到逐渐平稳的想要的电压后,断开开关,此时左边电容不能放电,右边的比较器常常处于断路的情况,所以电容放不了电,处于恒定的电压

6.例子
如何选取砝码去匹配到2.21V.从大往小选,选择为1,不选为0
7.扩展介绍
1. 运算放大器(Op-Amp)
运算放大器是一种高增益电子器件,常用于信号放大、滤波、比较、积分等。
1.1 高速运算放大器
普通运放响应速度有限(比如音频信号够用了)。
高速运放强调响应快、带宽大、转换速度快,可以处理高频信号(比如几十 MHz)。
比较器常常就是在高速运放的基础上,去掉一些稳定性设计,专门用来比较电压大小。
2. 比较器的本质
比较器和运放长得像,也有"+"(同相输入)和"--"(反相输入)。
作用:判断
V+
和V--
的大小,输出高/低电平。电气特性:
输入端阻抗很高 → 几乎不吃电流(所以接在前级电路上不会形成明显负担)。
输出是强驱动电平(0 或 1),不是连续变化的电压。
3. "电流流不流"的问题
你问的重点在这里
比较器输入端 → 阻抗极高,几乎不流电流,就像断路一样,这就是"虚断"。
比较器内部 → 当然有电流流动(半导体内部电路工作),但对外界来说等效成没有电流吸收。
所以你接信号到比较器输入时,可以理解成"不会被吸走电流",也就是对外近似断路。
4. 虚短 vs 虚断
这是经典运放概念:
虚断:运放输入阻抗无限大 → 输入端不流电流。
虚短 :在负反馈条件下 ,运放会自动调节输出,让
V+ ≈ V--
。对比:
比较器 :开环工作,没有负反馈,所以只有虚断,没有虚短。
运放做放大器(比如接电阻网络):有负反馈,才有虚短。
5. 负反馈是啥?
反馈就是把输出的一部分接回输入。
正反馈:输出推着输入往同一个方向走 → 会导致震荡、触发(锁存器、振荡器用)。
负反馈:输出推着输入往相反方向走 → 运放会自动调节,使输入两端电压几乎相等(虚短)。
例子:
不带反馈的比较器:只会直接比较大小。
带负反馈的运放:可以稳稳输出一个比例放大的电压。
6. 整体逻辑总结
运放:高增益器件,用来放大信号;高速运放可以处理高频。
比较器:基于运放结构,专门比较电压大小,输入阻抗高(虚断),输出只有高/低。
电流问题:输入端几乎不流电流,对外表现像断路。
虚短/虚断:
虚断 = 输入阻抗高 → 电流 ≈ 0(比较器、运放都满足)。
虚短 = 负反馈下的运放才有,比较器没有。
负反馈:让运放"自我调节",保证输入电压差几乎为零,从而实现稳定放大。
- 什么是反馈?
反馈 = 把输出的一部分接回输入 。
好比:一个人说话,声音传到山谷,又被反射回来(回声),这就是一种"反馈"。
如果回声 和你声音同方向加强 → 声音越来越大(正反馈)。
如果回声 和你声音相反,抵消掉一部分 → 声音变小,更稳定(负反馈)。
- 正反馈(推着同方向走)
定义:输出的变化,会让输入端往同一个方向变化。
结果:变化越来越大,容易失控。
应用:
锁存器(一旦触发就保持状态),
振荡器(不断震荡产生方波/正弦波)。
👉 比喻:
好比你在秋千上推别人,秋千往前,你也继续往前推 → 越荡越高。
3. 负反馈(推着反方向走)
定义:输出的变化,会让输入端往反方向变化。
结果:系统会自我调节,保持稳定。
应用:
运放放大器(能稳定输出某个电压),
控制系统(比如空调恒温)。
👉 比喻:
你拿着水龙头,水流大了,你就拧小点;水流小了,你就拧大点 → 总能保持恒定的水流。
4. 在运放里怎么体现?
开环(没有反馈)
- 运放输出只会疯狂往正饱和或负饱和跑(几乎就是比较器的工作方式)。
有负反馈
运放会"努力"让
V+ ≈ V--
,因为只要有点差,它就会调整输出去抵消。这就是"虚短"现象。
5. 一句话总结
正反馈 = 输出顺着输入推 → 越推越大 → 振荡/触发。
负反馈 = 输出顶着输入推 → 越推越稳 → 稳定放大。
二、ADC的整体结构(前面只是讲了ADC的结构里面的一部分)

1.ADC的多路复用
上图是从前面学的ADC的一部分:单路,将这个单路的输入部分(带开关的)提出来,从形成了一个简化版的单路情况,其输入的信号,由开关控制输入
多路信号的执行顺序:将单路扩展为多路,当多路信号复用的时候,依次先将模拟信号x输入然后转换,并将结果进行保存;之后再进行下一个模拟信号的操作。
这里的结构图里面只写到引脚IN9,是因为后面的几个引脚当前单片机不支持
2.常规序列
简单来说:这个常规序列就是定义了转换的规则
该序列主要存放了转换的各通道的序号和各通道的采样时间(即各通道的开关闭合的时间)
常规序列的实现步骤:1.当外部触发 产生输入信号时,即产生一个触发输入的上升信号,即上升沿
2.那就执行一次常规序列里面的清单,即一次上升沿的信号就要触发通道7,通道8,通道9的依次转换
注意:常规序列的记录数是16个记录,而注入序列的记录数最多是4个记录
3.注入序列
尤其注意这个优先级更高,即同是输入的情况下,当注入序列的通道被打开,优先执行注入序列的任务,他执行完了,常规序列才能执行


三、ADC的采样时间和转换时间
总结来说就是:
采样时间:主要是需要信号源的内阻,因为信号源内阻越大,电流越小,电容充电越慢
转换时间:ADC位数*cycle+0.5cycle;//因为是要一位位的逼近比较所以需要位数
在求取ADC内部的模数转化的时间是:采样时间+转换时间
而直接想要求转换后的电压值:就在配置常规序列或注入序列的时候会用到采样时间,转换时间是不会用到的

1.ADC的时钟频率
ADC的时钟频率等于 PCLK2经过分频得到的频率
根据官方的操作手册,ADC的时钟频率必须小于14MHz,所以这里选择6分频下的12MHz,当然8分频也行。
2.转换时间的计算方法
其实就是位数*cycle+0.5*cycle
默认使用的是12位的结构寄存器,比较的时候需要对每位(每个砝码)都分别用来进行比较,每个比较都默认的消耗一个周期(cycle),所以总共是12cycle+0.5cycle(规定的)=12.5cycle
3.采样时间和信号源内阻的关系
首先一个知识是采样时间是和信号源的内阻有关的
结论是:信号源内阻越大,电流传输越慢(因为降压了),充电越慢
4.信号源内阻的计算方法
这里以一个光敏传感器为例,举例怎么计算这个传感器的内阻
首先先画出其标准的电路图
之后根据其电路图画成一个线性二端网络
之后根据定理得到的电源电压和电源的内阻
电源归0
线性二端网络 = 由线性元件组成,对外只有两个端口的电路黑盒子,
1. 什么叫"二端网络"?
二端网络就是对外只有两个引脚(端口)的电路。
不管里面多复杂(有电阻、电容、电感、电源等),对外就表现为"一个黑盒子",外界只能通过这两个端子施加电压、流过电流。
👉 常见例子:一个电阻、一个电容、一个电感,甚至一个复杂滤波电路,只要对外只有两个端点,它就是二端网络。
2. 什么叫"线性"?
"线性"是指电路元件满足 叠加原理(输入和输出成线性关系)。
对于电路来说,意味着 电压、电流关系符合欧姆定律、线性微分方程。
线性元件:电阻、电感、电容、理想独立源、受控源。
非线性元件:二极管、三极管、MOS 管、开关等。
3. 什么是"线性二端网络"?
定义:由线性元件构成的,只对外表现为两个端口的电路。
特点:外部电压与电流关系是线性的,可以用电阻、电压源、电流源等等效表示。
常见分析工具:
戴维南定理(等效为电压源 + 电阻)
诺顿定理(等效为电流源 + 电阻)
👉 所以,"线性二端网络"就是一个"对外只有两根线的线性电路黑盒子"。
5.采样时间的计算方法
根据ADC手册公式得到其他标准参数,主要是要获取信号源的内阻