bus i2c bus serie síncrono. (+-) sda: datos slc: reloj 0..100kbits/s (pero también 0..400kbits/s y...

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

Upload: sergio-villarreal

Post on 23-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

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

Bus I2C

Bus serie síncrono. (+-)

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

Page 2: Bus I2C Bus serie síncrono. (+-) SDA: datos SLC: reloj 0..100kbits/s (pero también 0..400kbits/s y 3.4Mbits/s)
Page 3: 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

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

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.

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

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

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

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

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

TRANSACCIÓN.

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

DETALLE

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

SINCRONIZACIÓN.

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

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"

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

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".

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

ARBITRAJE

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

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

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

Transmisión simple. En un solo sentido

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

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

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

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

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

Direccionamiento.

Direcciones de dispositivo de 7 bits.

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

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.

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

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?

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

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).

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

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.

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

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.

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