Está en la página 1de 3

Unitat 1: Introducción al I2C bus

Buses en serie con interfaces con microcontroladores


Comunicación SPI (Serial Parallel Interface)

El bus SPI consta de:

• Una señal de clock.


Por cada flaco de reloj enviamos un dato por una de estas líneas. La velocidad del reloj
será quien indique la velocidad de transmisión.
• (MOSI) Una línea para la transmisión entre el máster y el esclavo.
• (MISO) Una línea para la transmisión del esclavo al master.
• Una señal para activar o desactivar la comunicación.

Este tipo de bus es muy sencillo de utilizar, todos los microcontroladores lo tienen o lo pueden
controlar.

Introducción al bus I2C


A principios de los 80, Philips estableció un nuevo bus (bus I2C) que inicialmente era para conectar
memorias, pero actualmente conectan todo tipo de dispositivos. Por lo tanto, se ha convertido en
los buses estándar para comunicación con sensores.

Características del I2C

• Con referencia a la velocidad, puede conseguir velocidades altas (estándar son 100kbps,
pero también encontramos dispositivos con 400 kbps o 3.4 Mbps)
• La principal ventaja es que solo necesita dos líneas (dos bits del microcontrolador)
• También se pueden conectar varios dispositivos a la vez.

La idea es la siguiente:

• (SDA) Línea de datos


• (SCL) Línea de reloj

Ambas líneas se conectan a cada dispositivo que se quieran conectar (y a su vez al


microcontrolador, el master, que también controlara el reloj, por lo tanto la transmisión), donde
cada dispositivo tiene una dirección única (dirección que vamos a utilizar para leer o escribir datos
de cada uno de los esclavos).
Tenemos dos resistencias de pull up para todo el bus (no es necesario que haya dos para cada
dispositivo). Cuando se establece la comunicación master – esclavo (indiferentemente de la
dirección de comunicación), lo que hacen es cortocircuitar para que fluya corriente.

Vemos dos operaciones:

• Etapa del clock o del dato vemos un transistor que cuando lo activamos empieza a fluir
corriente y vemos una bajada de la tensión
• Cuando desactivamos la comunicación, la línea de tensión del transistor vuelve a subir

Estas transmisiones no son inmediatas, sino que dependerán de la capacidad parasita (cuantos
mas dispositivos, mayor capacidad parasita, mas tardara en hacer esta subida o bajada).

Para calcular las resistencias de pull up podemos hacerlo según dos criterios:

• Criterio del consumo que determinara el valor mínimo de la resistencia. Si montamos


una resistencia mayor a la calculada la corriente será inferior, pero si es mas pequeña,
circula mas corriente y podemos dañar los componentes.
𝑉𝑑𝑑 − 𝑉𝑂𝐿 (𝑚𝑎𝑥)
𝑅𝑝 (𝑚𝑖𝑛) =
𝐼𝑂𝐿
• Criterio de la capacidad parasita sabemos que la tensión es una función exponencial,
pero dependemos de ella (Time rise).
𝑇𝑟𝑖𝑠𝑒
𝑅𝑝 (𝑚𝑎𝑥) =
0.846 · 𝐶

Direcciones
Cada fabricante del dispositivo tiene una dirección I2C y lo habitual es que sean direcciones de 7
bits (o 10 bits en modo extenso).

• De la dirección de 7 bits los 4 primeros indican el tipo de dispositivo y los 3 mas bajos
generalmente se utilizan para configurar cuantos dispositivos de estos están conectados.

Terminología del bus


SCL y SDA es bidireccional:

• F (free) cuando las dos líneas, la SDA y SCL, están en alta impedancia.
• S (Start) o R (Restart) la linia SDA pasa de nivel alto a nivel bajo mientras que SCL se
mantiene en nivel alto.
Esto nos indica que se esta iniciando una transmision
• C (Change) cuando cambiamos los datos de la línea. Cuando el SCL esta en nivel bajo.
• D (Data) cuando el SCL esta en nivel alto y leemos la línea del SDA
• P (Stop) cuando finalizamos la comunicación. La línea SDA pasa de nivel bajo a nivel alto
mientras el SCL se mantiene en nivel alto.

Cada vez que enviamos un dato, enviamos una secuencia de 8 bits, una vez finalizados estos 8
bits, se añade un bit final de acknolegment (ACK) si este es 0 es que no vamos a enviar mas
datos, pero si es 1 significa que se continua la comunicación.

Direcciones I2C

Hay algunas direcciones (de 7 bits, como se ha comentado antes) que tienen los 4 bits altos
configurados con funciones especiales:

• 0000000 General Call Address


• 0000001 Null (CBUS) Address
• 1111XXX Adress extensión
• 1111111 Address extensión – nest byte are the actual address

Proceso de escritura del master a un esclavo

Primero el master envía la secuencia de inicio (start), después envía la dirección de 7 bits + un
bit más bajo adicional que indicara con ‘0’ escritura i ‘1’ lectura. Para final la comunicación se
envia la secuencia de stop.

Lectura desde un esclavo

El master envía la secuencia de inicio, envía la dirección del dispositivo + el bit de lectura, lee los
datos de los dispositivos (con el ACK sabremos si ha acabado o no) y acaba con la secuencia de
stop.

También podría gustarte