Guion_I2C

3
Introducción al Diseño con Microcontroladores Práctica 4. Introducción al protocolo I 2 C y manejo de memorias El objetivo de esta práctica es conocer el protocolo de comunicaciones I 2 C. Se realizará una exposición teórica con las principales características del protocolo y a continuación se trabajará con una memoria que funciona con este protocolo. Entre los ejercicios propuestos se llevará a cabo el análisis de una trama I 2 C, la creación de un programa que lea de la memoria y de un programa que escriba en la memoria. Para facilitar el desarrollo de la práctica se utilizarán algunas de las librerías de alto nivel que provee el fabricante de la plataforma para trabajar con este protocolo de comunicaciones. Ejercicio 1. Exposición teórica del protocolo I 2 C Este primer ejercicio consta de una breve explicación por parte del profesor de este protocolo. Se expondrá su capa física, trama de comunicación, jerarquías 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 módulo I 2 C de los pines p27 y p28. La señal de control WC se conecta al pin p29. Los bits de dirección 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. Análisis de una trama I 2 C. En este ejercicio se trata de analizar un bus I 2 C utilizando un osciloscopio con analizador lógico. Para esta tarea se conectarán a la protoboard la sonda digital suministrada. Será necesario conectar el GND, las señales de SDA, SCL y WC y mostrarlas como valores digitales con el analizador lógico. En la página 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 botón de reset. Este programa está realizando la misma operación I 2 C 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 señales que se están transmitiendo por el bus. Descifre la comunicación I 2 C y escríbala en el espacio inferior: _______________________________________________________ Utilizando la hoja de datos de la memoria decodifique la trama e indique la operación que se está realizando. Escríbala a continuación: _______________________________________________________

description

Descripcion dentsoro

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.