PDF de programación - Capítulo 8/20 - Inter – Integrated Circuit Interface - I2C - Curso sobre Microcontroladores

Imágen de pdf Capítulo 8/20 - Inter – Integrated Circuit Interface - I2C - Curso sobre Microcontroladores

Capítulo 8/20 - Inter – Integrated Circuit Interface - I2C - Curso sobre Microcontroladoresgráfica de visualizaciones

Publicado el 31 de Mayo del 2018
567 visualizaciones desde el 31 de Mayo del 2018
229,8 KB
7 paginas
Creado hace 11a (12/08/2012)
Curso sobre Microcontroladores
Familia HC9S08 de Freescale

Por Ing. Daniel Di Lella – EduDevices – www.edudevices.com.ar
e-mail: [email protected]

Capítulo 8.-

Inter – Integrated Circuit Interface – I2C
MMIIC – Multi – Master I2C.
Continuación ....

Protocolo I2C.

A continuación se examinará el “bus de comunicaciones” de un sistema I2C para
entender el protocolo I2C, por medio de las señales ilustradas en la figura superior.

Como se mencionó anteriormente, el sistema bus I2C utiliza las líneas SDA y SCL
para transferir información. Es importante destacar que las líneas SCL y SDA son del
tipo “Open Drain” (drenaje abierto, o sea, el drenaje del transistor Mosfet de
salida está en el “aire” sin conexión interna) y por lo tanto resistores de “Pull – Up”
EXTERNOS deben ser utilizados en ambas líneas para garantizar el estado lógico “1”.
Los valores de estos resistores son muy importantes para garantizar un buen
funcionamiento del sistema I2C en una configuración BUS y deben obtenerse
dichos valores del manual del MCU HC9S08 elegido.

En una transferencia I2C normal, una señal de START debe ser generada.
La señal START consiste en forzar la línea SDA a un estado bajo durante algún
tiempo.
El próximo paso es la transmisión de la dirección del dispositivo Esclavo (Slave).
El dato en la I2C siempre es válido en el flanco de subida de la señal de reloj (clock).

El bit menos significativo (LSB) de la dirección en el registro de dirección, determina
si la transferencia de datos será desde el “Master” hacia el “Slave” o del “Slave” al
“Master”. Este bit también se lo conoce como el Bit de Lectura o Escritura (R/W
Bit).

La transferencia de datos continuará durante tantos bytes como sea necesario.
Tanto tiempo como una señal de “Acknowledge” (Ack) se recibe (hasta recibirla), el
dispositivo Master o Slave continuará con la transferencia de datos.

Una señal de STOP se envía por medio de un “no acknowledge” (NACK).
Esto detiene la comunicación I2C.

El lector no debe confundir la señal STOP con el modo STOP del MCU.

Inicialización de un Dispositivo Esclavo (Slave).

1) Escribir el registro de direccionamiento (IIC1A)
para configurar la dirección del dispositivo Esclavo.

2) Escribir el registro de control para habilitar el
módulo I2C y las interrupciones (IICEN / IICIE = 1).

3) Inicializar variables en RAM que serán utilizadas
para la transmisión de información.

4) Inicializar variables que serán utilizadas dentro de la
rutina de interrupción del I2C.

Como se puede observar en la figura superior, para inicializar el módulo I2C de un
dispositivo esclavo, primero se debe escribir el registro de direccionamiento (IIC1A)
con la dirección del esclavo. El dispositivo esclavo responderá a esa dirección.

Segundo, habilitar el módulo I2C y las interrupciones, poniendo a “1” los bits IICEN
e IICIE en el registro de control (IIC1C) respectivamente.

Tercero, dependiendo del tipo y cantidad de datos que el esclavo debería enviar, se
deberán inicializar las variables para preparar esta información.

Por ejemplo, si se quisiera transmitir un conjunto de datos que fuera importante enviar
sin demoras, se deberá inicializar las variables en RAM para que la información esté
lista tan pronto como para ser enviada.

Cuarto, tener en cuenta de inicializar las variables necesarias en la rutina de
interrupción del módulo de I2C.

Diagrama de Flujo de la rutina de servicio de la Interrupción de I2C.

1

1

2

RTI

2

RTI



Inicialización de un dispositivo AMO (Master).

1) Escribir el registro divisor del I2C para configurar el
Baud Rate del módulo I2C.

2) Escribir el registro de control I2C para habilitar el
módulo y las interrupciones.

3) Inicializar las variables en RAM que serán
utilizadas en la transmisión de datos.

4) Inicializar las variables involucradas en la rutina de
servicio de la interrupción.

5) Escribir el registro de control para habilitar el TX.

6) Escribir el registro de control para habilitar el bit
MST (Modo Master).

7) Escribir el registro de datos con la dirección del
dispositivo al cual se desea comunicar (El bit LSB del
de dicho byte determinará si será Master Receive (RX)
o Transmit (TX).

En la figura superior, se pueden observar los 7 pasos que se deben realizar para
configurar un dispositivo como Master (Amo) y comenzar una comunicación I2C.

Primero, se debe configurar el Baud Rate. El registro divisor de frecuencia contiene
los bits utilizados para establecer el Baud Rate de la comunicación I2C.

Segundo, se deben habilitar, por medio de la escritura del registro de control,
el módulo I2C y las interrupciones.

Los pasos 3 y 4 son muy importantes. En orden de transmitir información y seguir el
flujo normal de la rutina de servicio de la interrupción, deberán implementarse las
variables en RAM que definirán el número de bytes que “viajarán” desde el
dispositivo Esclavo (Slave) al Amo (Master). Estas variables indicarán cuando están
siendo enviados desde el segundo al último Byte y el último byte desde el Esclavo al
Master.

Quinto, escribir el registro de control del módulo I2C para habilitar el modo de
transmisión, y sexto, escribir el mismo registro para habilitar el modo master.

Al habilitar el modo master, se genera en forma automática una señal de Start
(Comienzo).

El séptimo y último paso es escribir la dirección del dispositivo esclavo en el
registro de datos del módulo I2C para comenzar con la comunicación.
Cabe hacer notar que el bit LSB (Menos Significativo) del byte a escribir
determina si es una Recepción del Master o una Transmisión del Master.

Hasta aquí se han visto en forma general como configurar el módulo I2C (MMIIC) de
los HC9S08 para trabajar como dispositivos Master (Amo) o Slave (Esclavo) y
además el diagrama de flujo de la interrupción de servicio del módulo I2C con los
distintos pasos a seguir para un dispositivo Master o Slave.

En el próximo artículo se verán las prácticas correspondientes al módulo que figuran en
la “Guía de Prácticas” del HC9S08 del kit “EDUKIT08” y para aquellos lectores que
desean ampliar aún más sus conocimientos sobre dicho módulo se sugiere consultar la
nota de aplicación AN3048 de Freescale.

Continuará .......

Nota de Redacción: El lector puede descargar este capítulo y capítulos anteriores del
curso desde la sección “Artículos” (Curso_HC9S08) en el sitio web de EduDevices
(www.edudevices.com.ar )
  • Links de descarga
http://lwp-l.com/pdf11479

Comentarios de: Capítulo 8/20 - Inter – Integrated Circuit Interface - I2C - Curso sobre Microcontroladores (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad