Bus I2C Bus serie síncrono. (+-) SDA: datos SLC: reloj 0..100kbits/s (pero también 0..400kbits/s y...

Post on 23-Jan-2016

219 views 0 download

Transcript of Bus I2C Bus serie síncrono. (+-) SDA: datos SLC: reloj 0..100kbits/s (pero también 0..400kbits/s y...

Bus I2C

Bus serie síncrono. (+-)

SDA: datos SLC: reloj 0..100kbits/s(pero también 0..400kbits/s y 3.4Mbits/s)

AMBAS: conectadas a Vcc con resistencia (pull-up) Estado inactivo (1)

Combinación de entradas AND

MAESTRO: iniciador de transacción (transmisor/receptor) admite múltiples maestros

ESCLAVO: (transmisor/receptor) obviamente.

PAQUETE: 8 bits (MSB primero)cada bit durante el semiperiodo alto del reloj (SLC)

(cambios en el semiperiodo bajo)

ACK: 1 bit, reconocimiento del receptor. (0, reconocido. 1 no reconocido - implica final de transacción-)

(wait): se induce un estado wait manteniendo SLC a cero el tiempo necesario.

Establecimiento y cierre de una transacción.

START: situación especial. Flanco de bajada durante el semiperiodo alto de SLC. Inicio de transacciónSTOP: situación especial. Flanco de subida durante el semiperiodo alto de SLC. Final de transacción

Condiciones de transmisión.

Dato válido durante la fase activa del reloj (SCL)

Cambio de SDA durante la fase inactiva de (SCL)

Reconocimientos: 0 Dato reconocido

1 Dato no reconocido

TRANSACCIÓN.

DETALLE

SINCRONIZACIÓN.

ARBITRAJE

SCL es resultado de un AND de las señales de reloj de los maestros.

Sincronizar: empezar a contar a partir de la detección de un flanco de bajada.

SDA es igualmente resultado de un AND de las líneas de datos de los maestros

Competición. Vence el que active un "0" frente al que active un "1"

Arbitraje

1º El bus está libre porque la línea SCL está a 1 de forma permanente

2º Casualmente dos maestros generan un START en instantes lo suficientemente próximos para que no se percaten de ello. Comienza el proceso de arbitraje.

3º Cada uno va depositando en la línea SDA sus datos y comprobando que se mantienen allí.

4º Si en algún momento detectan que el dato leído no se corresponde con el que ellos depositaron se consideran perdedores y abandonan el uso del bus.

Nota: Esta competición debería resolverse antes de que uno de los contendientes generara un STOP o repitiera un START pues es imposible resolver un conflicto entre un bit de datos y una de estas "situaciones especiales".

ARBITRAJE

Formato de la transacción:

1-Señal de START2-Un paquete que contiene la dirección del dispositivo esclavo invocado. 7 bits3-Un bit de dirección R/W#4-Un bit de reconocimiento5-Un paquete de datos (8 bits)6-Un bit de reconocimiento....N- Señal de STOP

Transmisión simple. En un solo sentido

Transmisión que implica ambos sentidos: Lectura seguida de escritura o escritura seguida de lectura

Situaciones de finalización de una transacción:

Lectura

El maestro genera un STOP como reconocimiento (en lugar de) del último paquete recibido

El maestro reconoce el último paquete y genera un STOP

EL maestro reconoce o no el ultimo paquete y genera un nuevo START

Escritura

El esclavo no reconoce el último paquete. El maestro genera un STOP (Transacción errónea)

El maestro genera un STOP o un START tras el último reconocimiento

Direccionamiento.

Direcciones de dispositivo de 7 bits.

Direcciones reservadas: 0000xxx 1111xxx

Llamada general: 00000000AXXXXXXXBA Todos los dispositivos esclavos habilitados para ello responderán a esta llamada. Servirá obligarlos a realizar alguna función de inicialización

START BYTE (00000001A) Se trata de una dirección inútil a la que no pueden responder ningún dispositivo colgado al bus, así que es el propio maestro quién activa el bit de reconocimiento.

Secuencia de iniciación recomendada con los microcontroladores que no disponen de hardware I2C

START (S)START BYTE (00000001)ACKSTART(Sr)

el objetivo es propiciar que el microcontrolador pueda realizar un polling ralentizado hasta que detecte el START BYTE momento en el cual aceleraría la exploración para detectar el START ¿con objeto de sincronizarse?

Convertidor digital/analógico y analógico/digital. PCF 8591

Dispositivo convertidos digital analógico y viceversa con interfaz I2C. -Conversión digital a analógico de 8 bits mediante un divisor de tensión resistivo (a partir de una tensión de referencia proporcionada externamente). -Conversión analógica a digital: (cuatro entradas analógicas que pueden combinarse mediante programación como entradas diferenciales).

Conversión mediante el método de aproximaciones sucesivas, utilizando el convertidor Digital/Analógico (y por lo tanto las mismas tensiones de referencia).

Interfaz Bus I2C.-La dirección del dispositivo tiene cuatro bit (los más significativos) fijos (1001) -Los tres bits menos significativos programables.

(Su valor se fija activando convenientemente tres de las patillas del dispositivo (A0,A1, A2).)

Control.

-El dispositivo es programado por medio de un registro de control. *Selección de la entrada analógica de la cual se desea obtener la señal *Ccómo se quiere combinar estas señales (directas o combinadas con otras entradas para dar una señal diferencial). *Activación/des de la salida analógica (al utilizarse el conversor D/A en la conversión A/D esta salida puede estar dando valores no deseados). *Permite la opción de cambiar de entrada analógica tras cada conversión.

Proceso.Conversion D/A. Formato del mensaje:

)Dirección del dispositivo)Contenido del registro de control)(y siguientes) valores a convertir en señal analógica

(El valor analógico permanece estable hasta la siguiente conversión.)

Conversión A/D. -Se procede a leer directamente del dispositivo. El primer valor leído es resultado de una conversión previa (si el dispositivo acaba de ser reseteado el valor devuelto es 80h). El acto de la lectura genera una nueva conversión cuyo resultado se obtendrá en el siguiente byte leído.