Guion_I2C
-
Upload
helen-garcia -
Category
Documents
-
view
213 -
download
0
description
Transcript of Guion_I2C
-
Introduccin al Diseo con Microcontroladores
Prctica 4. Introduccin al protocolo I2C y manejo de memorias El objetivo de esta prctica es conocer el protocolo de comunicaciones I2C. Se realizar una exposicin terica con
las principales caractersticas del protocolo y a continuacin se trabajar con una memoria que funciona con este
protocolo. Entre los ejercicios propuestos se llevar a cabo el anlisis de una trama I2C, la creacin de un programa
que lea de la memoria y de un programa que escriba en la memoria. Para facilitar el desarrollo de la prctica se
utilizarn algunas de las libreras de alto nivel que provee el fabricante de la plataforma para trabajar con este
protocolo de comunicaciones.
Ejercicio 1. Exposicin terica del protocolo I2C Este primer ejercicio consta de una breve explicacin por parte del profesor de este protocolo. Se expondr su
capa fsica, trama de comunicacin, jerarquas de dispositivos, etc.
Ejercicio 2. Montaje de la memoria En este ejercicio se va a realizar el montaje de la memoria proporcionada en la placa de montaje junto al
dispositivo MBED. Para que el montaje sea correcto, tenga en cuenta que:
Se utilizar el mdulo I2C de los pines p27 y p28.
La seal de control WC se conecta al pin p29.
Los bits de direccin de la memoria se deben conectar a GND.
Debe habilitar dos pull-ups con las resistencias suministradas entre los canales SCL y SDA a la salida del dispositivo
MBED.
Ejercicio 3. Anlisis de una trama I2C. En este ejercicio se trata de analizar un bus I2C utilizando un osciloscopio con analizador lgico. Para esta tarea se
conectarn a la protoboard la sonda digital suministrada. Ser necesario conectar el GND, las seales de SDA, SCL
y WC y mostrarlas como valores digitales con el analizador lgico.
En la pgina web www.hctlab.com/intromicros est disponible el material de este ejercicio. El fichero
i2cMisterioso.bin. Debe copiarse a la placa MBED dentro de la unidad de almacenamiento que aparece en el
ordenador al conectar dicho dispositivo. El programa queda grabado en la memoria del dispositivo y no se borra
aunque se pulse el botn de reset.
Este programa est realizando la misma operacin I2C cada 500 ms. En el osciloscopio, configure el trigger para
que haga una captura en el primer flanco del reloj. En este momento aparecer en la pantalla la captura de las
seales que se estn transmitiendo por el bus.
Descifre la comunicacin I2C y escrbala en el espacio inferior:
_______________________________________________________
Utilizando la hoja de datos de la memoria decodifique la trama e indique la operacin que se est realizando.
Escrbala a continuacin:
_______________________________________________________
-
Introduccin al Diseo con Microcontroladores
Ejercicio 4. Lectura de memoria Utilizando el objeto I2C cuyas funciones se mostrarn en el anexo, realice un programa que, de manera cclica
cada medio segundo, realice una lectura de los cuatro bytes que estn guardados en la direccin de memoria
0x020, 0x021, 0x022 y 0x023. Utilice el depurador de Keil uVision para poder ver el valor del dato ledo. Escriba a
continuacin los valores hexadecimales que estn almacenados en esos cuatro bytes de la memoria.
Direccin Dato
0x020
0x021
0x022
0x023
Para definir el valor de la seal WC se puede utilizar el elemento DigitalOut visto en la prctica anterior.
Ejercicio 5. Escritura en memoria Utilizando el objeto I2C, realice un programa que escriba en la direccin de memoria 0x030, 0x031, 0x032 y 0x33
los siguientes valores 0xAB 0xCD 0xEF 0x5C. Modifique el programa del ejercicio 4 para verificar que la escritura
de estos datos ha sido correcta.
Ejercicio 6. Opcional Genere un programa que realice una lectura completa de toda la memoria, y cada byte ledo se muestre en los
cuatro leds de la placa. Durante un segundo, se debe mostrar los cuatro bits ms significativos y durante el
segundo siguiente los cuatro bits menos significativos. A continuacin, se pasar a mostrar el contenido de la
siguiente direccin de memoria. Es decir, habr una lectura de un dato cada dos segundos.
Tenga en cuenta lo siguiente:
Utilice DigitalOut para gestionar los pines.
Puede aplicar mscaras a los datos de la siguiente manera:
o Variable = variable2 & mscara
Ej: a= b & 0xF0 copia en a los cuatro bits ms significativos de b y pone a 0 los menos
significativos.
Ej: a = b | 0x0F copia en a los cuatro bits ms significativos de b y pone a 1 los cuatro
menos significativos.
Puede desplazar los bits de una variable:
o Variable = variable2 > N para desplazar a la derecha
Ej:
a = 0xF0
b = a >> 4
La variable b vale 0x0F
-
Introduccin al Diseo con Microcontroladores
Anexo I2C i2c(PIN_SDA, PIN_SCL);
Public Member Functions
I2C (PinName sda, PinName scl)
Create an I2C Master interface, connected to the specified pins.
void frequency (int hz)
Set the frequency of the I2C interface.
int read (int address, char *data, int length, bool repeated=false)
Read from an I2C slave.
int read (int ack)
Read a single byte from the I2C bus.
int write (int address, const char *data, int length, bool repeated=false)
Write to an I2C slave.
int write (int data)
Write single byte out on the I2C bus.
void start (void)
Creates a start condition on the I2C bus.
void stop (void)
Creates a stop condition on the I2C bus.