深入了解 ADC 码值转换过程
我们所接触到自然界的各种信号,无论是电压、电流、温度、压力等都属于模拟信号的范畴。但因为单片机只能处理数字信号,所以需要⼀个能将模拟信号转换为数字信号的介质——模数转换器 (ADC),模拟量转换为数字量包含以下几个步骤:采样、保持、量化、编码。本文我们以 ADI 亚德诺半导体 24 位 Σ-ΔADC 为例,为大家讲解 ADC 码值的转换过程。
AD7768-1 介绍
AD7768-1 是一款低功率、高性能 Σ-Δ 模数转换器 (ADC),其具有一个 Σ-Δ 调制器和数字滤波器,可实现 AC 和 DC 信号的精确转换。下图 (图1) 所示为 AD7768-1 的核心信号链:
Σ-Δ 调制器对模拟输入进行过采样,并将数字表示传递给数字滤波器块。数据被滤波,增益调整和抽取 (抽取率取决于用户设置) 后在 SPI 接口上输出。其中量化以及编码除了 ADC 本身之外,还涉及到基准源 Reference,AD7768-1 外部基准源电压范围支持 1V 至 (AVDD1–AVSS) 电压,前端输入电压范围支持到 ±VREF。
ADC 理想传递函数
AD7768-1 可以使用高达 5V 的参考电压并转换模拟输入之间的差分电压 (AIN+ 和 AIN−) 到数字输出。模拟输入可以配置为以下任意一种:差分或伪差分输入。作为伪差分输入时,AIN+ 或 AIN- 可以连接到一个常数输入电压 (如 0V、AVSS 或其他参考电压),ADC 转换模拟量之间的电压差,使用共模 (AVDD1−AVSS)/2 可以最大限度地提高 ADC 输入范围。下图 (图2) 显示了 AD7768-1 的理想传递函数,值得注意的是目前绝大多数 ADC 在输出码值的时候是以二进制补码 (twos complement format) 的形式输出的,AD7768-1 也是如此。
二进制补码
二进制补码 (twos complement format) 是一种常用的二进制数表示方法,它主要用来表示负数的大小。在二进制补码中,正数的表示方法和普通的二进制数表示方法没有任何区别,但是负数的表示方法是通过将它的绝对值的二进制数取反 (即将每一位的 0 变为 1,1 变为 0),再加 1 得到的。假设要用二进制补码表示数字 -5,则首先需要将 5 的二进制数 101 取反得到 010,再加 1 得到 011,即 011 就是 -5 的二进制补码。
基于以上信息,根据下图 (图3) 我们可以得出 ADC 输出的码值和理想输入电压的对应关系;其中 -FS 是可以输入的最低电压,因为是一个负值,MSB 位取 1,所以得到 800000,正常来讲的话这个值应该是最小的,FS 是可以输入的最高电压,应该对应 0XFFFFFF。Midscale 对于 24 分辨率 ADC 来说的话,应该取 2 的 23 次方,也就是 8388608 (0X800000) 这个值。
根据 ADC 输出码值求输入电压
下图 (图4) 为求输入电压的计算公式,需要注意的是,部分工程师通过 ADC 读出来的 CODE 是直接二进制码值,那么此时 Midscale Code 需要对应转换为直接二进制的码值 0X800000 (对应十进制的 8388608),否则就会发现只有前端输入正电压是正确的,负电压就会报错了。
总结
本文以 AD7768-1 为例介绍了通用 ADC 进行编码过程,以及根据输出码值反推出实际 ADC 输入的电压。但需要注意,目前绝大多数 ADC 都是按照二级制补码方式输出编码值,这是为了方便计算机对符号和数值的统一运算而不需要增加额外的硬件电路,一定要和 ADC 输出的原码区分开。欲了解关于更多 ADI 产品和方案信息,请与骏龙科技当地的办事处联系或点击下方「联系我们」,提交您的需求,骏龙科技公司愿意为您提供更详细的技术解答。
参考资料