以 AD7768-4 为例:
bash
从DOUT0接收的32位数据:
┌────────┬────────────────────────┐
│ Header │ ADC Data │
│ 8 bits │ 24 bits │
└────────┴────────────────────────┘
[31:24] [23:0]
Bit 31 : ERROR_FLAGGED
Bit 30 : Filter not settled
Bit 29 : Repeated data
Bit 28 : Filter type
Bit 27 : Filter saturated
Bit [26:24]: Channel ID[2:0]
Bit [23:0] : 24位ADC数据(补码)
bash
AD7768-4使用24位补码表示:
正数:0x000000 到 0x7FFFFF
(0 到 +8388607)
负数:0x800000 到 0xFFFFFF
(-8388608 到 -1)
零点:0x000000
满量程正:0x7FFFFF (+FSR)
满量程负:0x800000 (-FSR)
bash
# 标准的电压转换公式
/*
* AD7768-4电压转换公式:
*
* V_in = (ADC_Code / 2^23) × V_ref
*
* 其中:
* - ADC_Code: 24位补码值(-8388608 到 +8388607)
* - 2^23 = 8388608(24位ADC的半满量程)
* - V_ref: 参考电压(通常为2.5V或5V)
*/
// 简化公式
V_in = (ADC_Code / 8388608.0) × V_ref
不同参考电压下的LSB值
| 参考电压 | LSB值 | 量程 |
|---|---|---|
| 2.5V | 298 nV | ±2.5V |
| 5.0V | 596 nV | ±5.0V |
c
LSB = V_ref / 8388608
例如:V_ref = 2.5V
LSB = 2.5V / 8388608 ≈ 298 nV