Está en la página 1de 53

Instituto

Tecnolgico de
Durango
Programacin Avanzada
Ingeniera Mecatrnica
Trabajo: Comunicacin i2C y 485
Catedrtico:
Hernndez Marines Mario Gerardo
Alumno:
Miguel Alejandro Pulido Martnez
13040438

Victoria de Durango a 28 de Abril del 2016

Instituto Tecnolgico de Durango

ndice
Comunicacin I2C.............................................................................3
Introduccin..................................................................................................... 3
Descripcin de las seales............................................................................... 3
Definicin de trminos:.................................................................................... 5

Programacin avanzada

Instituto Tecnolgico de Durango

La comunicacin en ms detalle......................................................................6
Protocolo de programacin para el bus I2C.....................................................7
Comunicacin 485..........................................................................10
Introduccin................................................................................................... 10
Por qu usar este protocolo?........................................................................10
Qu es el protocolo RS-485?........................................................................11
Comunicacin RS-485 a cuatro hilos (full-duplex)..........................................11
Comunicacin RS-485 a dos hilos (half-duplex).............................................12
La Comunicacin RS-485 en Modo Full Duplex..............................................13

Programacin avanzada

Instituto Tecnolgico de Durango

Programacin avanzada

Instituto Tecnolgico de Durango

Comunicacin I2C
Programacin avanzada

Instituto Tecnolgico de Durango

Introduccin
El bus I2C, un estndar que facilita la comunicacin entre
microcontroladores, memorias y otros dispositivos con cierto nivel de
"inteligencia", slo requiere de dos lneas de seal y un comn o masa.
Fue diseado a este efecto por Philips y permite el intercambio de
informacin entre muchos dispositivos a una velocidad aceptable, de
unos 100 Kbits por segundo, aunque hay casos especiales en los que el
reloj llega hasta los 3,4 MHz.

Programacin avanzada

Instituto Tecnolgico de Durango

La metodologa de comunicacin de datos del bus I2C es en serie y


sincrnica. Una de las seales del bus marca el tiempo (pulsos de reloj) y
la otra se utiliza para intercambiar datos.

Descripcin de las seales


o SCL (System Clock) es la lnea de los pulsos de reloj que
sincronizan el sistema.

Programacin avanzada

Instituto Tecnolgico de Durango

o SDA (System Data) es la lnea por la que se mueven los


datos entre los dispositivos.
o GND (Masa) comn de la interconeccin entre todos los
dispositivos "enganchados" al bus.
Las lneas SDA y SCL son del tipo drenaje abierto, es decir, un estado
similar al de colector abierto, pero asociadas a un transistor de efecto de
campo (o FET). Se deben polarizar en estado alto (conectando a la
alimentacin por medio de resistores "pull-up") lo que define una

Programacin avanzada

Instituto Tecnolgico de Durango

estructura de bus que permite conectar en paralelo mltiples entradas y


salidas.

Programacin avanzada

Instituto Tecnolgico de Durango

El diagrama es suficientemente autoexplicativo. Las dos lneas del bus


estn en un nivel lgico alto cuando estn inactivas. En principio, el
nmero de dispositivos que se puede conectar al bus no tiene lmites,
aunque hay que observar que la capacidad mxima sumada de todos los
dispositivos no supere los 400 pF. El valor de los resistores de
polarizacin no es muy crtico, y puede ir desde 1K8 (1.800 ohms) a 47K
(47.000 ohms). Un valor menor de resistencia incrementa el consumo de
los integrados pero disminuye la sensibilidad al ruido y mejora el tiempo
de los flancos de subida y bajada de las seales. Los valores ms
comunes en uso son entre 1K8 y 10K.

Programacin avanzada

Instituto Tecnolgico de Durango

Habiendo varios dispositivos conectados sobre el bus, es lgico que para


establecer una comunicacin a travs de l se deba respetar un
protocolo. Digamos, en primer lugar, lo ms importante: existen
dispositivos maestros y dispositivos esclavos. Slo los dispositivos
maestros pueden iniciar una comunicacin.
La condicin inicial, de bus libre, es cuando ambas seales estn en
estado lgico alto. En este estado cualquier dispositivo maestro puede
ocuparlo, estableciendo la condicin de inicio (start). Esta condicin se
presenta cuando un dispositivo maestro pone en estado bajo la lnea de
datos (SDA), pero dejando en alto la lnea de reloj (SCL).
Programacin avanzada

Instituto Tecnolgico de Durango

El primer byte que se transmite luego de la condicin de inicio contiene


siete bits que componen la direccin del dispositivo que se desea
seleccionar, y un octavo bit que corresponde a la operacin que se
quiere realizar con l (lectura o escritura).
Si el dispositivo cuya direccin corresponde a la que se indica en los
siete bits (A0-A6) est presente en el bus, ste contesta con un bit en
bajo, ubicado inmediatamente luego del octavo bit que ha enviado el
dispositivo maestro. Este bit de reconocimiento (ACK) en bajo le indica al
dispositivo maestro que el esclavo reconoce la solicitud y est en

Programacin avanzada

Instituto Tecnolgico de Durango

condiciones de comunicarse. Aqu la comunicacin se establece en firme


y comienza el intercambio de informacin entre los dispositivos.

Si el bit de lectura/escritura (R/W) fue puesto en esta comunicacin a


nivel lgico bajo (escritura), el dispositivo maestro enva datos al
dispositivo esclavo. Esto se mantiene mientras contine recibiendo

Programacin avanzada

Instituto Tecnolgico de Durango

seales de reconocimiento, y el contacto concluye cuando se hayan


transmitido todos los datos.

Definicin de trminos:

Maestro (Master): Dispositivo que determina los tiempos y la


direccin del trfico en el bus. Es el nico que aplica los pulsos de
reloj en la lnea SCL. Cuando se conectan varios dispositivos
maestros a un mismo bus la configuracin obtenida se denomina
"multi-maestro".
Programacin avanzada

Instituto Tecnolgico de Durango

Esclavo (Slave): Todo dispositivo conectado al bus que no tiene la


capacidad de generar pulsos de reloj. Los dispositivos esclavos
reciben seales de comando y de reloj generados desde el
maestro.

Bus libre (Bus Free): Estado en el que ambas lneas (SDA y SCL)
estn inactivas, presentando un estado lgico alto. Es el nico
momento en que un dispositivo maestro puede comenzar a hacer
uso del bus.

Programacin avanzada

Instituto Tecnolgico de Durango

Comienzo (Start): Se produce cuando un dispositivo maestro


ocupa el bus, generando la condicin. La lnea de datos (SDA)
toma un estado bajo mientras que la lnea de reloj (SCL)
permanece alta.

Parada (Stop): Un dispositivo maestro puede generar esta


condicin, dejando libre el bus. La lnea de datos y la de reloj
toman un estado lgico alto.

Programacin avanzada

Instituto Tecnolgico de Durango

Dato vlido (Valid Data): Situacin presente cuando un dato


presente en la lnea SDA es estable al tiempo que la lnea SCL est
a nivel lgico alto.

Formato de Datos (Data Format): La transmisin de un dato a


travs de este bus consiste de 8 bits de dato (1 byte). A cada byte
transmitido al bus le sigue un noveno pulso de reloj durante el cual
el dispositivo receptor del byte debe generar un pulso de
reconocimiento.

Programacin avanzada

Instituto Tecnolgico de Durango

Reconocimiento (Acknowledge): El pulso de reconocimiento,


conocido como ACK (del ingls Acknowledge), se logra colocando
la lnea de datos a un nivel lgico bajo durante el transcurso del
noveno pulso de reloj.

Direccin (Address): Todo dispositivo diseado para funcionar en


este bus posee su propia y nica direccin de acceso,
preestablecida por el fabricante. Hay dispositivos que permiten
definir externamente parte de la direccin de acceso, lo que
habilita que se pueda conectar en un mismo bus un conjunto de

Programacin avanzada

Instituto Tecnolgico de Durango

dispositivos del mismo tipo, sin problemas de identificacin. La


direccin 00 es la denominada "de acceso general"; a sta
responden todos los dispositivos conectados al bus.

Lectura/Escritura (Bit R/W): Cada dispositivo tiene una direccin


de 7 bits. El octavo bit (el menos significativo) que se enva
durante la operacin de direccionamiento, completando el byte,
indica el tipo de operacin a realizar. Si este bit es alto el
dispositivo maestro lee informacin proveniente de un dispositivo
esclavo. Si este bit es bajo, el dispositivo maestro escribe
informacin en un dispositivo esclavo.
Programacin avanzada

Instituto Tecnolgico de Durango

Si estamos hablando de comunicacin a dos hilos entre


microcontroladores PIC, el maestro es el dispositivo que general la seal
de reloj y da principio a la transmisin de datos, pero si alguno de ellos
tiene la capacidad de asumir el rol de maestro, este puede configurarse
y as tener una red multimaestro.

La comunicacin en ms detalle

Programacin avanzada

Instituto Tecnolgico de Durango

Cuando el dispositivo maestro quiere comunicarse con un esclavo,


produce una secuencia de inicio en el bus. La secuencia de inicio es una
de las dos secuencias especiales que se han definido en el bus I2C; la
otra es la secuencia de parada. Las secuencias de inicio y la de parada
son especiales porque son los dos nicos casos en que se permite que la
lnea de datos (SDA) cambie cuando la lnea de reloj (SCL) est alta.
Cuando se estn transmitiendo datos, la lnea SDA debe permanecer
estable, y jams cambiar, mientras la lnea SCL est alta. Las secuencias
de inicio y de parada sealan el comienzo y el final de una transaccin
con los dispositivos esclavos.

Programacin avanzada

Instituto Tecnolgico de Durango

Los datos se transfieren en secuencias de 8 bits. Estos bits se colocan en


la lnea SDA comenzando por el bit de ms peso (o ms significativo).
Una vez puesto un bit en SDA, se lleva la lnea SCL a alto. Debemos
recordar que el chip no puede llevar la lnea a un estado alto, en
realidad, lo que hace es "soltarla", y el que la pone en nivel lgico alto es
el resistor de polarizacin. Por cada 8 bits que se transfieren, el
dispositivo que recibe el dato enva de regreso un bit de reconocimiento,
de modo que en realidad por cada byte de dato se producen 9 pulsos
sobre la lnea SCL (es decir, 9 pulsos de reloj por cada 8 bits de dato). Si
el dispositivo que recibe enva un bit de reconocimiento bajo, indica que

Programacin avanzada

Instituto Tecnolgico de Durango

ha recibido el dato y que est listo para aceptar otro byte. Si retorna un
alto, lo que indica es que no puede recibir ms datos y el dispositivo
maestro debera terminar la transferencia enviando una secuencia de
parada.

Programacin avanzada

Instituto Tecnolgico de Durango

Cuando el maestro termina de enviar sus datos, el esclavo enva una


seal de reconocimiento ACK.

Protocolo de programacin para el bus I2C


Lo primero que ocurre en un bus I2C es que el dispositivo maestro enva
una secuencia de inicio. Esto alerta a los dispositivos esclavos,
ponindolos a la espera de una transaccin. stos quedan atentos para
ver si se trata de una solicitud para ellos. A continuacin el dispositivo
maestro enva la direccin de dispositivo. El dispositivo esclavo que
posee esa direccin continuar con la transaccin, y los otros ignorarn
el resto de los intercambios, esperando la prxima secuencia de inicio.
Programacin avanzada

Instituto Tecnolgico de Durango

Habiendo direccionado ya el dispositivo esclavo, lo que debe hacer


ahora el maestro es enviar la ubicacin interna o nmero de registro
desde el que desea leer o al que va a escribir. La cantidad depende,
obviamente, de qu dispositivo es y de cuntos registros internos posee.
Algunos dispositivos muy simples no tienen ninguno, pero la mayora s
los poseen.
Siguiendo con el ejemplo del CMPS03, ste posee 16 ubicaciones
internas, numeradas desde el 0 al 15. Otro dispositivo, el medidor
ultrasnico de distanciaSRF08, tiene 36 registros.

Programacin avanzada

Instituto Tecnolgico de Durango

Una vez que el maestro ha enviado la direccin del dispositivo en el bus


I2C y la direccin del registro interno del dispositivo, puede enviar ahora
el byte o bytes de datos. El dispositivo maestro puede seguir enviando
bytes al esclavo, que normalmente sern puestos en registros con
direcciones sucesivas, ya que el esclavo incrementa automticamente la
direccin del registro interno despus de recibir cada byte. Cuando el
maestro ha terminado de escribir datos en el esclavo, enva una
secuencia de parada que concluye la transaccin.
Escritura en un dispositivo esclavo:

Programacin avanzada

Instituto Tecnolgico de Durango

1. Enviar una secuencia de inicio


2. Enviar la direccin de dispositivo con el bit de lectura/escritura en
bajo
3. Enviar el nmero de registro interno en el que se desea escribir
4. Enviar el byte de dato
5. [Opcionalmente, enviar ms bytes de dato]
6. Enviar la secuencia de parada
Como ejemplo, veamos un SRF08, que tiene una direccin de bus fijada
en fbrica de 0xE0. Para comenzar una medicin de distancia con el

Programacin avanzada

Instituto Tecnolgico de Durango

SRF08 se debe escribir 0x51 en el registro de comando, ubicado en la


direccin interna 0x00. La secuencia es la que sigue:
1. Enviar una secuencia de inicio
2. Enviar 0xE0 (La direccin de dispositivo del SRF08 con el bit de
lectura/escritura en bajo)
3. Enviar 0x00 (direccin interna del registro de comando)
4. Enviar 0x51 (el comando para comenzar la medicin del SRF08)
5. Enviar la secuencia de parada
Lectura desde un dispositivo esclavo:

Programacin avanzada

Instituto Tecnolgico de Durango

Esta operacin es algo ms complicada, pero no demasiado. Antes de


leer datos desde el dispositivo esclavo, primero se le debe informar
desde cul de sus direcciones internas se va a leer. De manera que una
lectura desde un dispositivo esclavo en realidad comienza con una
operacin de escritura en l. Es igual a cuando se desea escribir en l:
Se enva la secuencia de inicio, la direccin de dispositivo con el bit de
lectura/escritura en bajo y el registro interno desde el que se desea leer.
Ahora se enva otra secuencia de inicio nuevamente con la direccin de
dispositivo, pero esta vez con el bit de lectura/escritura en alto. Luego se

Programacin avanzada

Instituto Tecnolgico de Durango

leen todos los bytes necesarios y se termina la transaccin con una


secuencia de parada.
Volviendo al ejemplo del mdulo de brjula CMPS03, veamos cmo se
lee el registro de ngulo:
1. Enviar una secuencia de inicio
2. Enviar 0xC0 (La direccin de dispositivo del CMPS03 con el bit de
lectura/escritura en bajo)
3. Enviar 0x01 (direccin interna del registro de ngulo en valor 0255)

Programacin avanzada

Instituto Tecnolgico de Durango

4. Enviar una secuencia de inicio (inicio reiterado)


5. Enviar 0xC1 (La direccin de dispositivo del CMPS03 con el bit de
lectura/escritura en alto)
6. Leer un byte de dato desde el CMPS03
7. Enviar la secuencia de parada

Programacin avanzada

Instituto Tecnolgico de Durango

La secuencia se ver as:

Programacin avanzada

Instituto Tecnolgico de Durango

Programacin avanzada

Instituto Tecnolgico de Durango

Programacin avanzada

Instituto Tecnolgico de Durango

Comunicacin 485

Programacin avanzada

Instituto Tecnolgico de Durango

Introduccin
Est definido como un sistema de bus diferencial multipunto, es ideal
para transmitir a altas velocidades sobre largas distancias (35 Mbit/s
hasta 10 metros y 100 kbit/s en 1200 metros) y a travs de canales
ruidosos, ya que el par trenzado reduce los ruidos que se inducen en la
lnea de transmisin. El medio fsico de transmisin es un par trenzado
que admite 32, 128 o 254 estaciones en 1 solo par, con una longitud
mxima de 1200 metros operando entre 300 y 19 200 bit/s y la
comunicacin half-duplex (semiduplex) dependiendo del consumo de
cada driver. La transmisin diferencial permite alcanzar mayor distancia

Programacin avanzada

Instituto Tecnolgico de Durango

con una notable inmunidad al ruido, siempre que el bus de comunicacin


conserve las caractersticas de bus balanceado dando la posibilidad de
una configuracin multipunto.

Por qu usar este protocolo?


Soporta grandes distancias entre un dispositivo maestro y otros
dispositivos, nosotros no lo hemos comprobado pero se dice que soporta
hasta 1000 metros (1 Km), el sistema que se usa para la medicin de

Programacin avanzada

Instituto Tecnolgico de Durango

gas LP usando nuestras tarjetas, usa solamente 12 metros de distancia


entre los dispositivos.
Usa solo dos cables para su conexin, esta es otra gran ventaja pues con
dos simples cables puedo conectar muchsimos dispositivos, reduciendo
los costos de cableado.
Es econmico, pues los dispositivos integrados para transmitir y recibir
datos va el protocolo RS-485 son baratsimos, del orden de $16 pesos.

Programacin avanzada

Instituto Tecnolgico de Durango

Y es que, para la aplicacin de los despachadores de gas LP en


autotanques, se tena la necesidad de conectar un registro electrnico,
con una tarjeta para abrir y cerrar las vlvulas de gas, as que, por las
ventajas mencionadas arriba, se opto por comunicar los dispositivos
usando la comunicacin serial, a travs de una red de conexin RS-485.
La figura siguiente muestra donde se ubican los componentes en el
autotanque.

Programacin avanzada

Instituto Tecnolgico de Durango

Programacin avanzada

Instituto Tecnolgico de Durango

Qu es el protocolo RS-485?
Es un protocolo de comunicacin serial, qu a la fecha es un estndar,
es usado como sistema de interconexin entre dispositivos a grandes
distancias y funciona en ambientes elctricamente ruidosos sin
problema alguno. Existen dos opciones para crear una red RS-485:

Usando 4 cables, llamada en ingles full-duplex.


Usando 2 cables, llamada half-duplex.

Programacin avanzada

Instituto Tecnolgico de Durango

Comunicacin RS-485 a cuatro hilos (full-duplex)


En el artculo anterior se vio que dos dispositivos pueden comunicarse
serialmente usando dos cables, uno llamado receptor (Rx) y otro
llamado trasmisor (Tx), pues basta con agregar un dispositivo
electrnico llamado transceptor (transceiver) para protocolo RS-485.
Este chip es capaz de manejar la recepcin y transmisin de datos con
los niveles de voltaje requeridos en la especificacin que se defini para
el protocolo RS-485.

Programacin avanzada

Instituto Tecnolgico de Durango

Observe la figura, el transceptor se conecta a las terminales Tx y Rx de


un dispositivo serial, para as tener lista la conexin RS-485 a 4 hilos, as
de simple.

Programacin avanzada

Instituto Tecnolgico de Durango

Ahora observe en la siguiente figura, la conexin para formar la red RS485, con nicamente dos dispositivos seriales.

Programacin avanzada

Instituto Tecnolgico de Durango

Programacin avanzada

Instituto Tecnolgico de Durango

Ese es el hardware necesario para la comunicacin RS485 a 4 hilos, el


transmisor y receptor son totalmente independientes, en un instante
ambos pueden estar transmitiendo y recibiendo informacin, por eso es
llamado full-duplex pues es ms rpida este tipo de conexin que su
contraparte, la conexin RS-485 a 2 hilos.

Comunicacin RS-485 a dos hilos (half-duplex)


La otra conexin posible es la de dos hilos, en este caso se usa igual un
transceptor para RS-485, pero que sea para dos hilos, la diferencia, es
que a dos hilos, el transmisor y el receptor nunca estn funcionando en
el mismo instante, o el dispositivo transmite informacin o la recibe,
Programacin avanzada

Instituto Tecnolgico de Durango

pero nunca al mismo tiempo. Este tipo de conexin, es ms lenta que


usando la conexin RS-485 a 4 hilos, pero solo requerimos de dos
simples cables, esa es una ventaja que hay que tener en cuenta, a la
hora de disear el hardware. La figura siguiente muestra dos dispositivos
conectados para funcionar con la especificacin RS-485 a dos hilos,
observe como es necesaria una lnea ms de control.

Programacin avanzada

Instituto Tecnolgico de Durango

Programacin avanzada

Instituto Tecnolgico de Durango

Como se mencion arriba, la ventaja en modo half dplex es evidente,


requiere solamente dos cables para su conexin, lo que ahorra en
cableado, sobre todo si son largas las distancias entre los dispositivos.

La Comunicacin RS-485 en Modo Full Duplex


Para este trabajo se utilizar la comunicacin RS-485 en modo Full
Duplex, ya que al contar con varios microcontroladores esclavos, se
necesita que cada uno de ellos este reportando los datos obtenidos de
cada proceso, sin embargo, como no se sabe cuando se necesitar dicha
Programacin avanzada

Instituto Tecnolgico de Durango

informacin, se requieren de dos canales, uno independiente del otro,


para poder transmitir y recibir al mismo tiempo la informacin. El
trmino Full Duplex se refiere a que un sistema puede transmitir y recibir
informacin al simultneamente. Bajo este concepto la interfase RS-485
est diseada para sistemas multipunto, esto significa que los enlaces
pueden llegar a tener ms de un transmisor y receptor, ya que cada
direccin o sea Transmisin y Recepcin tienen su propia ruta. La
siguiente figura muestra lo anteriormente dicho.

Programacin avanzada

Instituto Tecnolgico de Durango

En la siguiente figura se muestra como es posible utilizar la


comunicacin Full Duplex con mltiples nodos trasmisores y receptores.
En este arreglo del tipo maestro / esclavo, se pondr como ejemplo que

Programacin avanzada

Instituto Tecnolgico de Durango

el nodo 1 es el maestro, por lo tanto tiene el control de la red y el asigna


el permiso para transmitir. Un par de cables estn conectados del nodo
trasmisor Maestro a todos los controladores receptores esclavos. En el
otro sentido, un par de cables conectan a todos los esclavos al receptor
del Maestro. Todos los esclavos deben leer lo que el maestro enva, pero
solo uno va a poder responder y lo hace a travs de los cables opuestos.

Programacin avanzada

Instituto Tecnolgico de Durango

Programacin avanzada

También podría gustarte