Estoy tratando de entender el formato de datos I2C de una ACD de 24 bits (LTC2485).
La hoja de datos dice que devuelve 4 bytes (32 bits enteros), pero no está claro dónde se encuentran los 24 bits que busco.
Esto es lo que no entiendo:
El papel de los bits 31 y 30
Los dos bits más significativos (30, 31) se utilizan para indicar condiciones de rango superior o inferior. También se utilizan para indicar en qué "cuarto" del rango completo se encuentra la señal.
La documentación dice: si se establece el bit 31, entonces la señal está entre 0V y + Vref; de lo contrario, la señal está entre -Vref y 0V.
Entiendo esto como: si la señal está entre 0V y + Vref, el código está entre 2 ^ 23 y 2 ^ 24 y si la señal está entre -Vref y 0V el código está entre 0 y 2 ^ 23.
Se puede usar un razonamiento similar para el bit 30 y Vref / 2. Así es como funciona el número binario. Ambos bits se pueden usar para indicar en qué "quater" del rango completo está la señal.
Forme esto, supongo que el bit 31 es el bit 23 de la señal, el bit 30 corresponde al bit 22, y así sucesivamente. Por lo tanto, los tres primeros bytes deberían ser mi código de 24 bits.
Sin embargo, la documentación dice más adelante:
El segundo bit es el bit más significativo (MSB) del resultado.
Lo que indicaría que el resultado se desplaza en un bit. Pero más adelante:
La función de estos dos bits se resume en la Tabla 1. Los siguientes 24 los bits contienen los resultados de conversión en formato de complemento binario de dos. Los seis bits restantes son sub LSB por debajo del nivel de 24 bits.
Lo que indicaría que el resultado se desplaza dos bits y que los bits 31 y 30 son redundantes (consulte mi explicación más arriba).
Y por último, el código de ejemplo proporcionado, utiliza ... 32 bits en lugar de 24.
signed int32 x;
// Reading X
x ^= 0x80000000;
voltage = (float) x;
voltage = voltage * 5.0 / 2147483648.0;// Multiply by Vref, divide by 2^31
Como resultado, me siento perdido. Dados los 4 bytes que recibo (llamémoslos bytes 0 a 3 por orden de recuperación), ¿cómo obtengo el voltaje medido por el ADC? ¿Cuál es la función de "Los seis bits restantes son sub LSB por debajo del nivel de 24 bits"?
Gracias por leerme. La documentación de la pieza es disponible aquí . Las explicaciones sobre el formato de datos I2C están en la página 15.