TotalPhase-Blog-Erlebniswelten

Direccionamiento esclavo I2C con 7, 8 y 10 bits

A menudo hay mucha incertidumbre sobre qué direcciones esclavas deben utilizarse para comunicarse con un dispositivo esclavo I2C. Por desgracia, gran parte de esta confusión se debe a que los distintos proveedores siguen convenciones de direccionamiento esclavo diferentes. 

El objetivo de este artículo es aclarar la norma de dirección esclava que utilizan todos los productos Total Phase y ayudar a los desarrolladores a determinar qué dirección esclava deben utilizar.

La especificación I2C de NXP (antes Philips) se especifica  para varios esquemas de direccionamiento esclavo. El modo por defecto del bus I2C utiliza un direccionamiento de 7 bits. El direccionamiento de 10 bits se añadió posteriormente como ampliación del modo estándar.

direccionamiento de 7 bits

Con el direccionamiento de 7 bits, la dirección del esclavo se transmite en el primer byte tras la condición de inicio. Los primeros siete bits del byte incluyen la dirección del esclavo. El octavo bit es la bandera de lectura / escritura, donde 0 indica una escritura y 1 una lectura.

slave-address-with-totalphase-figure1

direccionamiento de 7 bits: La especificación del bus I2C especifica que en el modo I2C estándar, la dirección del esclavo tiene 7 bits de longitud
la dirección del esclavo tiene 7 bits de longitud, seguidos del bit de lectura/escritura.

Todos los productos I2C de Fase Total siguen esta convención estándar. La dirección de esclavo utilizada sólo debe tener los siete bits superiores. El software del adaptador de host I2C/SPI Aardvark añade automáticamente el bit de lectura/escritura correcto en función de la transacción que se esté realizando. En el Analizador de protocolos I2C/SPI Beagle, la dirección del esclavo y el tipo de transacción se muestran en dos columnas diferentes.

Direcciones reservadas

La especificación I2C ha reservado dos conjuntos de direcciones de 8 bits, 1111XXX y 0000XXX. Estas direcciones se utilizan para fines especiales. La siguiente tabla está tomada de las Especificaciones I2C (2000).

Dirección esclavoBit de lectura/escrituraBit Descripción
000 00000Dirección de consulta general
000 00001Byte de inicio (*1)
000 0001XDirección CBUS (*2) 
000 0010XReservado para otro formato de bus(*3)
000 0011XReservado para uso futuro
000 01XXXModo Hs Código maestro
111 10XXXdireccionamiento esclavo de 10 bits
111 11XXXReservado para uso futuro

(*1) Ningún dispositivo puede acusar recibo al recibir el byte de INICIO.

(*2) La dirección CBUS se ha reservado para permitir la mezcla de dispositivos compatibles con CBUS y compatibles con el bus I2C en el mismo sistema. Los dispositivos compatibles con el bus I2C pueden no responder al recibir esta dirección.

(*3) La dirección reservada para otro formato de bus se incluye para mezclar I2C y otros protocolos. Sólo los dispositivos compatibles con el bus I2C que puedan trabajar con dichos formatos y protocolos pueden responder a esta dirección.

direcciones de 8 bits

Algunos proveedores proporcionan incorrectamente direcciones de 8 bits, que contienen el bit de lectura/escritura. Puedes saber si éste es el caso si se proporciona una dirección para escribir en la unidad esclava y otra para leer de la esclava. En este caso, utiliza sólo los siete bits superiores de la dirección.

Totalphase-slave-address-fig2

Algunos proveedores ofrecen dos direcciones esclavas incorrectas de 8 bits para su unidad, una para escribir en la unidad y otra para leer de la unidad. Sin embargo, este número de 8 bits codifica la dirección esclava de 7 bits y el bit de lectura/escritura. Como los productos Total Phase utilizan un direccionamiento de 7 bits, es importante utilizar sólo los 7 bits superiores de la dirección como dirección esclava.

 

Otra forma de determinar si un fabricante utiliza direcciones de 8 bits en lugar de 7 bits es ver si la dirección del esclavo está dentro del intervalo correcto. Todas las direcciones de 7 bits deben ser mayores que 0x07 y menores que 0x78 (120). Si tu dirección esclava queda fuera de este rango, probablemente el vendedor ha especificado una dirección de 8 bits. 

totalphase-slave-address-fig3

Rango de direcciones esclavas de 7 bits válidas. El rango de direcciones esclavas válidas de 7 bits está delimitado por dos bloques de direcciones reservadas en cada extremo del rango. Las direcciones esclavas válidas son mayores que 0x07 y menores que 0x78.

direccionamiento de 10 bits

Una de las razones por las que Total Phase decidió utilizar el direccionamiento de 7 bits en todos sus productos fue para garantizar que el direccionamiento de 10 bits pudiera manejarse correctamente. El direccionamiento de 10 bits se diseñó para ser compatible con el de 7 bits, lo que permite a los desarrolladores combinar dos tipos de dispositivos en un solo bus. Cuando se comunica con un dispositivo direccionado a 10 bits, se utiliza la dirección especialmente reservada para indicar si se está utilizando el direccionamiento a 10 bits.

Totalphase-slave-address-10-bit

direccionamiento de 10 bits. Con el direccionamiento de 10 bits, la dirección del esclavo se envía en los dos primeros bytes. El primer byte comienza con la dirección especial reservada 1111 0XX, que indica que se utiliza el direccionamiento de 10 bits. Los 10 bits de la dirección se codifican en los 2 últimos bits del primer byte y en los 8 bits completos del segundo byte. El 8º bit del primer byte contiene la bandera de lectura/escritura como en el direccionamiento de 7 bits.

 

Si se especifica una dirección de 10 bits al utilizar el adaptador host I2C / SPI Aardvark, el software se asegurará de que se envían los bits correctos. El programador no necesita tomar ninguna medida especial para enviar los datos de dirección correctos. El analizador de protocolos Beagle I2C / SPI detecta automáticamente las direcciones esclavas de 10 bits en los datos capturados y muestra la información correctamente

Herramientas de desarrollo I2C

Adaptador de host I2C/SPI AardvarkAdaptador de host I2C/SPI Aardvark
Adaptador de host I2C/SPI Aardvark
TP240141
El adaptador de host I2C/SPI Aardvark es una herramienta innovadora para su uso con sistemas de bus I2C y SPI.

309,00 €*
Beagle I2C/SPI Protokoll Analyzer - Total Phase
Analizador de protocolos I2C/SPI Beagle
TP320121
El Analizador de protocolos I2C/SPI Beagle es un adaptador de host de bus I2C y SPI rápido y potente a través de USB

369,00 €*
Plataforma universal Promira I2C/ SPI/ eSPI
TP500110-S
La plataforma universal I2C/SPI/eSPI Promira puede utilizarse para una amplia gama de aplicaciones

Variantes de 900,00 €*
1.060,00 €*