forked from Bodmer/TFT_eSPI
The library has been cleaned up as it has got a bit untidy due to the large number of small incremental changes. 4bit Sprite examples renaed to be consistent with others. alphaBlend example moved to generic folder (alphaBlend fn was moved to TFT_eSPI class). Added sections + explanatory comments to functions prototypes. Temporary comments added for potential gotchas for noobs when using DMA. spi_begin/end functions renamed to reflect functionality. Old fns retained for backwards compatibility with user setup.h files.
110 lines
3.3 KiB
C
110 lines
3.3 KiB
C
|
|
// This is the command sequence that initialises the ST7796 driver
|
|
//
|
|
// This setup information uses simple 8 bit SPI writecommand() and writedata() functions
|
|
//
|
|
// See ST7735_Setup.h file for an alternative format
|
|
|
|
#define TFT_INIT_DELAY 0
|
|
{
|
|
delay(120);
|
|
|
|
writecommand(0x01); //Software reset
|
|
delay(120);
|
|
|
|
writecommand(0x11); //Sleep exit
|
|
delay(120);
|
|
|
|
writecommand(0xF0); //Command Set control
|
|
writedata(0xC3); //Enable extension command 2 partI
|
|
|
|
writecommand(0xF0); //Command Set control
|
|
writedata(0x96); //Enable extension command 2 partII
|
|
|
|
writecommand(0x36); //Memory Data Access Control MX, MY, RGB mode
|
|
writedata(0x48); //X-Mirror, Top-Left to right-Buttom, RGB
|
|
|
|
writecommand(0x3A); //Interface Pixel Format
|
|
writedata(0x05); //Control interface color format set to 16
|
|
|
|
|
|
writecommand(0xB4); //Column inversion
|
|
writedata(0x01); //1-dot inversion
|
|
|
|
writecommand(0xB6); //Display Function Control
|
|
writedata(0x20); //RGB interface for RAM access, RGB transfer in DE mode
|
|
//display data path in memory
|
|
//Gate outputs in non-display area in Normal scan
|
|
//Source output in non-display area =V63
|
|
|
|
writedata(0x02); //Source Output Scan from S1 to S960, Gate Output scan from G1 to G480, scan cycle=2
|
|
writedata(0x3B); //LCD Drive Line=8*(59+1)
|
|
|
|
writecommand(0xE8); //Display Output Ctrl Adjust
|
|
writedata(0x40);
|
|
writedata(0x8A);
|
|
writedata(0x00);
|
|
writedata(0x00);
|
|
writedata(0x29); //Source eqaulizing period time= 22.5 us
|
|
writedata(0x19); //Timing for "Gate start"=25 (Tclk)
|
|
writedata(0xA5); //Timing for "Gate End"=37 (Tclk), Gate driver EQ function ON
|
|
writedata(0x33);
|
|
|
|
writecommand(0xC1); //Power control2
|
|
writedata(0x06); //VAP(GVDD)=3.85+( vcom+vcom offset), VAN(GVCL)=-3.85+( vcom+vcom offset)
|
|
|
|
writecommand(0xC2); //Power control 3
|
|
writedata(0xA7); //Source driving current level=low, Gamma driving current level=High
|
|
|
|
writecommand(0xC5); //VCOM Control
|
|
writedata(0x18); //VCOM=0.9
|
|
|
|
delay(120);
|
|
|
|
//ST7796 Gamma Sequence
|
|
writecommand(0xE0); //Gamma"+"
|
|
writedata(0xF0);
|
|
writedata(0x09);
|
|
writedata(0x0b);
|
|
writedata(0x06);
|
|
writedata(0x04);
|
|
writedata(0x15);
|
|
writedata(0x2F);
|
|
writedata(0x54);
|
|
writedata(0x42);
|
|
writedata(0x3C);
|
|
writedata(0x17);
|
|
writedata(0x14);
|
|
writedata(0x18);
|
|
writedata(0x1B);
|
|
|
|
writecommand(0xE1); //Gamma"-"
|
|
writedata(0xE0);
|
|
writedata(0x09);
|
|
writedata(0x0B);
|
|
writedata(0x06);
|
|
writedata(0x04);
|
|
writedata(0x03);
|
|
writedata(0x2B);
|
|
writedata(0x43);
|
|
writedata(0x42);
|
|
writedata(0x3B);
|
|
writedata(0x16);
|
|
writedata(0x14);
|
|
writedata(0x17);
|
|
writedata(0x1B);
|
|
|
|
delay(120);
|
|
|
|
writecommand(0xF0); //Command Set control
|
|
writedata(0x3C); //Disable extension command 2 partI
|
|
|
|
writecommand(0xF0); //Command Set control
|
|
writedata(0x69); //Disable extension command 2 partII
|
|
|
|
end_tft_write();
|
|
delay(120);
|
|
begin_tft_write();
|
|
|
|
writecommand(0x29); //Display on
|
|
} |