Home
CAN-032, Utilización de displays LCD color con controladores
Contents
1. ld hl PBDR apunta a port paralelo ioi res 6 HL baja WEO wwait2 ioi ld a hl lee port paralelo rrca Chequea bit 0 WAIT jr nc wwait2 espera hasta que NOWAIT ioi set 6 HL sube WEO gt 1 BCLK despu s de NOWAIT ld h1 PCDR apunta a port paralelo ioi set 2 HL sube CS ld a 0x80 ioi ld SPCR a A entradas ret xdumpblk ld a Xpc Save the frame pointer and xpc push af push ix ld de 0xe000 de 1sw dest 0xe000 ld hl sp 8 or a sbe hl1 de ex de hl ld hl sp 9 hl e dest 0xe000 gt gt 8 jr nc xcbf_1 dec h xcbi _1 s ld Tya add hl h1 h dest 0xe000 gt gt 12 add h1 h1 add hi hi add h1 h1 ld a h ld xpc a xpc dest 0xe000 gt gt 12 ex de hl calculate the offset in xpc window ld a h ix dest amp 0x0fff 0xe000 CAN 032 7 xcbf_loop xcbf_done tendasm root useix void LCD_dump long imgdata CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit and 0Ox0f or 0xe0 ld h a ld Ixy hL ld iy sp 6 ld hl sp 12 i ld CrA H ld b 1 ld a l or a JE nz xcbf_loop dec E Call writew13705 R ld de 0x0002 A add ix de A add iy de djnz xcbf_loop xor a dec E jp p xcbf_loop pop ix pop af ld xpc a ret triplet unsigned int dest tocopy len len S1DMEMSIZE 2 dest 0 imgdata sizeof long writepalette paldata while len tocopy 2048 dest amp 2047 if tocopy gt len tocopy 1len xd
2. HL sube CS ld a 0x80 ioi LA SPCR a A entradas ret addressbus ld hl sp 4 lee address ex de hl en DE ab2 ld hl PEDR apunta a port ioi ld hl d pone parte alta ld h1 PDDR apunta a port ioi ld hl e pone parte baja ld h1 PCDR apunta a port paralelo ioi set 0 hl BHE 1 rrc e debo activar BHE test LSB 1 jr nc okl 7 no ioi res 0 HL s BHE 0 ok1 ret Para poder observar algo deberemos definir los colores cargando la paleta Eso lo hacemos mediante la siguiente rutina void writepalette triplet address int is unsigned char ptr ptr 8 address gt RGB 0 5 BitWrPortlI PCDR PCDRShadow 1 4 Al6 1 writel3705 0x15 S1DREGOFFSET 0 for 1 0 1 lt 16 1 writel3705 S1DREGOFFSET 0x17 ptr 5 writel3705 S1DREGOFFSET 0x17 ptr 5 writel3705 S1DREGOFFSET 0x17 ptr 5 BitWrPortlI PCDR PCDRShadow 0 4 A16 0 Cada paleta estar definida como un array de tres elementos o triplet definiendo los valores correspondientes a R G y B Si bien el controlador utiliza s lo 4 bits definimos un byte para cada color por simplicidad y semejanza con VGA typedef union unsigned char RGB 3 triplet const triplet VGApalette 16 0x00 0x00 0x00 BLACK 0x00 0x00 0xA0 BLUE es 0x00 OxA0 0x00 GREEN 0x00 0x40 0xA0 CYAN OxA0 0x00 0x00 RED 0xA0 0x00 0xA0 PURPLE 0xA0 0xA0 0x00 YEL
3. 05 PA O DBO AB PD O PA 1 DB1 AB1 PD 1 PA 2 DB2 AB2 PD 2 PA 3 LIT DB3 AB3 PD 3 PA 4 T DB4 AB4 PD 4 PA I DB5 AB5 PD 5 PA 6 LT TIT JDB6 AB6 PD 6 PA 7 IT ITIT DB7 AB7 PD 7 L DB8 AB8 PE 0 JDB9 AB9 PE 1 1 DB10 AB1 PE 2 DB11 AB1 PE 3 DB12 AB1 PE 4 pp DB13 AB13 PE 5 pp JDBi4 AB1 PE 6 po JDBi5 AB1 PE 7 PB 6 WEO PC 0 WET BHE PC 2 CS PB 0 La selecci n del tipo de interfaz se realiza mediante los pines CNFx El diagrama de configuraci n alimentaci n y miscel neos es el siguiente 5V S1D13705 5V IOVDD COREVDD Hardware de display CAN 032 3 CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit La conexi n al display se realiza mediante las l neas analizadas en la CAN 031 como indica el diagrama a continuaci n LCDPWR S1D13705 5V VDD VLCD VEE 25V contraste DO D1 D2 D3 D4 D5 D6 D7 display La tensi n de contraste es conveniente que sea variable para poder ajustarlo podemos utilizar un step up como el MC34063A comercializado por Cika y controlarla mediante un preset a modo de divisor resistivo o proveerla de forma externa Software de bajo nivel Tenemos un bus de 16 bits simulado dentro de uno de 8 bits con se alizaci n similar a la utilizada por el 8086 es decir cuando operamos sobre el byte alto parte alta del bus D8 a D15 lo indicamos activando la se al BHE Luego de activar CS e indicar
4. CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit Cika Nota de Aplicaci n CAN 032 T tulo Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit 7 e Electr nica autor Sergio R Caprile Senior Engineer Revisiones Fecha Comentarios 0 15 06 05 En la CAN 031 les presentamos los nuevos displays color LCD de 320x240 Dijimos que se trata de displays sin controlador por lo que su utilizaci n dentro de un sistema requiere de un controlador externo o de la generaci n de todas las se ales de control por parte del usuario Veremos en esta nota la forma de utilizar un controlador de Epson el S1D13705 para que se encargue de todo lo relacionado con el manejo del display mientras que nosotros nos limitaremos a decirle c mo lo tiene que hacer y darle la informaci n a mostrar Breve descripci n del S1D13705 Hardware El S1D13705 es un controlador inteligente para displays LCD de alta resoluci n permitiendo no s lo displays color pasivos sino tambi n blanco y negro y TFT El S1D13705 se encarga de generar las se ales que necesita el display como vi ramos en la CAN 031 tanto para este tipo de display como para los otros mencionados seg n como est configurado La configuraci n de este dispositivo es algo compleja pero afortunadamente el fabricante nos provee un software que nos permite a partir de los valores operacionales del display generar los da
5. LOW OxA0 0xA0 0xA0 WHITE 0x00 0x00 0x00 BLAC 0x00 0x00 OxF0 7 LT BLUE El 0x00 0xF0 0x00 LT GREEN 0x00 0xF0 0xF0 LT CYAN OxF0 0x00 0x00 LT RED Ki 0xF0 0x00 0xF0 LT PURPLE OxF0O OxF0O 0x00 LT YELLOW OxF0O OxF0 OXxFO LT WHITE i CAN 032 5 CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit A continuaci n la inicializaci n del chip Los valores los obtuvimos utilizando el software de configuraci n provisto por el fabricante seg n coment ramos typedef unsigned char S1D_INDEX typedef unsigned char S1D_VALUE typedef struct S1D_INDEX Index S1D_VALUE Value S1D_REGS const static S1D_REGS aSlDRegs 0x00 0x24 Revision Code Register 0x01 0x3B J Mode Register 0 Register 0x02 OXxBO Mode Register 1 Register 0x03 0x03 Mode Register 2 Register enable display 0x04 0x27 Horizontal Panel Size Register t 0x05 OXEF Vertical Panel Size Register LSB t 0x06 0x00 Vertical Panel Size Register MSB 1 0x07 Ox1F F FPLINE Start Position Register 0x08 0x00 Horizontal Non Display Period Register 0x09 0x00 FPFRAME Start Position Register Ox0A OxO0B Vertical Non Display Period Register 0x0B 0x00 MOD Rate Register 0x0C 0x00 Screen Start Address Register LSB 0x0D 0x00 Screen Start Addre
6. S1D13705 y Rabbit que genera una inserci n autom tica de wait states por configuraci n En este caso el controlador no especifica una duraci n m xima del ciclo y debemos respetar la petici n de espera Desarrollaremos entonces el hardware empleando los ports de I O uno de cuyos pines ser conectado a la l nea de WAIT del controlador generaremos las direcciones pertinentes mediante I O tambi n En cuanto al bus de 16 bits lo que haremos es duplicar nuestros 8 bits conectando parte alta y parte baja del bus entre s elegimos para esta nota el modo de operaci n Generic 2 y le indicamos al controlador si la operaci n es en la parte baja o la parte alta del bus a la usanza del 8086 De este modo la informaci n siempre sale del Rabbit por los mismos ocho pines y el controlador la lee por los ocho altos o los ocho bajos seg n indique la se al BHE Bus High byte Enable que no es otra cosa que la inversi n de AO Entre las limitaciones de cantidad de pines y posibilidad de operaci n elegimos algunos de ellos con funciones similares dentro del mismo port a fin de agilizar las rutinas de manejo Queda como tarea para el lector el estudio de la posibilidad de realizarlo con otros pines e incluso emplear alg n otro de los modos de interfaz del S1D13705 para los alcances de esta Nota de Aplicaci n la performance obtenida es satisfactoria El diagrama siguiente indica el esquema de conexi n propuesto S1D137
7. en el extremo superior izquierdo de la pantalla Para mostrar pantallas deberemos agrupar los datos de modo tal de poder enviarlos de forma que aproveche de manera eficiente la estructura de memoria Si comparamos la estructura de memoria del display con la forma de guardar im genes en 16 colores en formato BMP ver amos que son muy similares por ejemplo BMP va de abajo a arriba y el display de arriba a abajo por lo que la imagen se ve espejada verticalmente Adem s BMP incluye un encabezado que contiene la paleta de colores Por consiguiente para adaptar una imagen debemos llevarla a la resoluci n deseada reducirla a 16 colores espejarla verticalmente salvarla en formato BMP y por ltimo descartar los 118 bytes del comienzo con alg n editor hexa Entre los bytes a descartar tomaremos los bytes 54 a 117 los cuales corresponden a la paleta en formato BGRO 4 bytes y la guardaremos como RGB Configuraci n del S1D13705 Para obtener los valores a setear en cada uno de los registros utilizamos el software de configuraci n provisto por el fabricante definiendo un display gen rico color de un s lo panel STN de 320x240 pixels con datos en formato 2 La frecuencia de reloj corresponder al utilizado en este caso 20 MHz el cual haremos que se divida a la mitad para mantener las frecuencias de operaci n dentro de los rangos recomendados por el fabricante del display solapa clocks Recordemos indicar 4bpp en la solapa Preferences E
8. funci n r pida que copie la imagen directamente desde xmem leyendo por words y escribiendo de a dos bytes en el S1D13705 B sicamente modificamos el c digo de xmem2root y lo adaptamos a nuestros prop sitos En la CAN 029 encontrar n una rutina m s simple pero que hace uso de una funci n externa que resuelve el mapeo de direcci n absoluta en CAN 032 6 CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit 20 bits a valores de XPC y direcci n l gica Este ejemplo es una muestra de c mo suceden las cosas a nivel assembler directamente IY address IX 0 data left IX 1 data right writew13705 ld hl iy get A15 A0 ex de hl in DE call ab2 put addresses and BHE ld h1 PCDR apunta a port paralelo ioi res 2 HL baja CS ld a IX 0 lee dato ioi ld PADR a pone dato ld a 0x84 ioi ld SPCR a A salidas ld hl PBDR apunta a port paralelo ioi res 6 HL baja WEO wwaitl ioi ld a hl rca jr nc wwaitl ioi set 6 HL lee port paralelo chequea bit 0 WAIT espera hasta que NOWAIT sube WEO gt 1 BCLK despu s de NOWAIT r r r f ld h1 PCDR apunta a port paralelo ioi set 2 HL sube CS ld hl iy lee address inc hl inc address ex de hl A15 A0 in DE Call ab2 address bus ld h1 PCDR apunta a port paralelo ioi res 2 HL baja CS ld a IX 1 lee dato ioi ld PADR a pone dato ld a 0x84 ioi ld SPCR a A salidas
9. l resto de los par metros podemos dejar los valores por defecto o leer detenidamente el manual t cnico del S1D13705 para saber c mo configurar a nuestro antojo Exportamos los datos en un archivo de tipo C header file s1d13705 h el cual podremos editar e incluir en el c digo para Rabbit 195 81D13705 Configuration Utility Build 9 Eile Help General Preferences Clocks Panel Panel Power Registers Panel type Data width Panel color r Dual panel r Polarity E STN C Abit Mono Single FPLINE FPFRAME M Fomat2 C ebt m Mak le pua C Hih E High Ea FPSHIFT L Repeat C Low C Low o Color Panel dimensions Nor display periods Timings width e2 l H pizels 32 2 Frame rate 113H2z E 3 Height 240 Y lines 11 pu A eigi d Pixel clock 10 000 MHz M TFT FPLINE pixels y TFT FPFRAME lines Predefined panels Start pos 264 Gene Si ce Pixel clock should be set to 6 250 MHz l Diagnostics Hardware de interfaz Si bien el S1D13705 puede funcionar a 3 5V hemos elegido para esta nota un RCM2100 y operaremos a 5V No podemos emplear el bus de Rabbit para agilizar la operaci n dado que debemos respetar la petici n de espera cuando el controlador nos lo indique y Rabbit no tiene l nea de WAIT READY o equivalente sino CAN 032 2 CAN 032 Utilizaci n de displays LCD color con controladores
10. la operaci n observamos la se al WAIT para ver si podemos seguir adelante con la operaci n o debemos esperar A los fines pr cticos incluimos toda la operaci n de generaci n de l neas de direcciones en una subrutina Dado que tendremos bastantes datos para escribir necesitamos hacerlo r pido raz n por la cual utilizamos assembler para las rutinas cr ticas asm root read13705 call addressbus ld hl PCDR ioi res 2 HL ld hl PBDR ioi res 7 HL rwait ioi ld a h1 rrca jr nc rwait ioi ld a PADR ioi set 7 HL ld h1 PCDR ioi set 2 HL ld h 0 ld l a ret writel3705 call addressbus ld h1 PCDR ioi res 2 HL ld hl sp 4 ld a 1 ioi ld PADR a ld a 0x84 ioi ld SPCR a ld hl PBDR ioi res 6 HL wwait CAN 032 Se Se 5 Se se Se Se Se Se Se Se Se Se Se 5 se pone addresses y BHE apunta a port paralelo baja CS apunta a port paralelo baja RD lee port paralelo chequea bit 0 WAIT espera hasta que NOWAIT lee dato sube RD apunta a port paralelo sube CS put addresses and BHE apunta a port paralelo baja CS lee dato pone dato A salidas apunta a port paralelo baja WEO CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit ioi ld a hl lee port paralelo rrca Chequea bit 0 WAIT jr nc wwait espera hasta que NOWAIT ioi set 6 HL sube WEO gt 1 BCLK luego de NOWAIT ld h1 PCDR apunta a port paralelo ioi set 2
11. n sido correctamente inicializados por ejemplo mediante un buffer adicional con una constante RC en el pin de habilitaci n CAN 032 9
12. ra 4bpp es similar pero se empaquetan dos pixels por byte y el pixel de la izquierda ocupa el nibble m s significativo Es posible almacenar varias pantallas en memoria y cambiar la posici n de inicio siempre y cuando claro est su tama o y resoluci n permitan que quepa La cantidad de colores determinada es un ndice dentro de una paleta RGB 4 4 4 es decir 4096 colores posibles y el controlador maneja todo esto de forma transparente el programador especifica el modo de operaci n carga la paleta y trabaja con los ndices similar a como se har a con cualquier pantalla o formato de archivo en modo indexado indexed color Desarrollo propuesto Para mantener la simpleza optamos por mantenernos dentro de un mapa de 64K para el direccionamiento de memoria Al direccionar registros lo indicamos mediante una llamada especial para operar sobre A16 Esto limita la capacidad de almacenamiento interno de pantallas pero permite simplificar el software de bajo nivel albergando una pantalla completa de 320x240 pixels en 4bpp 16 colores por pixel CAN 032 1 CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit Algoritmos Para ubicar un punto en pantalla calculamos su posici n en memoria sabiendo que alojamos dos pixels por xX X dode E hae nda byte es decir mem 7 160 y El resto de z Pos dir qu nibble utilizar Para graficar funciones debemos tener en cuenta que la coordenada 0 0 se halla
13. ss Register MSB 0x0E 0x00 Screen 2 Start Address Register LSB Ox0F 0x00 Screen 2 Start Address Register MSB 0x10 0x00 Screen Start Address Overflow Register 0x11 0x00 Memory Address Offset Register 0x12 OxFF Screen 1 Vertical Size Register LSB t 0x13 0x03 F Screen 1 Vertical Size Register MSB 0x18 0x00 GPIO Configuration Control Register LORO 0x02 GPIO Status Control Register Ox1A 0x00 Scratch Pad Register 0x1B 0x00 SwivelView Mode Register t Ox1C OXA0 Line Byte Count Register y define SIDNUMREGS 25 fdefine SIDREGOFFSET OxXFFEO define SIDMEMSIZE 38400 void init13705 int ir BitWrPortlI PCDR amp PCDRShadow 1 4 Al6 1 for 1 1 1 lt S1DNUMREGS i writel3705 aSlDRegs i Index S1DREGOFFSET aSlDRegs i Value BitWrPortlI PCDR PCDRShadow 0 4 A16 0 writepalette VGApalette Software El resto del software lo escribimos mayormente en C por comodidad y velocidad de desarrollo Se trata de simples y comunes rutinas que no incluiremos aqu para no extender el texto pero que el lector puede obtener del archivo adjunto con el software o consultar en cualquiera de las otras notas de aplicaci n dado que son muy similares Una excepci n es el volcado de im genes para el cual escribimos una funci n especial en assembler Dado el A 320x240 ES E tama o de una imagen E m bytes necesitamos una
14. tos a escribir en los diferentes registros La imagen a enviar al display se aloja en una RAM interna de 80KB 81920 bytes la cual es direccionada de forma lineal por diecisiete l neas de address y accesible mediante un bus de datos de 16 bits En la parte superior del mapa de memoria se encuentran los treinta y dos registros de control 0x1FFE0 que nos permiten controlar el funcionamiento a voluntad La interfaz entre el S1D13705 y el procesador host puede elegirse entre una variedad de procesador espec ficos soportados y dos modos gen ricos uno de los cuales emplearemos en la presente aplicaci n mediante pines destinados a tal fin El arbitraje de la memoria entre la generaci n de la imagen en el display y el acceso por parte del procesador se resuelve mediante la petici n de wait states al procesador Puede funcionar tanto con procesadores y displays de 3 3 como de 5V mientras que el core funciona a 3 3V Software El S1D13705 se encarga de todo lo referente al despliegue de la imagen la cual reside como dij ramos en su memoria interna 80KB Mediante los registros de control es posible indicar en qu zona de memoria comienza la pantalla y su tama o as como tambi n la cantidad de bits asignados a definir el color de cada pixel lo cual definir la distribuci n de la memoria Para 8bpp cada byte representa un pixel y los mismos se distribuyen de arriba a abajo y de izquierda a derecha conforme avanzan las posiciones de memoria Pa
15. umpb1k dest imgdata tocopy dest tocopy lt lt l1 imgdata tocopy lt lt 1 len tocopy a iy dest hl length count words not bytes c b length preserve BC 6 copying word by word 4 4 5 critical path word paldata Como punto importante tengamos en cuenta al inicializar el m dulo de setear correctamente los pines bidireccionales en el sentido en que los usamos y todos en el estado inactivo Inmediatamente despu s inicializamos el chip WrPortlI WrPortlI WrPortlI WrPortlI WrPortlI SPCR SPCRShadow 0x80 PA0O 7 Inputs PEDDR PEDDRShadow AB11111111 PDDDR PDDDRShadow AB11111111 PBDR PBDRShadow 1B11000000 PCDR PCDRShadow 1B11111111 init13705 5 Nota importante Existe un inconveniente en el arranque que es el hecho de que el Rabbit puede poner en estado activo varias de las se ales de control generando contenciones en el bus del S1D13705 y causando excesivo consumo de corriente Esta situaci n se prolonga hasta tanto el Rabbit es correctamente inicializado y dependiendo del tipo de fuente de alimentaci n utilizada puede dificultar el arranque o tal vez causar da o a alguno de los chips Se CAN 032 CAN 032 Utilizaci n de displays LCD color con controladores S1D13705 y Rabbit recomienda en un entorno de producci n limitar estas condiciones Una posibilidad es impedir que la se al CS se active hasta tanto los pines de I O ha
Download Pdf Manuals
Related Search
Related Contents
Pyle PLRD133F english contents contents 老 健 DIáRIO DO ExECUTIvO - Pesquisa do Diário Oficial de Minas Gerais serie videocamera megapixe l esterna ir di rete guida all`installazione Wilson PGX-2 User's Manual Visualizza il manuale Dissertação Copyright © All rights reserved.
Failed to retrieve file