¿Que es I²C?
Es un bus de comunicaciones en serie. Su nombre viene de Inter-Integrated Circuit (Inter-Circuitos Integrados).
Es un bus muy usado en la industria, principalmente para comunicar micro-controladores y sus periféricos en sistemas integrados.
La principal característica de I²C es que utiliza dos líneas para transmitir la información: una para los datos y por otra la señal de reloj. También es necesaria una tercera línea, pero esta sólo es la referencia (masa). Como suelen comunicarse circuitos en una misma placa que comparten una misma masa esta tercera línea no suele ser necesaria.
Las líneas se llaman:
- SDA (System Data) permiten comunicarse a los dispositivos mediante datos.
- SCL (System Clock) sincroniza el sistema atravez de los pulsos de reloj.
- GND tierra
Las dos primeras líneas son drenador abierto, por lo que necesitan resistencias de pull-up (resistencias de 10K ohmios.
Comunicación mediante I²C
Se definen los tipos básicos de mensajes, cada uno de los cuales comienza con una START y termina con un STOP:
Mensaje único donde un maestro escribe los datos en un esclavo.
Mensaje único donde un maestro lee datos de un esclavo.
En la siguiente imagen podemos encontrar el proceso de comunicación y recepción de datos mediante el bus I2C.
Siguiendo la estructura de comunicación de la imagen anterior podemos decir:
La estructura de la comunicación básica es la siguiente:
- START condición (Maestro)
- 7 Bits de direccion de esclavo (Maestro)
- 1 Bit de RW, 0 es Leer y 1 Escribir. (Maestro)
- 1 Bit de Acknowledge (Esclavo)
- Byte de dirección de memoria (Maestro)
- 1 Bit de Acknowledge (Esclavo)
- Byte de datos (Maestro/Esclavo (Escritura/Lectura))
- 1 Bit de Acknowledge (Esclavo/Maestro (Escritura/Lectura))
- STOP condición (Maestro)
Este bit es una respuesta del esclavo al maestro.
Diseño de placa I²C
Isis-Proteus:
Como podemos observar la placa a diseñar constara de:
- Ribbon de 40 pines.
- Modulo ADC/DAC.
- Reloj-calendario.
- Teclado matricial.
- Ribbon de 40 pines
Este nos permitirá tener la comunicación con el PIC 18F4550 y mediante el cual podremos comunicar nuestra placa con distintos componentes.
- Modulo ADC/DAC
El ADC/DAC de 8 bit nos permite convertir señales analógicas a señales digitales y a su contrario, el chip utilizado para realizar la tarea es el PCF8591.
Aquí os dejo una pequeña explicación del funcionamiento del PCF8591 junto a su PDF:
El PCF8591 es un chip único, de una sola fuente de alimentación de bajo 8-bit CMOS dispositivo de adquisición de datos con cuatro analógica entradas, una salida analógica y una interfaz serial I2C-bus.
Tres pines de dirección A0, A1 y A2 se utilizan para la programación de la dirección de hardware, lo que permite el uso de hasta ocho dispositivos conectados al bus I2C sin hardware adicional. Dirección, control y datos hacia y desde el dispositivo se transfieren en serie a través de la línea de dos bidireccional I2C-bus.
- Reloj-calendario
Aquí os dejo una pequeña explicación del funcionamiento del PCF8583 junto a su PDF:
- Teclado matricial
El teclado que vamos a utilizar para nuestro diseño esta formado por 12 pulsadores dobles , 7 resistencias las cuales corresponde a una columna y fila , mediante ellas obtendremos una serie de voltajes que utilizaremos para saber que botón pulsamos.Como en anteriores dispositivos utilizamos un jumper para activar/desactivar el dispositivo.
Ares-Proteus:
Una vez terminado el proceso de diseño en Isis-proteus procedemos a Ares-proteus donde diseñaremos nuestra placa como resultado final.
Como ya sabéis tendremos que exportar nuestro diseño de Isis a Ares en la barra de menús buscamos El logotipo de ares ( como en la imagen).
Una vez en Ares procederemos a la comprobación de todos los componentes. Si tenemos que crear alguno como en esta placa ( pila de 3,6 voltios ) procedemos a su creación antes de empezar con el diseño de esta.
La creación de un componente y huella tanto en Isis como en Ares lo podemos encontrar en mi blog.
Os enseño mi placa una vez terminada :
Pero antes de ello os indicare como realizar el rutado manual de las pistas:
Como podemos observar en la imagen anterior tenemos puntos sin unir para esto realizaremos los siguientes pasos y mediante los cuales podremos aplicarlos a todo nuestros diseño.
Proceso de rutado manual:
- Elijemos en la barra de herramientas de la parte izquierda crear una pista, decidimos su ancho ( como mínimo nuestro ancho de pista ser de T20 ) yo utilizare T40, y por ultimo elegimos la pista en que cara se va a implementar TOP o BOTTOM Copper.
- El siguiente paso sera pulsar sobre el Pad a unir del componen y arrastra la pista emergente hasta el Pad con el cual queremos unir nuestra pista.
- Si tenemos que realizar un cambio de vía pulsaremos doble-clic y lo realizara automáticamente el cambio de pista por ejemplo: tenemos una pista en Bottom Cooper y necesitamos cambiar de pista realizamos doble-clic y se efectuara el cambio de pista mediante un cambio de vía.
Una ves terminado nuestra placa podremos observar el diseño en 3D en la barra de menú buscamos Output/Diseño 3D.
Mi placa en 3D:
Estos son los diseños de Isis y Ares para descargar: