嵌入式 ADC 入门指南:从零搞懂模拟信号、数字信号与外设工作原理
1.模拟信号与数字信号
信号根据其连续性和离散性可以分为数字信号和模拟信号:

图 1-1 模拟信号与数字信号
- 模拟信号:模拟信号是一种连续的信号,其幅度在任意时间点都可以取无限多个值。它能够无缝地随时间变化,并且能够表示真实世界中的物理现象。举例来说,声音、光强度和温度等均为模拟信号。
- 数字信号:数字信号是一种离散的信号,它只有有限的几个值,通常是 0 和 1。数字信号以二进制的形式表示,这使得它特别适合在计算机和数字电子系统中使用。我们在计算机中处理的所有数据都是数字信号,举例来说,音乐在 CD 中或通过流媒体服务传输时,会被转换为数字信号,这些信号由一系列 0 和 1 组成;图片文件(如 JPEG、PNG)在存储和传输时也是以数字信号的形式存在,每个像素都被表示为数字值。
二者区别在于:模拟信号是连续的,可以在时间和幅度上取任意值;数字信号是离散的,只能取有限几个值:
- 模拟信号对噪声更敏感,容易受到干扰,而数字信号对噪声有更好的抵抗力,因为它只需要区分 0 和 1
- 数字信号更容易存储和传输,可以通过数字电路进行精确复制,而模拟信号在复制和传输过程中可能会产生失真
外部传感器的模拟数据往往需要通过 ADC 模数转换器完成向数字信号的转换,然后在计算机中进行处理传输。完成举个例子,想象你在和朋友打电话,你的声音是连续的、不断变化的,属于一种模拟信号,而为了通过电话传输,它需要转换成计算机可以识别和处理的数字信号——这就是用 0 和 1 组成的二进制数。你的声音通过电话被采样,然后每一个小片段都被转换成 0 和 1 的数字位,传输到对方的电话。对方的电话再把这些数字位转换回模拟信号,你的朋友就能听到你的声音了。

计算机只能识别和处理数字信号,传感器采集的模拟信号需要转换为数字信号才能被计算机处理。ADC 会在一定的时间间隔内对你的声音进行采样,并把每一个小片段转换成由 0 和 1 组成的数字代码。这些数字代码就是你声音的“数字版”,可以轻松地在数字世界中传输。而在接收端,另一个类似的机器会使用 DAC 数模转换器将这些数字代码转换回声音,你的朋友就能听到和你说话时几乎一样的声音了
2.ADC 外设简介
模拟数字转换器 (ADC, Analog-to-Digital Converter) 是一种将模拟信号转换为数字信号的电子器件。它广泛应用于各种电子设备中,如传感器接口、音频处理、测量仪器等。在现代电子设计中,ADC 起到了至关重要的作用。

图 1-3 ADC 模数转换器-模拟到数字信号转换原理示意图
ADC 几乎存在于所有需要将模拟信号转换为数字信号的电子设备中,常见的应用包括:
- 音频设备:在麦克风、音频录音设备和数字音频播放器中,将声音信号转换为数字信号进行处理和存储
- 传感器接口:将温度、压力、光线强度等传感器输出的模拟信号转换为数字信号,以便进行数据处理和控制
- 数据采集系统:在实验和工业控制中,使用 ADC 采集模拟信号用于监测和分析
- 通信系统:在无线电通信中,将模拟信号数字化用于调制、编码和传输
- 图像处理:在相机和图像传感器中,使用 ADC 将光学信号转换为数字信号,以便进行图像处理和存储
2.1 ADC 的基本结构和工作原理
ADC 的基本结构包括以下几个部分:

- 采样保持电路(Sample and Hold Circuit):采样保持电路的作用是将连续的模拟输入信号在特定时间点上进行采样,并将该瞬间的电压值保持住,直到下一个采样时刻。这是因为 ADC 在转换过程中需要一个稳定的输入信号,以获得准确的数字输出
- 量化器(Quantizer):量化器将采样保持电路保持的电压值分割成若干个离散的电平,这些电平对应于可能的数字输出。量化过程会引入量化误差,即模拟信号无法精确映射到某个数字值上,因此会出现一些失真
- 编码器(Encoder):编码器将量化后的离散电平转换为二进制码,即数字信号。这个过程涉及将输入信号的幅度映射到一组固定的二进制数值上
- 参考电压(Reference Voltage):参考电压提供了量化电平的范围,定义了 ADC 可以处理的最大和最小输入电压,输入信号相对于参考电压被量化到适当的二进制数
- 控制逻辑和时钟(Control Logic and Clock):控制逻辑用于管理 ADC 的操作,包括控制采样时间、启动转换过程等。时钟信号用于同步各个过程,使得采样、保持、量化和编码按顺序进行
ADC 的基本功能是将连续变化的模拟信号(如电压)转换为一系列离散的数字值。其工作过程通常包括以下几个步骤:
- 采样:将模拟信号在时间上离散化,即以一定的时间间隔对信号进行采样;采样频率决定了 ADC 能捕捉到的最高信号频率,根据 Nyquist 定理,采样频率应至少为信号带宽的两倍
- 量化:将采样得到的模拟信号值转换为离散的电平,量化电平的数量由 ADC 的分辨率决定,例如 8 位 ADC 有 256 个量化电平
- 编码:将量化后的信号值转换为二进制编码,以便数字系统处理和存储,编码的位数等于 ADC 的分辨率
这里,我们以一个正弦波的 AD 转换过程为例,讲解 ADC 转换中的工作流程。

图 1-5 正弦波 AD 转换示例波形示意图
它在时间和幅度上都是连续的,这是我们要处理的信号。该模拟信号被输入到由采样器开关组成的采样保持电路中。采样器开关通常是一个简单的开关,它以采样频率闭合和打开,如下图所示。当开关闭合时,该时间点的信号幅度可在开关的输出处获得,并将其值保持。
图 1-6 采样保持电路原理图
其保持功能是通过连接在采样开关输出端的电容器实现的。当开关闭合时,电容器充电到该时间点模拟信号的电压值。当采样过程完成时,开关打开,电容器将保持为采样时模拟信号的电压值直到下一个采样时刻。
电容器的电压(即采样信号)随时间变化的图像如下:
图 1-7 采样信号与实际信号 波形对比示意图:采样信号波形图,可以看到电容器电压呈矩形条的形式,其高度等于采样间隔开始时(当开关闭合时)的信号幅度,信号在幅度上都是离散的,在时间上是连续的,电容器两端的电压将用于进一步处理。
可以明显看到,采样并不能完全精确地反映信号的幅度,采样后的电压与正弦波信号之间存在明显的误差,这种误差在采样过程中是不可避免的,但可以通过提高采样频率来减少。不过,采样频率过高会导致处理和存储需求的增加。

图 1-8 ADC 采样过程 信号幅度误差对比示意图:采样后的电压条(黑色)与正弦波信号(紫色)之间存在明显的误差(紫色填充)
电容器电压值接着传入量化器,上面我们可以看到电容器的输出电压呈现为时间上连续的矩形条,而幅度在每个采样间隔内保持不变,量化器将将采样保持电路保持的电压值分割成若干个离散的电平,简单来说就是将每个采样间隔内对应矩形条代表的电压值映射为一个由 0 和 1 组成的二进制数值。
假设我们有一个 3 位的 ADC,输入电压范围为 0V 到 1V,完整电压范围将映射到从 000 到 111 总共 8 个三位二进制数,那么这个 ADC 的分辨率为:
$$
\frac{1,\text{V}}{2^3} = 0.125,\text{V}
$$
。
由于分辨率为 0.125V,对于所有在 0V 到 0.125V 之间的输入信号幅度,输出数字值都将是 000;当电压在 0.125V 到 0.250V 之间时,映射值为 001;当信号幅度在 0.250V 到 0.375V 之间时,输出数字值为 010。上述转换的传输曲线如下图所示:

图 1-9 3 位 ADC 传输曲线与理想曲线对比示意图
在这个过程中我们会遇到量化误差的问题。例如,对于 0V 到 0.125V 之间的模拟信号幅度,其输出都是相同的 000 编码。这导致了信息的丢失,因为在 0V 到 0.125V 之间的任意值都被处理为相同的数字值。量化误差可以通过减少分辨率电压来降低,即为相同的输入电压增加更多的数字输出位数。
图 1-11 不同 ADC 位数与量化误差 波形对比示意图
最后,通过编码器将量化后的离散电平转换为二进制码,即数字信号。
2.2 ADC 的性能指标
在选择和使用 ADC 时,需要关注以下几个关键指标:
- 分辨率 (Resolution):ADC 输出的二进制位数决定了转换结果的精度。分辨率越高,表示信号的量化级数越多,输出结果越精细。常见分辨率有 8 位、10 位、12 位、16 位等
- 采样率 (Sampling Rate):单位时间内 ADC 对模拟信号进行采样的次数。采样率决定了 ADC 能处理的最高信号频率。常用的单位是每秒采样次数(Samples Per Second, SPS)
- 信噪比 (SNR, Signal-to-Noise Ratio):输入信号与 ADC 输出中噪声分量的比值。SNR 越高,表示 ADC 的抗噪声能力越强,输出信号越纯净
- 有效位数 (ENOB, Effective Number of Bits):表示 ADC 的实际分辨率,它考虑了信噪比和非线性误差的影响。ENOB 越高,说明 ADC 的性能越接近理想
- 总谐波失真 (THD, Total Harmonic Distortion):衡量 ADC 输出信号中由非线性失真引起的谐波分量,THD 越低,表示 ADC 的线性度越好
- 差分非线性 (DNL, Differential Non-Linearity):指相邻量化级之间的电压差异与理想差异的偏离程度。DNL 会影响 ADC 的精度和分辨率
- 积分非线性 (INL, Integral Non-Linearity):指 ADC 的实际转换曲线与理想直线之间的最大偏差,INL 同样影响 ADC 的精度
- 输入范围 (Input Range):ADC 能正确转换的输入模拟信号电压范围,超出输入范围的信号会导致误差
- 功耗 (Power Consumption):ADC 在运行时消耗的电能,功耗与 ADC 的应用场景密切相关,尤其是在电池供电的便携设备中
2.3 ADC 的类型
从是否集成到 MCU 内部这个角度,ADC 可以分为内置片上 ADC 和外置 ADC 芯片:

- 内置片上 ADC:内置 ADC 是微控制器或 SoC(系统级芯片)的一部分,不需要外部接口电路,占用的 PCB 板面积较小,简化了设计,具有功耗低、响应速度快和成本低的优点,但是由于受到芯片面积、功耗和噪声的限制,片上 ADC 的分辨率和精度通常不如外置 ADC 高,常见的片上 ADC 分辨率为 8 到 12 位
- 外置 ADC 芯片:外置 ADC 芯片通常提供更高的分辨率(16 位、24 位甚至更高)和更好的精度,可以满足高精度测量的需求,并且我们可以根据应用需求选择合适的 ADC 芯片,如高速采样 ADC、高精度低速 ADC 等,它提供了更好的电源和信号噪声隔离,但是需要外部电路进行连接,增加了 PCB 设计的复杂性和占用的面积,同时需要考虑接口的驱动能力和信号完整性,同时功耗较高
简单来说,内置片上 ADC 适用于一般的传感器信号采集、简单的音频信号处理、低成本便携设备等应用场景,外置 ADC 芯片 常用于高精度测量仪器、高速数据采集系统、音频和视频处理、专业医疗设备等对分辨率和精度要求较高的场景。
从工作原理的角度看,ADC 可分为以下几个类型:


每种 ADC 类型都有其独特的工作原理和适用场景,根据应用需求选择合适的 ADC 类型是实现高效数据采集和处理的关键。

信号根据其连续性和离散性可以分为数字信号和模拟信号:
浙公网安备 33010602011771号