Esas son las librerias que realize un poco con las copias de las libreas de Suky y de UTFT ( a esta ultima sacandole todos los demas drivers ). Obvio que las copie habiendo tantas por internet.. pero las copie a mi forma. me puse a ver que era cada registro que tocaba, etc etc etc y como hacia para escribir en el TFT.
Con respecto a los dibujos y letras, encontre mas simple el de Suky ya que el archivo de fuentes era mas pequeño. Y su fuente escala desde una sola matriz de alfabeto, mientras que la de UTFT , hay una matriz por cada tamaño lo cual lo vuelve con una mejor definicion de la letra. Y en la libreria de UTFT permite con una variable global mantener un color de fondo, entonces cuando detectaba un 0x00 lo reemplazaba por el color de fondo, lo que le llama el modo "transparente" ( si el fondo tiene muchos colores no sirve xD
Lamentablemente no tengo ningun main.c para usarlo.
Pero basicamente es agregar todos los .h, configurarlos a los .h
usar el initTFT();
y de ahi alli era el usar cualquiera de las demas funciones para graficar:
Observa que todos tienen los parametros X e Y ( algunos de comienzo y fin )
void TFTLine(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2,uint32_t Color);
void TFTRectangle(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2,bool Filled,uint32_t Color);
void TFTCircle(uint32_t x,uint32_t y,uint32_t Radius,bool Filled,uint32_t Color);
void TFTRoundRectangle(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2,bool Filled,uint32_t Color);
void TFTDrawHexa(uint32_t x,uint32_t y, uint32_t sx, uint32_t sy, uint32_t largo, const uint16_t *Imagen);
void TFTText(unsigned short x,unsigned short y,char *PtrText,const char (*Fuente)[5],unsigned char Alto,unsigned short Color);
Programaste con CCS al TM4?
Si todo con el CCS y las libreria usada para los perifericos es el TivaWare
que por si no conoces algunas funciones para que te guies si queres llevarlo a otro compilador o libreria son:
GPIOPinWrite(Mascara, Numero): Con la mascara me hace una AND al Numero y solo modifica ese bit en el registro, sin tener que leer y volver a escribir. o hacer un bitbanding
SysCtlDelay(): Numero de ciclos del Systick a esperar. Un delay basico
SysCtlPeripheralEnable(): habilitacion del clk a los perifericos
GPIOPinTypeGPIOOutput(): Asignacion de fuerza del driver ( corriente ), direccion y tipo.
Por su parte en el touch notaras:
SSIDataPut(SSI_BASE,Data);
SSIDataPut(SSI_BASE,0x00);
SSIAdvDataPutFrameEnd(SSI2_BASE, 0x00);
En el cual uno pone el dato, el otro pongo 2 0x00 ( un dummy write ) asi envia los demas datos que le quedan del ADC (el clk sigue marchando mienrtas la salida de datos esta en bajo). Dice Advance por que de esa forma podia mantener el pin de CS ( Chip Select ) en bajo en toda la trasmision usando el modulo SPI y con ese le indico que termino ahi. Si no ocurria que cada byte enviado levantaba el CS y lo bajaba nuevamente. y perdia los bits de conversion.
Yo lo hice con SPI ( le llama SSI en el integrado de TI ), pero en la mayoria de los drivers que vi generan el clock a mano... es decir escribiendo el puerto en alto y en bajo. Asi como hice con los datos a enviar y el clock con el TFT.
Tambien no hice uso de toda la FIFO que son 16 bytes sino que solo use 3 y sin interrupciones.
Esta es una version que hice y como anduvo quedo,, pero realmetne hay que mejorarla y poder usarla con mas cosas como el puerto paralelo que ofrece el micro ( que me puede permitir el DMA, aunque los perifericos tambien me lo permiten, pero tiene FIFO xD y Clk ).