I2C

De Proyecto Butiá
Revisión del 22:33 11 dic 2016 de Maxik (Discusión | contribuciones) (Ejemplo de uso)

Saltar a: navegación, buscar

Autores

  • Federico Kauffman
  • Maximiliano Kotvinsky
  • Andrés Vasilev

Protocolo I2C

Lo primero que ocurre en un bus I2C es que el dispositivo maestro envía una secuencia de inicio (StartI2C). Esto alerta a los dispositivos esclavos, poniéndolos a la espera de una transacción. Éstos quedan atentos para ver si se trata de una solicitud para ellos.

A continuación el dispositivo maestro envía la dirección de dispositivo (WriteI2C con la dirección y el bit de R/W). El dispositivo esclavo que posee esa dirección continuará con la transacción, y los otros ignorarán el resto de los intercambios, esperando la próxima secuencia de inicio.

Una vez que el maestro ha enviado la dirección del dispositivo en el bus I2C, puede enviar (WriteI2C con el byte a enviar) ahora el byte de datos. El dispositivo maestro puede seguir enviando bytes al esclavo consecutivamente (WriteI2C consecutivos).

De forma análoga podrá leer bytes enviados por el esclavo (ReadI2C).

Cuando el maestro ha terminado de escribir datos en el esclavo, envía una secuencia de parada (StopI2C) que concluye la transacción.

Al momento de indicar la dirección del esclavo para comenzar la comunicación, se debe indicar si se desea realizar una lectura o una escritura en el bit menos significativo (ver Sección Bloques-WriteI2C). Por lo que para realizar una lectura luego de haber realizado una escritura, se deberá iniciar la comunicación nuevamente con el bit apropiado.

Paleta

Paleta i2c.png

Esta paleta le agrega el soporte del bus I²C a la placa USB4Butiá.

Bloques

  • Openi2c.png

OpenI2C

Inicializa el módulo I2C.



  • Starti2c.png


StartI2C

Es el mensaje que inicia la comunicación I2C.

Envía la condición de Start de I2C, y espera hasta que la secuencia de señal de Start termine.



  • Stopi2c.png

StopI2C

Es el mensaje que finaliza la comunicación I2C.

Envía la condición de Stop de I2C, y espera hasta que la secuencia de señal de Stop termine.



  • Closei2c.png

CloseI2C

Finaliza el módulo I2C.



  • Writei2c.png

WriteI2C

Escribe un solo byte en el bus I2C.

También es utilizado para enviar la dirección del esclavo al que se desea comunicar.

La dirección se debe escribir de la siguiente forma en el byte a enviar:

I2c-address.png



  • Readi2c.png

ReadI2C

Lee un solo byte del bus I2C.

Para leer varios bytes, se envía un AckI2C luego de cada byte leído.

Cuando se lee el último byte se debe enviar un NotAckI2C.

Esto aplica para leer un solo byte, se envía un NotAckI2C luego de la lectura del byte.



  • Acki2c.png

AckI2C

Envía un acknowledgement de que el byte se leyó, y se procederá a leer otro.



  • Notacki2c.png

NotAckI2C

Envía un negative acknowledgement para indicar que se leyó el byte, y se finalizará la lectura.

Descarga e instalación

Como instalarlo:
1- Descargar el archivo: i2c_plugin.zip
2- Descomprimir el archivo.
3- Copiar todo el contenido a la carpeta "plugins" que se encuentra dentro de la actividad TurtleBots.

Ejemplo de uso

Ejemplo de comunicación con placa Arduino

Notas

Trabajo a futuro

Configuración de la frecuencia de trabajo.