1.6 ADC

模拟信号与数字信号

模拟信号

模拟信号是时间和数值上连续的信号

大自然中的大多数信息在人的感官尺度上都是模拟的,比如力的大小, 声音的响度,灯光的亮度模拟信号是可以取任意数值且连续的

数字信号

数字信号是时间和数值均离散的信号

  • 时间离散: 不同的电子元件的处理速度不同,需要处理器等模块发送时钟信号, 来调控处理器以及其他模块读取处理生成数字信号
  • 数值离散: 数值可认为是只有两个状态: 0, 1

数字信号也可以被认为是计算机等设备实际可以识别并操作的信号!

而连续的模拟信号可以在某些特定的离散时间点,通过一些硬件电路转化成离散的数字信号,这就是采样


ADC Analog to Digital Converter

ADC - 模数转换器: 通过对输入的模拟信号进行测量, 将其分级转换成数字信号

ADC 的基本参数

  • ADC 的位数 x
  • ADC 的参考低电压 Vref-
  • ADC 的参考高电压 Vref+

ADC 转换

其中 x 通常取 12

如果输入为 1.5v 高电平为 3.3v, 低电平为 0v, x 取 12 则通过公式计算得到 ADC 输出值为 1861, 对应二进制是 011101000101

分辨率与精度

  • 分辨率与位数有关, 如果 x=12 , ADC 的位数是 12 位, 则分辨率是 1 / 2^12 = 1/4096
  • 精度与 ADC 的好坏有关, 精度越高的 ADC 输出的数值越接近计算出来的理想值, 即波动较小

位数越高, 分辨率越强; 性能越高, 波动越小, 精度越高


采样保持(Sample & Hold)

ADC 转换时量的不是引脚电压,而是先把引脚电压转移到内部一个采样电容上,再对这个电容上的电压做逐次逼近

采样时间就是给这个电容充电的时间

Pasted image 20260703225801 要给 C_保持 充电,电流得穿过两段电阻:你外面接的 R_源(分压电阻、电位器的等效阻抗)+ ADC 内部采样开关的 R_ADC(≈1kΩ)。这两段电阻和那个 ≈8pF 的电容串起来,就是一个标准的 RC 充电电路, 这表明电容电压是指数式爬向 V_in 的, 而不是瞬间达到

采样时间(1.5 / 55.5 / 239.5 周期)控制的就是采样开关闭合多久,也就是留给电容充电的时间窗。逻辑链是这样:

  • 源阻抗低(比如运放缓冲输出、几 kΩ 的小分压):RC 时间常数很小, 电容一两个周期就冲到位, 1.5 周期绰绰有余
  • 源阻抗高(比如你用两个几百 kΩ 的电阻做分压,或者电位器阻值很大):RC 时间常数变大,充电变慢。如果选择 1.5 周期, 那么1.5 周期(≈125ns @ 12MHz)一到, 开关就断开、SAR 直接开始转换 —— 这时电容还没爬到真正的 V_in,SAR 量到的是这个没充满的中间值,采一个偏高的电压时就表现为读数偏低

要充到 12 位精度(误差小于 1/4 LSB), 电容大约需要 9~10 个 RC 时间常数的时间。所以解决办法就是把 Sampling Time 调大,给足这么多时间常数。代价是每次转换变慢(总周期 = 采样周期 + 12.5),比如 239.5 周期那档,单次转换从 14 个周期涨到 252 个周期,采样率掉一个数量级所以需要权衡, 精度 vs 速度

F103 数据手册里有张表, 列了每一档采样时间对应能接的最大源阻抗:1.5 周期那档只能接很低阻抗的源, 而 239.5 周期能容忍到几百 kΩ。实际操作中信号源内阻越大,Sampling Time 就往大了调; 拿不准就先用中间档(比如 28.5 或 55.5)测测试试 Pasted image 20260703231451