Librería gameduino 2 modificada para pantallas FT81X

Esto ya va marchando. Probando demo de streaming de audio. He utilizado un amplificador digital PAM8403 para amplificar la señal hasta 3w.

También quiero agradecer la ayuda prestada por lightcalamar, quien me ha dado algunos sabios consejos sin los que no hubiese progresado tan rapido.

Saludos!

Al final me he pasado a una fuente commutada en condiciones:

Examinando los esquemas de la riverdi tft shield me he dado cuenta de que hay un chip (NVT2008BQ) que convierte los niveles de 5v de arduino a los 3.3v del FT813. Con el shield Teensy que he intentado hacer no he tenido en cuenta esto y basicamente estaba metiendo las señales de la teensy (3.3v) a dicho conversor por el lado de los 5v. Tendre q realizar el conexionado de otra forma para evitar q las señales pasen por dicho chip, utilizando en conector CN2 que parece q maneja las señales directamente a 3.3v. El problema es que no se como acceder a la señal CS de 3.3v de la SD card del tft shield.

El Teensy 3.2 soporta lógica de 3.3V y de 5V, creo que no tendría que haber algún problema, sin embargo el teensy requiere de un cableado lo mas directo posible hacia la pantalla.

El camino que estás siguiendo es nuevo ya que desde un principio opté por el break out-20 de Riverdi, incluso para el Due y el teensy 3.2. Había experimentado previamente con lectores micro SD y di con el adecuado.

ligthcalamar decidió construir un lector a partir de uno de los adaptadores micro SD que tiene kingston y funciona correctamente. De cuando en cuando hay que formatear la tarjeta micro SD con el fin de eliminar alguno que otro error de lectura.

Te sugiero que trates de conseguir el break out-20 de Riverdi, te ahorrará muchos dolores de cabeza

El arreglo final es alimentado por USB y es suficiente para abastecer la demanda de la retroiluminación de la pantalla FT813 de 5". Recuerda que el teensy 3.2 tiene dos pines de 3.3V, uno de esos pines entrega un máximo de 250 mA. Te sugiero usar el segundo, ubicado cerca del procesador cortex.

El cableado que usé en el teensy 3.2 lo volví a usar en el teensy 3.6, lo aprendido con el lector micro SD ayudó a desistir en usar el shield de Riverdi.

Tema sobre adaptador microSD

Como bien dices TFTLCDCyg mi primera shield la he realizado con un adaptador que se vende junto a la microSD (concretamente Kington) sin embargo esto es para usuarios avanzados porque los cables han de ser muy relativamente cortos.

Encontré la solución a los adaptadores microSD funcionando a lógica de 3V3 como tiene que ser, éste puede ser usado por usuarios no tan expertos y es este;

El enlace de la tienda para comprarlo es esta

Hay que realizar unas simples modificaciones y es la mejor opción. Esto lo tengo ya preparado en mi Manual PDF que estoy realizando para pantallas comprados en HotMCU.com y compatible con Arduino DUE como ejemplo. Esta shield microSD en su formato esta preparada para realizar un simple PCB con el "cabezal" SPI de Arduino ahorrando cables, longitudes etc... yo diría que es perfecta para su manejo de "plug and play".

Lógica / conversores 3V3 y/o 5V

Esto lo detallo sin haber realizado ninguna prueba sin embargo tengo todo lo necesario para intentar hacer funcionar las pantallas HotMCU de logica 5V a 3V3 y es mas usando hasta la shield de Riverdi dado el caso.
Los conversores de nivel lógico no solo realizan esta función, sino otra muy importante que es internamente estos poseen unos buffers los cuales "planchan" la señal y la generan sin ruidos hasta cierta longitud donde las señales pueden manejarse en su origen. Si la shield de Riverdi usa esta lógica desde su propio conversor a 5V, ya que el LCD (cristal liquido) de la pantalla trabaja a 3V3 lo que se podría usar en un segundo conversor y he aquí el motivo de mi mensaje.

Es decir poner un nuevo conversor de 5V a 3V3 sería este chip; TXS0108E http://www.ti.com/lit/ds/symlink/txs0108e-q1.pdf en el cual tendríamos: 3V3· a 5V y luego 5V a 3V3 este es la solución al menos hacer trabajar mis pantallas en un futuro con Teensy o DUE.

De estas pruebas os mantendré informados.

TFTLCDCyg pero la sd esta electricamente conectada en algun punto a las mismas lineas SCK, MISO y MOSI que las que van al tft no? No has utilizado ningun componente para adaptar dicha conexion como resistencias o condensadores.

https://www.dorkbotpdx.org/blog/paul/better_spi_bus_design_in_3_steps

Mientras me llegan los adaptadores SD probare con este metodo propuesto por Paul Stoffregen el desarrollador de las Teensy para conectar directamente una teensy 3.x a un adaptador SD soldando una tira de pines:

También se pueden usar estos conversores de 5 a 3.3 V

Usé uno de esos para poder controlar algunos led WS2812b (lógica de 5V) con el teensy 3.6 (lógica de 3.3V), creo que podría usarse sin problemas para conectar las pantallas HotMCU al Due o al Teensy 3.2/3.6

El problema es cuando las señales empiezan a trabajar a altas velocidades y se distorsionar si el conversor no está diseñado específicamente para tales velocidadesvelocidades. No es lo mismo un bus i2c a 400Khz q un bus SPI a 5 o 24Mhz

Una pequeña reflexión.

Es que ganamos que el BUS SPI funcione a 5MHz o a 24 MHz? cual es la diferencia?

Por mi experiencia a mayor velocidad a veces mayores errores. Por otro lado se tendrá que tener en cuenta que todos los componentes que se conecten al BUS SPI tendrán que trabajar a la misma velocidad. Por ejemplo trabajaría un lector microSD a 24MHz?

Buenas lightcalamar un par de reflexiones sobre la velocidad del bus spi en arduino:

  • Sobre la velocidad del bus en si una mayor velocidad permite una tasa de transferencia mayor entre el ucontrolador y la memoria de la pantalla. Si quieres enviar audio, enviar imagenes con una profundidad de color de 24bits o arrays de vertices para dibujar graficos vectoriales, esto puede ser un factor limitante si el ucontrolador tiene unas prestaciones elevadas pq el bus spi si funciona lento se convertiria en el cuello de botella del sistema. Con un ucontrolador de 8bits a 16Mhz no es tan evidente pero la teensy 3.6 con una cache de 8kb y funcionando hasta 240Mhz puede exprimir al limite una mayor velocidad de transferencia del bus spi.
  • En segundo lugar, arduino introdujo las transacciones spi para que usando un mismo bus fisico se puedan conectar dispositivos dispares en cuanto a velocidad y demas caracteristicas que pueden configurarse. Cada vez que el microcontrolador inicia una transferencia, modifica la configuracion del bus spi para que se adecue al dispositivo en cuestion. Por ejemplo si la pantalla es mucho mas rapida que una tarjeta sd, cada uno funcionaria a diferentes velocidades son ningun tipo de problema.

En este videi se ve de forma muy grafica las diferencias de prestaciones que se pueden conseguir con el bus SPI en la teensy:

Recuerda que la librería GD2 la forzamos a funcionar con las pantallas FT81X, el tema pendiente es profundizar en el tema de optimización, pero antes hay algunas reflexiones que debemos considerar:

En este caso, la potencia gráfica no la da el MCU en que se conecte (arduino Due o teensy 3.6), el poder gráfico lo proporciona el chip FT810, FT811, FT812 o FT813 y la memoria que acompaña al chip (1 Mb en FT81X, 256 kb en FT80X). Hay que saber como se comunica el chip FT con la memoria y entender como interactuan con las señales SPI.

La librería GDX vincula el lector SD al funcionamiento del chip FTXX, para usar librerías como SD o SDFat, debemos deshabilitar ese vínculo, pero perdemos temporalmente la carga de assets.

Creo que no se necesita exprimir mas el bus SPI, dado que la pantalla no depende de la velocidad del MCU, al aumentar la frecuencia SPI, afectamos la distancia del cableado, es muy probable que debamos recortarlo más para que la pantalla funcione.

En el video usan pantallas ILI9341, en ese tipo de pantallas y en general la mayoría de pantallas económicas para arduino, la interacción entre el controlador de la pantalla y la unidad de procesamiento de la placa como arduino o teensy, es directa; es por eso que al insertar instrucciones FIFO o DMA vemos un aumento de potencia en los gráficos.

PD: para acceder a optimizaciones como FIFO o DMA en GD3, hay que personalizar aun mas la librería, pero esto implica diseñar desde cero la librería. Mis actividades actuales (léase familia, trabajo), me limitan a aventurarme a crear una librería GD4, partiendo de GD3.

Gracias x la respuesta, estoy de acuerdo contigo la teensy lo que puede acelerar es por ejemplo calculos intensivos que utilicen x ejemplo operaciones matemáticas intensas, dejando al FT813 el procesamiento gráfico y la actualización de la pantalla. El tema del bus spi reconozco que tendre q ponerme a estudiarlo mas a fondo y el funcionamiento de la libreria GD2/GD3. Yo tambien dispongo de tiempo limitado porque tengo q atender otras responsabilidades, pero espero q al final conseguir hacer algo interesante aplicando todo lo que hw aprendido en este foro y de vosotros.

Sigo reflexionando.

Estoy en total acuerdo con todo y lo subrayo ha escrito TFTLCDCyg porque una cosa es lograr tener una FT813 y como no una librería adecuada para su total funcionamiento.

A día de hoy se tiene con sus pros y menos contras que hace 6 meses anteriores.

Velocidades.
Bueno quizás después de los muchos años que tengo en experiencia en electrónica, se dice que por muy rápido que sea un procesador central, si el procesador GRÁFICO, no es tan rápido se obtendrán los mismos resultados. No es ley de Ohm, es ley de la rapidez.

De que te vale que el FT813Q trabaje a como máximo a 15MHz y la Teensy puede con un BUS a 24 MHz por SPI, dime que es lo que pasa.... Ves mirando las DataSheet del chip FT813Q, por cierto; DATOS DEL CHIP vas a la pagina numero 1, fíjate que solo puede como máximo llegar a un PLL de 60MHz del cual, a base de un oscilador externo de 12 MHz, tan solo puedes lograr en caso que tu lo investigues un SPI de PLL / 4 que son aproximadamente 15MHz. Por lo tanto olvídate de 24MHz, serian 15 ...

A todo ello olvídate de tener SD (en GD3 si) a no ser que como se te dijo anteriormente tu diseñes una nueva librería. Que por cierto estaremos muy encantados y por supuesto ayudarte en lo posible es tu cometido.

A todo ello, y mira que hemos hablado pero me queda la duda, y mis preguntas son estas;

  • que utilidad realmente le quieres dar a esta pantalla?
  • ver vídeos?
  • escuchar música?

Saludos.

De hecho el FT81X puede y tiene instrucciones para reproducir videos desde una memoria externa (microSD), sin embargo, nuestros amigos de FTDI se les olvidó subir el sketch para arduino, en el que podríamos acceder a esa parte del controlador.

Incluso en la ultima versión de GD2, que usamos como base para GD3, están habilitadas esas instrucciones, sin embargo no he podido dilucidar un camino para usarlas: Ejemplo 25 (EVE 2) Play Video

En el ejemplo para arduino, se les olvidó colocar el *.ino dentro del zip >:(

No obstante, contamos con una librería que ha superado mis expectativas, costó varias desveladas (cierto ligthcalamar?), y aun con las expectativas que tenemos, me atrevo a decir, que nos permite usar las mejores pantallas que se podrían usar con arduino. Nuevamente gracias James Bowman, no tengo idea del tiempo que le has dedicado a la librería GD2.

Por el momento el limite lo fijarán las habilidades de programación del usuario.

PD: les he pedido a los de FTDI que corrijan el error y nos compartan el sketch, pero tal parece que están ocupados abriendo botellas de sidra!!

Buenas a todos, despues de leer los ultimos post y filosofando un poco, creo que tendre que recorrer mi propio camino y empezar de cero de nuevo. Me llevará tiempo pero pero a veces uno tiene que descubrir su propia forma de hacer las cosas. Por ejemplo tengo en mente prescindir de la tarjeta sd de momento y guardar assets en flash, acortar el cable ffc al maximo con la idea de integrar la teensy detras de la pantalla y a mas largo plazo intentar reemplazar la libreria fat q usa gd2 por otra q soporte la sdio de la teensy para eliminar restricciones sobre la tarjeta sd q se puede utilizar. No pretendo hacer cosas imposibles, solo quiero aprovechar lo mejor de esta pantalla junto con un ucontrolador que tiene mucho q ofrecer todavía. Ahora toca probar, equivocarse y volver a probar. Seguire viendo los progresos que haceis que serán muchos pero ahora toca meterse a fondo a ver codigo fuente de FTDI, GAMEDUINO Y TEENSY y toda la documentación recopilada. Si consigo alguno de esos objetivos ya lo comentare por aqui con algo mas tangible.

Saludos!

Ofrezco el teensy 3.6 y la pantalla FT813 de 5" para las posibles pruebas de esa nueva GD4 :art:

El datasheet de la pantalla RVT50UQFNWC0X (página 8 ) señala que solo está disponible el modo 0, en la configuración de comunicación SPI; los modos 1,2 y 3 que soporta la librería SPI de arduino, no están habilitados en el chip FT813.

Acá señalan como podemos seleccionar el modo y frecuencia de comunicación

El archivo wiring.h de la librería GD2/3 tiene las instrucciones de selección del modo.

PD: un buen punto de partida sería profundizar en la librería ILI9341_t3 y entender como fue configurada, luego intentaría aislar las instrucciones relacionadas con SPI y finalmente intentaría aplicarlas en GD3

Es muy bueno discutir estos temas porque aprendemos todos, los unos de los otros mi conclusión como bien dices Javier es seguir adelante.No te voy o y vamos a escribir lo que ha costado tener al menos a día de este mensaje un punto de partida.

Siempre dije que les tenia manía a los FTDI no porque personalmente me hayan realizado algo, sino ya los drivers en mi modo de ver los hacían retorcidos y muchos de ellos inclusive a día de hoy no me funcionan pero es otro tema.

Yo soy muy entusiasta de las pantallas, me gustan mucho tratarlas me apasionan y veo con gran envidia sana, lo muy mucho que algunos sabéis de estas y me animo. Lo mejor que me ha pasado dentro de este ocio a sino conocer las FT8xx, las horas, los cientos de pruebas realizadas dan su gratificación. Incluso les digo y no lo sé en cuantos años veremos las pantallas OLED´s como dios manda, no las actuales de una pulgada o poco mas, lo primero seran caras y haber quienes las publicaran para nosotros.

Quien a probado (y lo he escrito muchas veces en el foro) las FT8xx, no vuelve a las anteriores, bueno todo es matizable dependerá para que proyecto obviamente, pero son muy hermosas cuando las tienes funcionando, vamos lo mejor que he visto para esta plataforma de Arduino, y sé que funcionan con otras tales como Teensy. Esto es lo bueno del todo. En mi modestia me toco bailar con la mas fea, me compré (todas las que tengo) pantallas de http:hotmcd.com , en una época donde en el mes de Junio con el calor que hacia me hicieron sudar de lo lindo.

Creo que no llegaré a vuestro nivel en programación, por mi parte aquí me tendréis para realizar cualquier tipo de investigación sobre el hardware de las mismas donde mas me defiendo. Llegado a este punto, tenemos la base de una librería donde es funcional y todo ello con el enorme trabajo que TFTLCDCyg a realizado. Solo tienen que observar que Gameduino2 se realizo como proyecto con aportación económica desinteresada sin embargo, los que estamos liados de una forma u otra o mejor dicho implicados, todo sale de nuestra costillas; nuestro dinero, nuestro tiempo y sin obtener nada a cambio, pues lo único la recompensa de obtener unos resultados satisfactorios los cuales nos llenan de alegría a las horas que les hemos robado a nuestras familias.

Me embarga una enorme frustración que los de FTDI no se impliquen, ellos han realizado estas pantallas y como se ha escrito anteriormente no sueltan cuerda alguna, una verdadera pena, yo he visto esos vídeos en youtube, un reproductor multimedia realizado con estas pantallas sin embargo las moscas muertas de FTDI no sueltan prenda. No hay que desanimarse, todo se logrará de una forma u otra, esto convencido.

Lo importante y acabo es desear que encontrarón una persona que es servidor que no me pienso rendir, lo hacen los que no les gusta este tipo de hobby.
Tomas.