Trabajo 2 Micros

6
   Resumen  ² En este trabajo se presenta la implementación y los resultados obtenidos en el diseño de un sistema para la visualización de imágenes almacenadas en una memoria serial EEPROM. Se visualizó en la pantalla LCD del celular marca  Nokia y referencia 6100. Las imágenes fueron guardadas en la memoria 24LC512 por medio de una comunicación I2C y la imagen fue pasada del computador al microcontrolador a través de un protoco lo serial RS-232. I. OBJETIVOS GENERALES y Implementar una librería en C para el manejo de una memoria EEPROM serial I2C. y Implementar una librería en C para la comunicación serial asíncrona RS-232. y Crear una interfaz en un computador personal para la comunicación serial con el microcontrolador. y Visualizar imágenes almacenadas en la memoria EEPROM en una LCD de color Nokia. II. MARCO TEÓRICO  A.  LCD Nokia 6100. La pantalla LCD Nokia 6100, se puede observar en la Figura 1, cuenta con especificaciones importantes como: cuenta con un tamaño de 132 * 132 pixeles, se trabajo a un formato de 8  bits de color, donde los primeros 3 bits son rojo, los 3 siguientes verde y los últimos 2 color azul como se o bserva en la Figura 2, soporta una alimentación de 3.3V. Figura 1. LCD Nokia 6100 Figura 2. Formato envío de Colores a 8 bits Existen dos fabricantes de este tipo de pantalla, Epson con un controlador gráfico S1D15G00 y Philips con un controlador PCF8833. En la comunicación con esta pantalla se utilizan dos líneas seriales CLK y Dato, por la línea Dato se envían 9 bits de información, un bit que selecciona si la información es un dato o un comando, y 8 bits que corresponden a un código  predeterminado en el controlador de la pantalla. Para el direccionamiento de la pantalla hay que especificar la dirección del pixel deseado, con el comando de dirección de fila y columna, para cada uno hay que especificar dos valo res, el inicio y el final del pixel, así se puede crear un cuadro de dibujo. Para direccionar un solo pixel basta con especificar la misma ubicación al inicio y al final en cada eje. Utilizando los valores de los comandos CASET y PASET que se encuentran en la hoja de datos del controlador de la pantalla. Se debe enviar 9 bits de forma serial a la pantalla, el noveno  byte indica si es un dato o un comando lo que se está TRABAJO #2 COMUNICACIÓN CON MEMORIA SERIAL I2C Ospina Duque, Jaime Alberto, Zuluaga Parra, Ramiro Andrés, Romero Bernal, Diana Alexandra 11 de Mayo de 2011

Transcript of Trabajo 2 Micros

Page 1: Trabajo 2 Micros

5/9/2018 Trabajo 2 Micros - slidepdf.com

http://slidepdf.com/reader/full/trabajo-2-micros 1/6

 

  Resumen ² En este trabajo se presenta la implementación y

los resultados obtenidos en el diseño de un sistema para lavisualización de imágenes almacenadas en una memoria serialEEPROM. Se visualizó en la pantalla LCD del celular marca

 Nokia y referencia 6100. Las imágenes fueron guardadas en lamemoria 24LC512 por medio de una comunicación I2C y laimagen fue pasada del computador al microcontrolador através de un protocolo serial RS-232.

I.  OBJETIVOS GENERALES

y  Implementar una librería en C para el manejo de unamemoria EEPROM serial I2C.

y  Implementar una librería en C para la comunicaciónserial asíncrona RS-232.

y  Crear una interfaz en un computador personal para lacomunicación serial con el microcontrolador.

y  Visualizar imágenes almacenadas en la memoriaEEPROM en una LCD de color Nokia.

II.  MARCO TEÓRICO

 A.   LCD Nokia 6100.

La pantalla LCD Nokia 6100, se puede observar en la Figura1, cuenta con especificaciones importantes como: cuenta conun tamaño de 132 * 132 pixeles, se trabajo a un formato de 8

  bits de color, donde los primeros 3 bits son rojo, los 3

siguientes verde y los últimos 2 color azul como se observa enla Figura 2, soporta una alimentación de 3.3V.

Figura 1. LCD Nokia 6100

Figura 2. Formato envío de Colores a 8 bits

Existen dos fabricantes de este tipo de pantalla, Epson con ucontrolador gráfico S1D15G00 y Philips con un controladoPCF8833.

En la comunicación con esta pantalla se utilizan dos líneaseriales CLK y Dato, por la línea Dato se envían 9 bits dinformación, un bit que selecciona si la información es un dato un comando, y 8 bits que corresponden a un códig

 predeterminado en el controlador de la pantalla.

Para el direccionamiento de la pantalla hay que especificar ldirección del pixel deseado, con el comando de dirección dfila y columna, para cada uno hay que especificar dos valoreel inicio y el final del pixel, así se puede crear un cuadro ddibujo. Para direccionar un solo pixel basta con especificar lmisma ubicación al inicio y al final en cada eje. Utilizando lovalores de los comandos CASET y PASET que se encuentraen la hoja de datos del controlador de la pantalla.

Se debe enviar 9 bits de forma serial a la pantalla, el noven  byte indica si es un dato o un comando lo que se es

TRABAJO #2COMUNICACIÓN CON MEMORIA SERIAL I2C

Ospina Duque, Jaime Alberto, Zuluaga Parra, Ramiro Andrés, Romero Bernal, Diana Alexandra11 de Mayo de 2011

Page 2: Trabajo 2 Micros

5/9/2018 Trabajo 2 Micros - slidepdf.com

http://slidepdf.com/reader/full/trabajo-2-micros 2/6

 

transmitiendo. En la Figura 3 podemos observar el diagramade tiempos de la pantalla, el noveno bit (dato o comando) seregistra en primer lugar y es bajo para indicar un byte decomando o alto para indicar un byte de dato.

Figura 3. Comunicación Serial.

A.  24 LC512. 

Es una memoria serie del tipo 64K x 8 EEPROM, es decir,una memoria eléctricamente borrable de 512 Kbit, capaz deoperar en un amplio rango de tensiones (2.5 a 5.5v) y a una

frecuencia máxima de reloj de 400KHz.

El circuito integrado 24LC512 tiene un formato de tramadonde en primer lugar es generado y enviado el bit de Start

  por parte del maestro, seguido por el primer byte decomunicación el denominado byte de control, que se puedeobservar en la Figura 4,

Figura 4. Formato Byte de Control.

Los cuatro primeros bits conforman el código de control ytoman un valor fijo dependiendo del dispositivo, para el casode la memoria 24LC512 es µ1010¶ tanto en las operaciones delectura como de escritura, los tres siguiente permiten laselección del chip o del dispositivo (A2, A1 ,A0), estos puedetomar cualquier valor por lo que son usados para conectar yacceder hasta 8 dispositivos 24LC512 conectados al mismo

 bus. El bit siguiente define el tipo de operación a realizar si en

un nivel alto se realiza una operación de lectura si es un nivellógico bajo se realizara escritura, finalmente se envía elreconocimiento desde el dispositivo esclavo hacia el maestro.

Después de la condición de comienzo, la memoria chequea el  bus buscando la existencia del identificador apropiado, sirecibe el µ1010¶ y una combinación de selección adecuada eldispositivo esclavo genera una señal de reconocimiento ACK,dependiendo del valor del bit de lectura y escritura, laoperación a realizar será leer o escribir sobre la dirección de lamemoria determinada por los dos bytes siguientes como se

 puede observar en la Figura 5.

Figura 5. Secuencia de bits.

La operación de escritura se puede realizar de dos formaescritura de un byte o escritura en modo página que permite lescritura secuencial de 128 bytes, después de que el maestrgenera las señales de control, seleccionando escritura, parescritura debe ser nivel bajo, finalmente el bit dreconocimiento. Después de este primer byte, se envía ldirección a la que se accederá dividida en dos bytes, despuéde los cuales será enviada una nueva señal de reconocimientoDespués del segundo ACK, aparecerá sobre el bus el dato, eeste caso un byte, a escribir sobre la memoria. Una veacabada la transferencia y escritura del mismo, la memorigenera un nuevo ACK que es respondido por el maestro couna condición de parada que pone fin al ciclo de escritura. E

este momento la memoria inicia un ciclo de escritura internoen el cual no genera ningún tipo de reconocimiento sobrninguna señal.En el caso que el pin WP estuviera a nivel alto la operación descritura no afectaría a los valores almacenados en lmemoria, es decir, no se realizaría escritura alguna. E

 procedimiento de escritura se puede observar en la Figura 6.

Figura 6. Byte de Escritura.

La operación de lectura sigue el mismo patrón que las tramade escritura, se pueden realizar tres tipos de lectura, lectura ddirección actual, lectura aleatoria y lectura secuencial. Lutilizada en el laboratorio fue el tipo de lectura aleatoria, qu

 permite realizar lecturas sobre las posiciones de memoria quelijamos o que vengan determinadas por el maestro. Parrealizar este tipo de operaciones deberemos indicar a24LC512, es decir, el esclavo, la dirección de la posición dmemoria sobre la que deseamos hacer la lectura. Para ello s

inicia el ciclo como si se tratara de una escritura. Se envía e byte de control, junto con la dirección de memoria a la que sdesea acceder en forma de dos bytes separados y con sucorrespondientes reconocimientos emitidos por la memoriaUna vez recibido el segundo reconocimiento el maestro emituna nueva condición de inicio poniendo fin al anterior ciclescritura e iniciando el de lectura propiamente dicho con emismo byte de control que en el caso anterior pero cambiandel valor de ese último bit que indica que se trata de unoperación de lectura por lo que está a nivel alto. Una verecibido el 24LC512 emite un ACK y se transmite el byte ddatos que no es reconocido por el maestro, pero al cua

Page 3: Trabajo 2 Micros

5/9/2018 Trabajo 2 Micros - slidepdf.com

http://slidepdf.com/reader/full/trabajo-2-micros 3/6

 

responde generando la condición de parada de lacomunicación. En la Figura 7 podemos apreciar el formato detrama para lectura aleatoria.

Figura 7. Lectura Aleatoria.

III.  DESARROLLO DEL TRABAJO 

La representación de esta práctica se puede observar en lagrafica 8, donde la transmisión de la RS232 del PC hacia laUSART del microcontrolador, se tomaron los datos y seretransmitían utilizando el protocolo I2C hacia la EEPROM

donde se guarda la imaginen, una vez terminada la escritura se procede leer esta imagen para ser transmitida a la pantalla y proyectarla allí por medio del protocolo de comunicación deesta.

Figura 8. Esquema general del sistema a implementar 

Para el desarrollo de este trabajo se desarrollaron diferenteslibrerías, a diferencia de la librería de la pantalla LCD Nokia6100. Las librerías desarrolladas para este trabajo son:

y  Librería para la usar y  Librería para la comunicación I2C.y  Librería para la comunicación con la memoria

EEPROM de 512Kbytes.

 Librería para manejar al Usart 

La librería propuesta configura la usar para una transmisión a38400 baudios y la recepción de datos por interrupciones, estocon el fin de ganar un poco de velocidad en la recepción de losdatos y evitar pérdidas en los mismos. Las funciones parautilizar la Usart son

void Config_Usart();

Esta función permite como ya se menciono configurar por defecto una velocidad para un cristal de 16 MHz, tambiénhabilita la recepción por interrupción junto con la transmisióny recepción de los datos.

void txData(uint8_t dato);

Esta función permite transmitir datos desde elmicrocontrolador hacia el PC a la velocidad ya mencionadasolo se necesita introducir el dato de 8 bits a transmitir.

Para usar esta librería es necesario incluir el vector d

interrupciones si se desea recibir datos al microcontrolador, activar las interrupciones, dentro del vector leer el registrUDR para recibir el dato y así realizar su respectivo códig

 para la manipulación de este.

 Librería para manejar al I 2C 

Por medio de este código, es posible la comunicación con lmemoria EEPROM, ya que esta solo se comunica por est

 protocolo. Esta librería es usada por la librería de la memorque será explicada más adelante. La I2C posee las siguientecaracterísticas:

void Config_twi()

Inicialmente se debe configurar la comunicación, la cual serealiza con esta función. Esta permite inicialmente lacomunicación del micro con la memoria a una velocidad de400MHz, la cual se calculo con la ecuación dado por elfabricante

void I2C_Start();

Esta función permite mandar una condición de Start paracomunicarse con algún dispositivo.

void I2C_SendAddress(uint8_t address);

Esta función permite enviar una dirección que recibe como parámetro al dispositiva al que se va a comunicar.

void I2C_SendData(uint8_t);

Esta función realiza el mismo trabajo que la anterior, solo quese llamo de otra manera para diferencia en el código almomento de enviar dato.

uint8_t I2C_ReceiveData_ACK()

Esta función recibe el dato que viene del dispositivo al que seesté comunicando con una confirmación ACK 

uint8_t I2C_ReceiveData_NACK();

Esta función permite recibir datos del dispositivo (esclavo) pero sin confirmación ACK.

Page 4: Trabajo 2 Micros

5/9/2018 Trabajo 2 Micros - slidepdf.com

http://slidepdf.com/reader/full/trabajo-2-micros 4/6

 

void I2C_Stop();

Por último esta función envía la condición de Stop paraterminar la comunicación.

Por lo tanto el uso de estas funciones proporciona un fácilmanejo para una comunicación I2C con otros dispositivos, ya

que solo tendría que llamar a las funciones dependiendo de lasecuencia que se va a realizar en la comunicación.

 Librería para la comunicación con la memoria EEPROM de

512K bytes

Como se menciono, esta librería depende mucho de la I2C, yaque las funciones que utiliza son proporcionadas por esta. Asíque si se desea manejar comunicación con la EEPROM debenagregar al mismo proyecto ambas librerías. Esta consta de dosfunciones que son:

void EEPROM_Write(uint8_t AddressH, uint8_tAddressL, uint8_t dato)

uint8_t EEPROM_Read(uint8_t AddressH, uint8_tAddressL)

Estas funciones permiten al usuario, escribir y leer datos de lamemoria como lo indican sus nombres, a estas solo hay queagregar los parámetros correspondientes para cada función.El protocolos para la lectura y escritura fueron previamenteexplicados, donde se hace alusión a la escriturar y lecturasolo de forma aleatoria y no por pagina. Dentro de la libreríaestán definidos los macros que se utilizan para especificar cuando se desea leer o escribir a la memoria según el

datasheet.

Una característica importante es que es necesario al momentode leer la EEPROM bajar la velocidad con el registro TWBR del I2C, ya que la velocidad del microcontrolador alcanzabana leerse los datos y en muchas ocasiones eran incorrectos; lavelocidad a la que se redujo fue a unos 222Khz para la lecturaincluyendo algunos retardos dentro de la función de leer lamemoria.

 Función pintar Pixel.

Para pintar un pixel en una coordenada especifica, esnecesario saber el formato del color usado, en este caso para12 bits; esto permite saber que pixeles se deben encender yaque en este formato, la pantalla enciende dos pixeles para estose realizó el siguiente función

TransmitirLCD(COMANDO, CONFIG_DATO_COLOR);TransmitirLCD(DATO, COLOR_8_BIT);

En la inicialización después de configurar el formato del

color, se transmite el siguiente comando con los siguientesdatos

TransmitirLCD(COMANDO, FORMAT_COLOR);TransmitirLCD(DATO, 0);TransmitirLCD(DATO, 2);TransmitirLCD(DATO, 4);TransmitirLCD(DATO, 6);

TransmitirLCD(DATO, 8);TransmitirLCD(DATO, 10);TransmitirLCD(DATO, 12);TransmitirLCD(DATO, 15);TransmitirLCD(DATO, 0);TransmitirLCD(DATO, 2);TransmitirLCD(DATO, 4);TransmitirLCD(DATO, 6);TransmitirLCD(DATO, 8);TransmitirLCD(DATO, 10);TransmitirLCD(DATO, 12);TransmitirLCD(DATO, 15);TransmitirLCD(DATO, 0);TransmitirLCD(DATO, 4);TransmitirLCD(DATO, 9);TransmitirLCD(DATO, 15);

El macro del FORMAT_COLOR está declarado en la libreríade la LCD.

Por lo tanto es posible visualizar imágenes hasta 132x132 coun bajo tamaño y así aumentando la posibilidad de grabar máimágenes en la EEPROM.

 Funcionamiento del código

Inicialmente se toma el código de la imagen generado por e  NokiaImageCreator y se transmite por medio de la USARutilizando algunas funciones de Matlab para la comunicacióserial por medio del protocolo RS-232, se tomaron los datoque vienen en un formato elegido de 8 bits donde en el vienla información RGB que se debe ingresar a la pantalla par

 poder graficar en ella, estos datos vienen en un hexadecimadebido a esto se pasaron a decimal y se transmitieroserialmente, esta información transmitida contiene tres dato

 parámetros importantes, el primer y segundo dato determinael tamaño de la imagen (numero de columnas y numero d

filas) desde el tercer dato en adelante es la información de locódigos de la imagen, los primeros dos datos se tomaron ecuenta para calcular el espacio ocupado en memoria por limagen que se va a guardar, este proceso se hace en emicrocontrolador, dado el caso que no haya terminado e

  proceso de escritura se espera un tiempo y se sigescribiendo, una vez terminada la transmisión hacia lmemoria EEPROM (³escribir EEPROM´ terminar =1

  bandera de finalización) se procede a leer la memoria partransmitirla hacia la pantalla dato a dato, al mismo tiempo quse va leyendo también se va escribiendo en la pantalla, sconoce cuando ha terminado de escribir en la pantalla por qu

Page 5: Trabajo 2 Micros

5/9/2018 Trabajo 2 Micros - slidepdf.com

http://slidepdf.com/reader/full/trabajo-2-micros 5/6

 

se conoce el tamaño de la imagen, una vez la imagen ha sidoescrita en su totalidad en la pantalla el proceso termina.

Figura 9. Diagrama general del funcionamiento del código.

IV.  SIMULACIONES Y RESULTADOS

Para la simulación se utilizó Proteus y Matlab, donde por medio de un puerto virtual, se pueden comunicar elmircocontrolador, con Matlab.

Figura 10. Simulación en Proteus

Como lo muestra la figura 10, por medio del elementoCOMPIM es posible la comunicación serial, estos a su vez sonmonitoreados por los hyperterminales del Proteus; dondecuyos resultados fueron

Figura 11. Imagen simulada en Proteus

Se puede observar que la imagen es claramente visualizada ela pantalla usando Proteus, por lo que el sistema está listo parsus pruebas físicas.

 Montaje Físico

Para el montaje físico, se complemento el montaje de la pantalla a color y se le agrego la parte de comunicación con lausar y con la EEPROM como lo muestra la figura 12

Figura 12. Montaje comunicación serial I2C

Se utilizaron tres reguladores, donde se tenían alimentacionesde 5V para el micro y la memoria, 3V para la alimentacióncon la pantalla y 7 V para el back light de la pantalla

Debido a la velocidad de transmisión con la usart, el sistemse demora entre 15 a 20 min por imagen, donde los resultadoobtenidos para visualizar una imagen fue

Page 6: Trabajo 2 Micros

5/9/2018 Trabajo 2 Micros - slidepdf.com

http://slidepdf.com/reader/full/trabajo-2-micros 6/6

 

 

Figura 13. Imagen visualizada en pantalla nokia6100.

Donde la imagen real es:

Figura 14. Imagen original visualizada.

Se puede observar una disminución en la calidad, debido su

calidad su reducida a 8 bits. Esta reducción se logro con el programa para este tipo de pantalla como lo muestra la figura15, el cual permite generar el código en C de la imagen tipo

 bmp que se encuentre dentro de la resolución de la pantalla(132x132)

Figura 15. Programa Nokia para pantallas Nokia 6100

Este programa genera un vector que es introducido en Matla  para por ser transmitido por el rs232 hacia microcontrolador.

Figura 16. Interface en Matlab para transmitir las imágenes

V.  CONCLUSIONES

y  Se logro la implementación de diferentes librería para la comunicación de un microcontrolador con uPC por medio del puerto serial.

y  Se logro la transmisión serial por medio de uninterface serial.

y  Se logro graficar satisfactoriamente la imagen leíddesde una memoria EEPROM.

y  Se consiguió sincronizar las dos comunicacioneexistentes para un correcto funcionamiento y adisminuir los errores por trama.

VI.  BIBLIOGRAFIA

1.  http://www.sparkfun.com/tutorial/Nokia%20100%20LCD%20Display%20Driver.pdf 

2.  http://www.sigmaelectronica.net/images/24L512.pdf