Muy buenas.
Estoy montando algo parecido a una radio wi-fi con un HW556a. Ya tengo casi toda la infraestructura funcionando pero ha llegado el momento de conectarle un display lcd al invento.
Estoy experimentando con un
TFT SPI de este tipo:
http://www.ebay.es/itm/200951258962?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649Les cuento cómo me está yendo y a ver si alguien puede echarme una manita
.
En principio lo conecté al
puerto paralelo del PC para trastear con él. Como un PC no dispone de hardware spi, tuve que emular el protocolo por software (
bitbanging).
Después de optimizar todo lo que pude el software controlador, conseguí hacerlo andar a
1 frame/seg lo cual es un refresco bastante pobre. Teniendo en cuenta que el puerto paralelo de un PC creo que anda por 1MB/s de transferencia y al usar un solo pin como salida serie, esta velocidad se ve reducida a 128 KB/s.
El display es de 160x128 de resolución y 16bit por pixel. Haciendo un cálculo rápido tenemos que un frame completo ocupa en memoria exactamente
40KB.
Al usar emulación por software del protocolo, el tiempo de transferencia prácticamente se duplica, por lo que el puerto está trabajando a unos 80KB/s, bastante cerca del máximo que da de sí.
Después de experimentar con el PC, decidí pasar al router y conectar el LCD por GPIO, con la esperanza de que la tasa de transferencia fuese superior.
La alimentación para el LCD la obtuve del puerto usb, y las 4 líneas de datos necesarias para el protocolo SPI las tomé prestadas de los leds de power, dsl, hspa y message. El método que encontré para activar/desactivar las líneas de datos es escribir en los ficheros /sys/devices/platform/leds-gpio.0/leds/xxxx/brightness correspondientes a cada led. No se si esto es muy ortodoxo, pero funcionar, funciona así que me lancé a reescribir el software emulador de SPI que usaba con el puerto paralelo del PC, adaptando y optimizando la escritura de datos en las líneas GPIO.
El resultado:
El funcionamiento es correcto, pero la tasa de refresco ha descendido drásticamente. Vamos, que ahora tarda
8 minutos en dibujar 1 frame.
En este punto me asaltan las dudas:
¿Pueden llegar a dar más de sí las líneas GPIO de este router o se me escapa algo?
¿Es realista pensar en poner un lcd de este tipo a, digamos, 10fps por GPIO o por el puerto serie?
Lo que estoy valorando ahora es usar un
adaptador USB-SPI como este:
http://www.ebay.es/itm/CH375B-Module-USB-SPI-interface-Communication-U-DISK-Read-Write-For-MCU-DSP-MPU-/ que no se si será sencillo hacer funcionar con openWRT
Y la otra opción que veo es utilizar un
PIC conectándolo de esta forma:
[lcd] --> (spi) --> [PIC] --> (serie) --> [router]
¿Qué me recomiendan?