我可以成功地将数据时钟输出到器件、但如何将这些输出代码转换回电压?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
问得好! 我将在本示例中使用 ADS1298、但理论可应用于任何器件!
要将输出代码转换为电压、必须首先计算最低有效位大小或 LSB。 一个 LSB 表示一个代码的电压权重。 换句话说、为了增加/减少 ADC 输出、输入电压必须改变一个 LSB 大小。 ADC 的满量程范围(FSR)除以总数代码、得到 LSB 大小:
LSB = FSR /(2^n - 1)、其中"n"为 ADC 分辨率。
在 ADS1298中、每个 ADC 的差分输入电压范围为-VREF 至+VREF、因此满量程范围= 2 x VREF。 请记住、每个 ADC 前面还有一个 PGA、因此每个通道的差分输入必须限制在(- VREF/增益)到(+VREF/增益)之间。 然后、LSB 大小的计算公式如下:
LSB =(2 x VREF)/增益/(2^24 - 1)
接下来、您必须了解 ADC 的输出数据格式。 ADS1298以二进制补码输出数据、其中0x7FFFFF 表示正满量程、0x800000表示负满量程。
图1:ADS1298理想传递函数
将输出代码转换回输入电压的最简单方法是使用0x800000和数据、并测试 MSB (最高有效位)。 如果 MSB 等于0、只需将等效的十进制数乘以 LSB 大小。 如果 MSB = 1、必须首先从等效的十进制数中减去2^n、然后乘以 LSB 大小。
例如、使用 VREF = 2.5V、N = 24位、增益= 4、我们可以计算出 LSB 大小为74.506nV。 输出代码0x147AE1对应于+100mV 的输入电压。 同时、输出代码0xD70A3D 将对应于-200mV 的输入电压。
希望这有助于回答您的问题。
本文适用于 ADS1191、 ADS1192、 ADS1291、 ADS1292、 ADS1292R、 ADS1294、 ADS1294R、 ADS1296、 ADS1296R、 ADS1298、 ADS1298R、 ADS1299-4、 ADS1299-6和 ADS1299。