在嵌入式系统中,ADC(模数转换器,Analog-to-Digital Converter)是一个至关重要的组件,它的主要作用是将模拟信号(如温度、光强、声音等)转换为数字信号,以便微处理器或数字系统进行处理。
ADC的基本原理
ADC将模拟信号(通常是一个连续变化的电压信号)转换为数字信号(离散的二进制值)。这个转换过程可以分为以下几个步骤:
- 采样:首先,ADC需要对输入的模拟信号进行采样,即在特定的时间点获取输入信号的值。这个采样过程涉及到信号的“离散化”,即每次采样获取的是一个特定时刻的电压值。
- 保持:采样后,ADC会将模拟信号的电压保持在一个电容上,这一过程叫做“保持”阶段。保持电压可以确保转换过程不会受到输入信号变化的影响。
- 量化:量化是将模拟信号的电压值映射到数字域。根据ADC的位数,将输入信号的电压范围划分为多个离散的区间,每个区间对应一个数字值。比如,8位ADC的数字范围是0
255,12位ADC的范围是04095。 - 编码:最后,ADC将量化后的信号值转换为二进制数字输出。该数字表示输入信号的离散值。
ADC的工作方式
工作模式 | 描述 | 应用场景 | 优点 | 缺点 |
---|---|---|---|---|
单次转换模式 | 仅进行一次转换,转换完成后停止。通过触发信号启动。 | 需要偶尔采样的场景,如一次性测量温度、电压等。 | - 简单实现,硬件资源占用少。 - 低功耗,适合低能耗应用。 | - 不能连续采样,适用于非实时性、低频率采样需求。 - 采样间隔较长。 |
连续转换模式 | 持续进行转换,数据不断更新,直到被停止。 | 高频采样的应用,如实时监控、音频采集等。 | - 实时数据采集,适合需要高采样频率的应用。 - 可以连续获取数据,无需额外触发信号。 | - 高功耗,长时间运行时可能消耗大量电能。 - 占用更多系统资源,可能影响其他任务的执行。 |
扫描模式 | 依次对多个输入通道进行转换,适用于多个信号源的同时采样。 | 多通道数据采集应用,如传感器阵列采样、气体传感器等。 | - 可以同时采样多个通道,适合多输入信号应用。 - 有效利用ADC硬件资源,降低硬件成本。 | - 每个通道的转换时间较长,采样间隔会增加。 - 可能导致整体采样频率较低。 |
触发模式 | 外部触发信号启动转换(定时器、中断、外部引脚等)。 | 需要在特定时刻或条件下采样的数据,如事件驱动采样或周期性采样。 | - 通过外部信号精确控制采样时机,提高灵活性。 - 只在需要时进行采样,降低无效采样次数。 | - 需要外部触发信号,增加系统复杂性。 - 可能会导致采样不稳定或对外部信号过于依赖。 |
差分输入模式 | 同时采样两个输入信号并返回它们的差值。 | 差分信号处理应用,如差分放大器输出、传感器的差分信号采样。 | - 减少共模噪声,提高测量精度。 - 提供更高的信号对噪声比,适用于微弱信号的测量。 | - 需要额外的硬件支持,如差分放大器。 - 实现相对复杂,电路设计较为复杂。 |
单端输入模式 | 仅采样单一输入信号,通常参考地(GND)。 | 简单的单信号采样,如电池电压、传感器输出等。 | - 实现简单,硬件要求低,成本较低。 - 适用于大多数基础测量应用。 | - 对地噪声敏感,容易受到环境干扰。 - 对低信号精度要求的应用可能导致测量误差较大。 |
ADC数据对齐
在ADC数据转换过程中,结果数据在寄存器或内存中的存储方式。
数据对齐方式 | 描述 | 应用场景 | 优点 | 缺点 |
---|---|---|---|---|
左对齐(Left Alignment) | 将数据的高位(MSB)存储在寄存器的高位,低位(LSB)存储在寄存器的低位。 | 适用于需要高精度位移或进一步数据处理的场景,如高精度测量或多次数据处理。 | - 数据对齐更加精确,适合高精度应用。 - 便于后续的位操作,如位移、掩码等。 | - 可能会浪费寄存器的低位,尤其是在数据较短时。 - 处理器或硬件可能需要额外的支持。 |
右对齐(Right Alignment) | 将数据的低位(LSB)存储在寄存器的低位,高位(MSB)存储在寄存器的高位。 | 适用于数据后续需要与其他较低精度数据结合的应用场景,如数字滤波器输出、数据组合。 | - 更适合低精度数据的存储和处理。 - 使用简单,适合数据集成和直接读取。 | - 可能导致高位数据丢失,特别是在高精度应用中。 - 对数据处理要求较高时,可能需要进行位移处理。 |
ADC的分辨率与精度
-
分辨率(Resolution):
ADC的分辨率决定了输出数字的位数,也即转换精度。例如,8位ADC能够提供0255的数字输出,12位ADC提供04095的数字输出。分辨率越高,ADC能表示的电压变化就越精细,精度更高。 -
参考电压(V_ref): ADC的转换精度与参考电压密切相关。假设ADC是12位,参考电压是3.3V,那么最小的电压分辨率就是 ,即每次数字增量对应的电压值。参考电压的稳定性和准确性直接影响ADC的转换精度。
-
量化误差:由于ADC是离散化过程,原始模拟信号的真实值与转换结果之间会存在误差,这个误差叫做量化误差。量化误差的大小与ADC的分辨率相关,高分辨率的ADC能更精确地逼近模拟信号的真实值。
10位ADC与8位ADC的关系
- 10位ADC的精度是8位ADC的10倍。
- 10位ADC转换为8位应取其低8位
采样率与带宽
-
采样率:
采样率指ADC每秒钟可以采样的次数,通常以S/s(Samples per second)来表示。采样率决定了ADC的响应速度和频率带宽。较高的采样率适用于快速变化的模拟信号,但也会增加处理器的负担。 -
奈奎斯特定理:
为了避免混叠现象(aliasing),采样率必须至少是输入信号最高频率的两倍。因此,如果信号频率高于采样率的一半,会出现信息丢失或失真。
ADC的输入类型
-
单端输入(Single-ended Input): 单端输入是最常见的ADC输入类型,其中信号源的电压与地之间的电压差作为输入信号。输入信号通过一个电压参考和地之间的电压差来转换为数字值。
-
差分输入(Differential Input): 在差分输入模式下,ADC同时测量两个输入端之间的电压差。这种方式通常具有更高的抗干扰能力,并且能在噪声较大的环境中提供更精确的信号测量。
ADC的性能指标
-
线性度(Linearity):
ADC的线性度指ADC转换结果与输入信号之间的关系是否线性。如果ADC的输出与输入之间有误差,就会影响测量精度。理想情况下,ADC的输出应该与输入电压成线性关系。 -
转换时间(Conversion Time):
转换时间是指从ADC开始转换到输出结果稳定所需的时间。此时间由ADC的分辨率和工作模式决定。 -
信噪比(SNR):
信噪比是描述ADC转换结果中有用信号与噪声的比例。较高的SNR意味着ADC能够更好地分辨真实信号,而不是受到噪声的干扰。
嵌入式中ADC的应用
-
传感器数据采集:
ADC在嵌入式系统中的应用最广泛的是传感器数据采集,例如温度传感器、压力传感器、光传感器等。这些传感器通常提供模拟信号,必须通过ADC将信号转化为数字数据供处理器使用。 -
音频处理:
在音频信号处理中,ADC用于将模拟音频信号转换为数字信号。由于音频信号的频率范围较宽,因此需要较高的采样率和分辨率。 -
电池电量监控:
ADC常用于电池电压监测。通过测量电池电压的模拟信号,ADC可以将其转换为数字信号,供系统评估电池电量。
ADC的控制与配置
在嵌入式系统中,ADC通常由微控制器(MCU)控制。在STM32等嵌入式平台上,ADC的配置包括:
- 选择输入通道:选择哪个输入引脚连接到ADC模块。
- 配置分辨率和采样时间:选择ADC的分辨率(例如12位、10位)和采样时间。
- 启用ADC:配置ADC的工作模式(单次转换或连续转换)。
- 启动转换并读取数据:在ADC启动后,读取转换结果。
例如,在STM32中,配置ADC通常涉及设置寄存器,如ADC_CR1(控制寄存器)、ADC_SQR1(采样序列寄存器)等。
keysking
逐次逼近法
二分确定电压值,从高位开始依次与结果比较,依次确定每一位bit
值得到比较结果。
STM32
16个外部转换通道。