1. ADC 基础概念:ADC 工作原理、分辨率、采样率、参考电压、量化误差

模数转换器(ADC,Analog-to-Digital Converter)是嵌入式系统中连接模拟世界与数字处理核心的桥梁。在 Linux 设备树与 IIO(Industrial I/O)子系统中,ADC 的配置精度直接决定了传感器数据的可信度。本节将系统梳理 ADC 的核心参数与工作原理,为后续设备树绑定与驱动开发奠定理论基础。

学习提示:ADC 的五个核心参数——分辨率、采样率、参考电压、量化误差与转换时间——在设备树中均有对应的属性字段。理解这些参数的物理含义,是正确编写 ADC 设备树节点的前提。

1.1 ADC 工作原理:从模拟到数字的桥梁

ADC 的核心任务是将连续变化的模拟电压信号转换为离散的数字码值。其基本工作流程包含三个步骤:采样、保持与量化编码。

  1. 采样(Sampling):在特定时间点对模拟信号进行取样,将连续时间信号变为离散时间信号。
  2. 保持(Hold):将采样得到的电压值稳定一段时间,以便后续量化电路完成转换。
  3. 量化编码(Quantization & Encoding):将保持的模拟电压与参考电压进行比较,输出对应的二进制数字码。

下图展示了 ADC 从模拟输入到数字输出的完整信号链路:

ADC 信号转换链路 模拟输入 0 ~ Vref 采样保持 S/H 电路 量化编码 比较器阵列 数字输出 N-bit 码值 采样时钟 Vref 说明: 采样时钟决定转换速率,Vref 决定满量程范围。量化编码阶段引入的误差即为量化误差。
关键点:在设备树中,sampling-frequency 属性对应采样时钟频率,vref-supply 属性绑定参考电压源。这两个属性直接影响 ADC 的转换精度与速度。

1.2 分辨率:ADC 的“刻度尺”精细度

分辨率是 ADC 能够分辨的最小模拟电压变化量,通常用 位数(N-bit) 表示。N 位 ADC 可将参考电压范围划分为 2N 个离散等级。

分辨率(位) 等级数(2N) LSB 大小(Vref=3.3V) 典型应用
8 位 256 12.89 mV 电池电压监测、按键检测
10 位 1024 3.22 mV 温度传感器、电位器
12 位 4096 0.806 mV 电流检测、压力传感器
16 位 65536 50.35 µV 精密称重、音频采集

分辨率与最小可分辨电压(LSB,Least Significant Bit)的关系为:

LSB = Vref / 2^N

示例:Vref = 3.3V,N = 12
LSB = 3.3 / 4096 ≈ 0.806 mV
常见误区:高分辨率并不等于高精度。分辨率只表示 ADC 能区分的等级数量,而精度受参考电压稳定性、噪声、非线性误差等因素影响。设备树中 bits 属性仅声明分辨率,实际精度需结合硬件设计评估。

1.3 采样率:转换速度的决定因素

采样率(Sampling Rate)表示 ADC 每秒完成转换的次数,单位是 SPS(Samples Per Second) 或 Hz。根据奈奎斯特采样定理,采样率必须至少为信号最高频率分量的两倍,才能无失真地重建原始信号。

采样率与信号频率的关系 模拟输入信号(fin) 采样时钟(fs ≥ 2 × fin) 奈奎斯特准则:fs ≥ 2 × fin_max。实际工程中通常取 5~10 倍以保证信号保真度。

采样率的选择需权衡以下因素:

  • 信号带宽:高频信号需要更高的采样率,否则会发生混叠(Aliasing)。
  • 分辨率:高分辨率 ADC 通常转换时间更长,采样率受限。
  • 功耗:高采样率意味着更高的动态功耗,电池供电设备需谨慎选择。
设备树实践:在 IIO 驱动中,采样率通过 sampling-frequency 属性配置。例如 sampling-frequency = <100000>; 表示 100 kSPS。若未指定,驱动可能使用默认值或硬件复位值。

1.4 参考电压:转换的“标尺”基准

参考电压(Vref)是 ADC 转换的基准尺度,决定了输入电压的满量程范围。ADC 将输入电压与 Vref 进行比较,输出对应的数字码值。

参考电压类型 特点 典型场景
内部参考 集成在芯片内部,精度一般(±2%~±5%) 低成本、低精度应用
外部参考 独立高精度芯片,温漂低(±0.1%~±0.5%) 精密测量、工业传感器
电源参考 直接使用 VDD 作为参考,成本最低 电池监测、粗略检测

参考电压对转换结果的影响:

数字码值 = (Vin / Vref) × (2^N - 1)

示例:Vref = 3.3V,N = 12,Vin = 1.65V
数字码值 = (1.65 / 3.3) × 4095 = 2047.5 ≈ 2048
关键注意:Vref 的稳定性直接影响 ADC 精度。若 Vref 波动 1%,则转换结果同样会引入 1% 的误差。在设备树中,vref-supply 属性通常绑定一个稳压器节点,确保参考电压的稳定供给。

1.5 量化误差:数字世界的“舍入代价”

量化误差是 ADC 转换过程中固有的、不可消除的误差,源于将连续模拟值映射到离散数字等级时的舍入操作。最大量化误差为 ±0.5 LSB。

量化误差示意图(3 位 ADC 示例) 量化阶梯(实际输出) 理想直线(理论输出) 量化误差 量化误差 = 实际输出 - 理想输出,范围在 ±0.5 LSB 之间。增加分辨率可减小量化误差。

量化误差与分辨率的关系:

  • 分辨率越高,LSB 越小,量化误差的绝对值越小。
  • 量化误差无法消除,但可以通过过采样(Oversampling)与求平均技术降低其影响。
  • 信噪比(SNR) 与分辨率的关系:SNR ≈ 6.02N + 1.76 dB(理想 ADC)。
工程启示:在设备树中配置 ADC 时,若应用对精度要求较高(如称重传感器),应选择 16 位或更高分辨率的 ADC,并配合低噪声参考电压源。量化误差是系统误差的底线,无法通过软件校准消除。

1.6 核心参数对比总结

参数 定义 单位 设备树属性 对系统的影响
分辨率 ADC 可区分的等级数量 位(bit) bits 决定最小可分辨电压
采样率 每秒转换次数 SPS / Hz sampling-frequency 决定可处理的信号带宽
参考电压 转换基准电压 V(伏特) vref-supply 决定满量程范围与精度
量化误差 离散化引入的固有误差 LSB / mV 无(硬件固有) 限制理论最大精度
转换时间 单次转换所需时间 µs / ns conversion-time 影响采样率上限
本节要点回顾:
  • ADC 将模拟电压转换为数字码值,核心步骤为采样、保持、量化编码。
  • 分辨率决定 LSB 大小,采样率决定信号带宽,Vref 决定满量程范围。
  • 量化误差是 ±0.5 LSB 的固有误差,增加分辨率可减小其绝对值。
  • 设备树中通过 bits、sampling-frequency、vref-supply 等属性配置 ADC 参数。