226 lines
4.4 KiB
C
226 lines
4.4 KiB
C
#include "include.h"
|
|
#include "tft.h"
|
|
|
|
#define CommEnd() tft_write_end()
|
|
#define WriteData(v) tft_write_data(v)
|
|
#define WriteComm(v) tft_write_cmd(v)
|
|
|
|
#define GUI_TFT_SCREEN_ID 0x98
|
|
|
|
#define GUI_SCREEN_OFS_X 0
|
|
#define GUI_SCREEN_OFS_Y 5
|
|
|
|
static void tft_gui_set_window(u16 x0, u16 y0, u16 x1, u16 y1)
|
|
{
|
|
x0 += GUI_SCREEN_OFS_X;
|
|
x1 += GUI_SCREEN_OFS_X;
|
|
y0 += GUI_SCREEN_OFS_Y;
|
|
y1 += GUI_SCREEN_OFS_Y;
|
|
|
|
WriteComm(0x2A); // TFT_CASET
|
|
WriteData(BYTE1(x0));
|
|
WriteData(BYTE0(x0));
|
|
WriteData(BYTE1(x1));
|
|
WriteData(BYTE0(x1));
|
|
|
|
WriteComm(0x2B); // TFT_PASET
|
|
WriteData(BYTE1(y0));
|
|
WriteData(BYTE0(y0));
|
|
WriteData(BYTE1(y1));
|
|
WriteData(BYTE0(y1));
|
|
|
|
tft_write_end();
|
|
}
|
|
|
|
static void tft_read_id(uint8_t *buf)
|
|
{
|
|
tft_read_id_cmd(0x04);
|
|
|
|
/* dummy clock cycle */
|
|
tft_dummy_clock();
|
|
|
|
buf[0] = tft_spi_getbyte();
|
|
buf[1] = tft_spi_getbyte();
|
|
buf[2] = tft_spi_getbyte();
|
|
tft_write_end();
|
|
}
|
|
|
|
static void tft_240_JD9853a_init(void)
|
|
{
|
|
printf("tft_240_JD9853a_init\n");
|
|
|
|
tft_hw_reset();
|
|
|
|
delay_ms(50);
|
|
WriteComm(0xDF);
|
|
WriteData(0x98);
|
|
WriteData(0x53);
|
|
|
|
WriteComm(0xDE);
|
|
WriteData(0x00);
|
|
|
|
WriteComm(0xB2);
|
|
WriteData(0x32);
|
|
|
|
WriteComm(0xB7);
|
|
WriteData(0x00);
|
|
WriteData(0x35);
|
|
WriteData(0x00);
|
|
WriteData(0x5D);
|
|
|
|
WriteComm(0xBB);
|
|
WriteData(0x6C);
|
|
WriteData(0x2F);
|
|
WriteData(0x55);
|
|
WriteData(0x73);
|
|
WriteData(0x6F);
|
|
WriteData(0xF0);
|
|
|
|
WriteComm(0xC0);
|
|
WriteData(0x22);
|
|
WriteData(0xA2);
|
|
|
|
WriteComm(0xC1);
|
|
WriteData(0x12); // BACKSCAN=0A
|
|
|
|
WriteComm(0xC3);
|
|
WriteData(0x7D);
|
|
WriteData(0x04);
|
|
WriteData(0x04);
|
|
WriteData(0x08);
|
|
WriteData(0xC2);
|
|
WriteData(0x72);
|
|
WriteData(0x22);
|
|
WriteData(0x77);
|
|
|
|
WriteComm(0xC4);
|
|
WriteData(0x00);
|
|
WriteData(0x00);
|
|
WriteData(0x99); // LN=296+10=306Line
|
|
WriteData(0x79);
|
|
WriteData(0x1B);
|
|
WriteData(0x0B);
|
|
WriteData(0x16);
|
|
WriteData(0x79);
|
|
WriteData(0x1B);
|
|
WriteData(0x0B);
|
|
WriteData(0x16);
|
|
WriteData(0x82);
|
|
|
|
WriteComm(0xC8);
|
|
WriteData(0x3F);
|
|
WriteData(0x29);
|
|
WriteData(0x20);
|
|
WriteData(0x14);
|
|
WriteData(0x1B);
|
|
WriteData(0x1E);
|
|
WriteData(0x1A);
|
|
WriteData(0x1A);
|
|
WriteData(0x19);
|
|
WriteData(0x19);
|
|
WriteData(0x0E);
|
|
WriteData(0x0E);
|
|
WriteData(0x0B);
|
|
WriteData(0x07);
|
|
WriteData(0x03);
|
|
WriteData(0x02);
|
|
WriteData(0x3F);
|
|
WriteData(0x29);
|
|
WriteData(0x20);
|
|
WriteData(0x14);
|
|
WriteData(0x1B);
|
|
WriteData(0x1E);
|
|
WriteData(0x1A);
|
|
WriteData(0x1A);
|
|
WriteData(0x19);
|
|
WriteData(0x19);
|
|
WriteData(0x1E);
|
|
WriteData(0x0E);
|
|
WriteData(0x0B);
|
|
WriteData(0x07);
|
|
WriteData(0x03);
|
|
WriteData(0x02);
|
|
|
|
WriteComm(0xD0);
|
|
WriteData(0x04);
|
|
WriteData(0x04);
|
|
WriteData(0x6C);
|
|
WriteData(0x1C);
|
|
WriteData(0x03);
|
|
|
|
WriteComm(0xD7);
|
|
WriteData(0x00);
|
|
WriteData(0x30);
|
|
|
|
WriteComm(0xE6);
|
|
WriteData(0x10);
|
|
|
|
WriteComm(0xDE);
|
|
WriteData(0x01);
|
|
|
|
WriteComm(0xBB);
|
|
WriteData(0x04); // TE_SEL
|
|
WriteComm(0xD7);
|
|
WriteData(0x12); // INH_CHKSUM_SEL
|
|
|
|
WriteComm(0xB7);
|
|
WriteData(0x03);
|
|
WriteData(0x13);
|
|
WriteData(0xE5);
|
|
WriteData(0x38);
|
|
WriteData(0x38);
|
|
|
|
WriteComm(0xC1);
|
|
WriteData(0x14);
|
|
WriteData(0x15);
|
|
WriteData(0xC0);
|
|
|
|
WriteComm(0xC2);
|
|
WriteData(0x06);
|
|
WriteData(0x3A);
|
|
|
|
WriteComm(0xC4);
|
|
WriteData(0x72);
|
|
WriteData(0x12);
|
|
|
|
WriteComm(0xBE);
|
|
WriteData(0x00);
|
|
|
|
WriteComm(0xDE);
|
|
WriteData(0x00);
|
|
|
|
WriteComm(0x35);
|
|
WriteData(0x00);
|
|
|
|
WriteComm(0x36);
|
|
WriteData(0x00);
|
|
|
|
WriteComm(0x3A);
|
|
WriteData(0x05);
|
|
|
|
WriteComm(0x2A);
|
|
WriteData(0x00);
|
|
WriteData(0x00);
|
|
WriteData(0x00);
|
|
WriteData(0xEF);
|
|
|
|
WriteComm(0x2B);
|
|
WriteData(0x00);
|
|
WriteData(0x05);
|
|
WriteData(0x01);
|
|
WriteData(0x2C);
|
|
|
|
WriteComm(0x11);
|
|
delay_ms(120);
|
|
|
|
WriteComm(0x29);
|
|
delay_ms(10);
|
|
}
|
|
|
|
tft_driver_t tft_driver_240_JD9853a = {
|
|
.id = GUI_TFT_SCREEN_ID,
|
|
.init = tft_240_JD9853a_init,
|
|
.read_id = tft_read_id,
|
|
.set_window = tft_gui_set_window,
|
|
};
|