miércoles, 7 de julio de 2010

Interfase Módulo LCD Gráfico para el PSoC5

Mi primer contacto con el kit de evaluación del PSoC5 (PSoC5 FirstTouch Starter Kit) ha consistido en realizar un interfase a un módulo LCD gráfico de 128x64 puntos de resolución que servirá dar un buen soporte de interfase de usuario para futuros proyectos. El diseño y el código de demostración están disponibles a continuación para el que lo pueda necesitar.

El diseño se ha montado sobre una placa de pruebas para una máxima flexibilidad:


He elegído un módulo LCD gráfico clásico debido a la facilidad de las conexiones para el montaje en una placa de prototipo. En este caso he seleccionado un módulo de Newhaven Display, código NHD‐12864WG‐BTFH‐V#N, que está disponible en DigiKey. Este módulo integra dos controladores KS0108B de Samsung, que son de utilización bastante común en este tipo de módulos.

La "pega" con este módulo LCD es que el voltage de alimentación es de 5V mientras que el kit del PSoC5 funciona a 3.3V y las entradas del micro no son compatibles con este voltage. Debido a que no quería añadir circuitería adicional (ej. un 74AHC245) para no complicar el diseño, la solución ha consistido en utilizar el módulo en modo escritura solamente. Los niveles lógicos del módulo son compatibles TTL por lo que se puede hacer directamente el interfase, siempre y cuando sea en dirección PSoC al módulo, como será en este caso.

Esto significará una restricción al software en el sentido que no se podrán realizar accesos al módulo en modo lectura para leer la memoria de pantalla o acceder al registro de estado (normalmente para consultar si está ocupado). La solución consiste en implementar un buffer en la memoria del micro para resolver el primer tema y para el segundo implementar un retardo software para "simular" el estado de ocupado, ya que e tiempo es determinista.

El display se conecta al conector de expansión del StarterKit y para el interfase se utilizan conexiones a puertos del PSoC5. Se ha tenido cuidado en la selección de puertos para reservar determinados para funciones analógicas, ya que hay ciertos grupos de puertos que tienen mejores prestaciones para funciones analógicas (ver nota de aplicación AN58304).

La señal de R/W del display se conecta a masa para dejarlo en modo escritura. La alimentación de 5V del módulo la suministro de forma independiente, con la precaución de activarla antes de conectar el puerto USB del StarterKit para evitar dañar el display.

El control del backlight no está disponible de momento. Esto lo dejo pendiente para futuras evoluciones con control PWM.

El esquema es muy simple:


Hay varias librerías disponibles en Internet para manejar LCDs con este controlador, por lo que después de un proceso de selección me he decantado por una librería incluido en un proyecto de demostración de un reloj controlado por un LPC2106, T-Clock, de Martin THOMAS:

http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/glcd_dcf77/index.html

Esta librería además de proporcionar la funcionalidad deseada, tiene la ventaja que trabaja con un buffer en la memoria del microcontrolador por lo cual es ideal para manejar el display en modo escritura solamente. El portado ha sido muy sencillo y practicamente ha funcionado todo a la primera.

Como recursos en el PSoC5 se necesita solamente un timer de 16bit para el control de las temporizaciones, y los puertos de control y de datos. Para el programa de demo ha sido necesario crear un timer adicional, pero éste no es necesario para el funcionamiento de la librería. La vista del diseño en el PSoC Creator es la siguiente:
El programa de demonstración utiliza las diferentes funciones de la librería y dan una idea sencilla de como utilizarlas. El programa será muy simple integrar en cualquier proyecto y además que pienso que debería funcionar directamente en un PSoC3.

Código fuente revisión 0.0: GLCD-PSoC5-R00.zip

Para la generación de bitmaps he utilizado la excelente herramienta "The Dot Factory" v0.0.9. Es necesario utilizar las opciones "LSB first" y rotación de 270º:
http://www.pavius.net/downloads/tools/53-the-dot-factory

El proyecto ha sido bastante sencillo de realizar gracias a la funcionalidad del kit y de la herramienta PSoC Creator. Ahora sí, es importante comentar que he tenido dificultades por defectos en el PSoC5, documentados en la errata, y con el PSoC Creator. Los principales problemas han estado principalmente relacionados con el manejo de los timer software que están documentados en la errata y he encontrado que en la depuración paso a paso, no se muestran siempre correctamente las instrucciones en código fuente de la ejecución.

Hay que tener en cuenta que el kit se entrega con la primera muestra de ingenieria del PSoC5 (ES1) y el PSoC Creator está en Beta. Hasta ahora los problemas no han sido bloqueantes ya que siempre ha habido soluciones alternativas, pero hay que tener muy presente la hoja de erratas a la hora de desarrollar nuevas funcionalidades. También hay que comentar que la documentación de los módulos no es completa y todavía no hay muchas notas de aplicación. La fecha de producción de este dispositivo es para el próximo año por lo que espero que se vayan corrigiendo estos problemas.

Espero que esta nota de aplicación sea de utilidad. Demuestra por un lado las capacidades de expansión del StarterKit gracias a su conector de expansión y las capacidades del PSoC5 y la herramienta PSoC Creator para realizar el proyecto en un tiempo mínimo, aún teniendo en cuenta que no está en producción.

© EA4FRB - Melchor Varela 2010, Todos los derechos reservados

1 comentario:

  1. buenas tardes soy estudiante de tecnologia en electronica de la universidad distrital de colombia, le escribo con el motivo de pedirle ayuda en cuanto a el manejo de la lcd grafica. estoy realizando proyecto de grado de tecnologia y debo usar la lcd grafica, el problema es que no tengo mucho conocimiento de como es el uso adecuado de esta misma, ademas se me a dificultado en contar una libreria que funcione con psoc, en estos momentos cuento con la Psoc 5 FirstTouch Starter Kit pero como le mensione anterior mente no encuentro una libreria con la cual pueda manejar esta. Por eso le pido encarecidamente alguna colaboración en cuanto ala libreria que ha utilizado en este proyecto ya que en el link de descarga el archivo a sido removido.
    De ante mano le agradesco su atención prestada y su grata ayuda..

    ResponderEliminar