TFT drivers update

This commit is contained in:
Mike 2020-07-12 13:46:00 +02:00
parent 4147eba7fd
commit 01e1cd8ada
6 changed files with 583 additions and 121 deletions

View File

@ -1,81 +1,71 @@
// Change the width and height if required (defined in portrait mode)
// or use the constructor to over-ride defaults
#define TFT_WIDTH 800
#define TFT_HEIGHT 480
#define TFT_WIDTH 480
#define TFT_HEIGHT 800
// Delay between some initialisation commands
#define TFT_INIT_DELAY 0x80 // Not used unless commandlist invoked
// Generic commands used by TFT_eSPI.cpp
#define TFT_NOP 0x00
#define TFT_SWRST 0x01
#define TFT_NOP 0x0000
#define TFT_SWRST 0x0100
#define TFT_SLPIN 0x10
#define TFT_SLPOUT 0x11
#define TFT_SLPIN 0x1000
#define TFT_SLPOUT 0x1100
#define TFT_INVOFF 0x20
#define TFT_INVON 0x21
#define TFT_INVOFF 0x2000
#define TFT_INVON 0x2100
#define TFT_DISPOFF 0x28
#define TFT_DISPON 0x29
#define TFT_DISPOFF 0x2800
#define TFT_DISPON 0x2900
#define TFT_CASET 0x2A
#define TFT_PASET 0x2B
#define TFT_RAMWR 0x2C
#define TFT_CASET 0x2A00
#define TFT_PASET 0x2B00
#define TFT_RAMRD 0x2E
#define TFT_RAMWR 0x2C00
#define TFT_RAMRD 0x2E00
#define TFT_MADCTL 0x36
#define TFT_MADCTL 0x3600
#define TFT_MAD_MY 0x80
#define TFT_MAD_MX 0x40
#define TFT_MAD_MV 0x20
#define TFT_MAD_ML 0x10
#define TFT_MAD_RGB 0x00
#define TFT_MAD_BGR 0x08
//#define TFT_MAD_MH 0x04
//#define TFT_MAD_SS 0x02
//#define TFT_MAD_GS 0x01
#define TFT_MAD_MY 0x80 /* Row Address Order */
#define TFT_MAD_MX 0x40 /* Column Address Order */
#define TFT_MAD_MV 0x20 /* Row / Column Exchange */
#define TFT_MAD_ML 0x10 /* Vertical Refresh Order - Bottom to Top */
/* Manufacturer Command Set */
#define MCS_ADRSFT 0x0000 /* Address Shift Function */
#define MCS_PANSET 0xB3A6 /* Panel Type Setting */
#define MCS_SD_CTRL 0xC0A2 /* Source Driver Timing Setting */
#define MCS_P_DRV_M 0xC0B4 /* Panel Driving Mode */
#define MCS_OSC_ADJ 0xC181 /* Oscillator Adjustment for Idle/Normal mode */
#define MCS_RGB_VID_SET 0xC1A1 /* RGB Video Mode Setting */
#define MCS_SD_PCH_CTRL 0xC480 /* Source Driver Precharge Control */
#define MCS_NO_DOC1 0xC48A /* Command not documented */
#define MCS_PWR_CTRL1 0xC580 /* Power Control Setting 1 */
#define MCS_PWR_CTRL2 0xC590 /* Power Control Setting 2 for Normal Mode */
#define MCS_PWR_CTRL4 0xC5B0 /* Power Control Setting 4 for DC Voltage */
#define MCS_PANCTRLSET1 0xCB80 /* Panel Control Setting 1 */
#define MCS_PANCTRLSET2 0xCB90 /* Panel Control Setting 2 */
#define MCS_PANCTRLSET3 0xCBA0 /* Panel Control Setting 3 */
#define MCS_PANCTRLSET4 0xCBB0 /* Panel Control Setting 4 */
#define MCS_PANCTRLSET5 0xCBC0 /* Panel Control Setting 5 */
#define MCS_PANCTRLSET6 0xCBD0 /* Panel Control Setting 6 */
#define MCS_PANCTRLSET7 0xCBE0 /* Panel Control Setting 7 */
#define MCS_PANCTRLSET8 0xCBF0 /* Panel Control Setting 8 */
#define MCS_PANU2D1 0xCC80 /* Panel U2D Setting 1 */
#define MCS_PANU2D2 0xCC90 /* Panel U2D Setting 2 */
#define MCS_PANU2D3 0xCCA0 /* Panel U2D Setting 3 */
#define MCS_PAND2U1 0xCCB0 /* Panel D2U Setting 1 */
#define MCS_PAND2U2 0xCCC0 /* Panel D2U Setting 2 */
#define MCS_PAND2U3 0xCCD0 /* Panel D2U Setting 3 */
#define MCS_GOAVST 0xCE80 /* GOA VST Setting */
#define MCS_GOACLKA1 0xCEA0 /* GOA CLKA1 Setting */
#define MCS_GOACLKA2 0xCEA7 /* GOA CLKA2 Setting */
#define MCS_GOACLKA3 0xCEB0 /* GOA CLKA3 Setting */
#define MCS_GOACLKA4 0xCEB7 /* GOA CLKA4 Setting */
#define MCS_GOAECLK 0xCFC0 /* GOA ECLK Setting */
#define MCS_GOAOPT1 0xCFC6 /* GOA Other Options 1 */
#define MCS_GOATGOPT 0xCFC7 /* GOA Signal Toggle Option Setting */
#define MCS_NO_DOC2 0xCFD0 /* Command not documented */
#define MCS_GVDDSET 0xD800 /* GVDD/NGVDD */
#define MCS_VCOMDC 0xD900 /* VCOM Voltage Setting */
#define MCS_GMCT2_2P 0xE100 /* Gamma Correction 2.2+ Setting */
#define MCS_GMCT2_2N 0xE200 /* Gamma Correction 2.2- Setting */
#define MCS_NO_DOC3 0xF5B6 /* Command not documented */
#define MCS_CMD2_ENA1 0xFF00 /* Enable Access Command2 "CMD2" */
#define MCS_CMD2_ENA2 0xFF80 /* Enable Access Orise Command2 */
#define TFT_MAD_RGB 0x00 /* RGB color filter panel */
#define TFT_MAD_BGR 0x08 /* BGR color filter panel */
#define Byte8H(ByteH) ((uint8_t)(((uint16_t)(ByteH)&0xFF00)>>8))
#define Byte8L(ByteL) ((uint8_t)( (uint16_t)(ByteL)&0x00FF))
#define TFT_CASET_CMD(x0, x1) \
DC_C; tft_Write_16(TFT_CASET); \
DC_D; tft_Write_16(Byte8H(x0)); \
DC_C; tft_Write_16(TFT_CASET + 1); \
DC_D; tft_Write_16(Byte8L(x0)); \
DC_C; tft_Write_16(TFT_CASET + 2); \
DC_D; tft_Write_16(Byte8H(x1)); \
DC_C; tft_Write_16(TFT_CASET + 3); \
DC_D; tft_Write_16(Byte8L(x1))
#define TFT_PASET_CMD(y0, y1) \
DC_C; tft_Write_16(TFT_PASET); \
DC_D; tft_Write_16(Byte8H(y0)); \
DC_C; tft_Write_16(TFT_PASET + 1); \
DC_D; tft_Write_16(Byte8L(y0)); \
DC_C; tft_Write_16(TFT_PASET + 2); \
DC_D; tft_Write_16(Byte8H(y1)); \
DC_C; tft_Write_16(TFT_PASET + 3); \
DC_D; tft_Write_16(Byte8L(y1))
#define TFT_RAMWR_CMD \
DC_C; tft_Write_16(TFT_RAMWR)
#define TFT_RAMRD_CMD \
DC_C; tft_Write_16(TFT_RAMRD)
#define writecommand16(cmd) \
writecommand(Byte8H(cmd)); writecommand(Byte8L(cmd))
#define writedata16(data) \
writedata(Byte8H(data)); writedata(Byte8L(data))

View File

@ -1,27 +1,502 @@
// This is the command sequence that initialises the NT35510 driver
// Configure NT35510 display
#define Byte8H(ByteH) ((uint8_t)(((uint16_t)(ByteH)&0xFF00)>>8))
#define Byte8L(ByteL) ((uint8_t)( (uint16_t)(ByteL)&0x00FF))
//************* NT35510初始化**********//
/* MAUCCTR: Manufacture Command Set enable */
//#Enable Page1
writecommand16(0xF000); writedata16(0x55);
writecommand16(0xF001); writedata16(0xAA);
writecommand16(0xF002); writedata16(0x52);
writecommand16(0xF003); writedata16(0x08);
writecommand16(0xF004); writedata16(0x01);
#ifndef TFT_CASET_CMD
#define TFT_CASET_CMD(x0, x1) \
DC_C; tft_Write_8(TFT_CASET); \
DC_D; tft_Write_32C(x0, x1)
#endif
/* BT1CTR: BT1 Power Control for AVDD */
//# AVDD: manual);
writecommand16(0xB600); writedata16(0x34);
writecommand16(0xB601); writedata16(0x34);
writecommand16(0xB602); writedata16(0x34);
#ifndef TFT_PASET_CMD
#define TFT_PASET_CMD(y0, y1) \
DC_C; tft_Write_8(TFT_PASET); \
DC_D; tft_Write_32C(y0, y1)
#endif
/* SETAVDD: Setting AVDD Voltage */
writecommand16(0xB000); writedata16(0x0D);//09
writecommand16(0xB001); writedata16(0x0D);
writecommand16(0xB002); writedata16(0x0D);
#define writecommand16(cmd) \
writecommand(Byte8H(cmd)); writecommand(Byte8L(cmd))
/* BT2CTR: BT2 Power Control for AVEE */
//# AVEE: manual); -6V
writecommand16(0xB700); writedata16(0x24);
writecommand16(0xB701); writedata16(0x24);
writecommand16(0xB702); writedata16(0x24);
#define writedata16(data) \
writedata(Byte8H(data)); writedata(Byte8L(data))
/* SETAVEE: Setting AVEE Voltage */
writecommand16(0xB100); writedata16(0x0D);
writecommand16(0xB101); writedata16(0x0D);
writecommand16(0xB102); writedata16(0x0D);
/* BT3CTR: BT3 Power Control for VCL */
writecommand16(0xB800); writedata16(0x24);
writecommand16(0xB801); writedata16(0x24);
writecommand16(0xB802); writedata16(0x24);
/* SETVCL: Setting VCL Voltage */
writecommand16(0xB200); writedata16(0x00);
/* BT4CTR: BT4 Power Control for VGH */
//# VGH: Clamp Enable);
writecommand16(0xB900); writedata16(0x24);
writecommand16(0xB901); writedata16(0x24);
writecommand16(0xB902); writedata16(0x24);
/* SETVGH: Setting VGH Voltage */
writecommand16(0xB300); writedata16(0x05);
writecommand16(0xB301); writedata16(0x05);
writecommand16(0xB302); writedata16(0x05);
/* VGHCTR: VGH Output Voltage - commented out */
///writecommand16(0xBF00); writedata16(0x01);
/* BT5CTR: BT5 Power Control for VGLX */
//# VGL(LVGL):
writecommand16(0xBA00); writedata16(0x34);
writecommand16(0xBA01); writedata16(0x34);
writecommand16(0xBA02); writedata16(0x34);
/* SETVGL_REG: Setting VGL_REG Voltage */
//# VGL_REG(VGLO)
writecommand16(0xB500); writedata16(0x0B);
writecommand16(0xB501); writedata16(0x0B);
writecommand16(0xB502); writedata16(0x0B);
/* SETVGP: Setting VGMP and VGSP Voltage */
//# VGMP/VGSP:
writecommand16(0xBC00); writedata16(0X00);
writecommand16(0xBC01); writedata16(0xA3);
writecommand16(0xBC02); writedata16(0X00);
/* SETVGN: Setting VGMN and VGSN Voltage */
//# VGMN/VGSN
writecommand16(0xBD00); writedata16(0x00);
writecommand16(0xBD01); writedata16(0xA3);
writecommand16(0xBD02); writedata16(0x00);
/* SETVCMOFF: Setting VCOM Offset Voltage */
//# VCOM=-0.1
writecommand16(0xBE00); writedata16(0x00);
writecommand16(0xBE01); writedata16(0x63);//4f
// VCOMH+0x01;
/* GMRCTR1: Setting Gamma 2.2 Correction for Red (Positive) */
//#R+
writecommand16(0xD100); writedata16(0x00);
writecommand16(0xD101); writedata16(0x37);
writecommand16(0xD102); writedata16(0x00);
writecommand16(0xD103); writedata16(0x52);
writecommand16(0xD104); writedata16(0x00);
writecommand16(0xD105); writedata16(0x7B);
writecommand16(0xD106); writedata16(0x00);
writecommand16(0xD107); writedata16(0x99);
writecommand16(0xD108); writedata16(0x00);
writecommand16(0xD109); writedata16(0xB1);
writecommand16(0xD10A); writedata16(0x00);
writecommand16(0xD10B); writedata16(0xD2);
writecommand16(0xD10C); writedata16(0x00);
writecommand16(0xD10D); writedata16(0xF6);
writecommand16(0xD10E); writedata16(0x01);
writecommand16(0xD10F); writedata16(0x27);
writecommand16(0xD110); writedata16(0x01);
writecommand16(0xD111); writedata16(0x4E);
writecommand16(0xD112); writedata16(0x01);
writecommand16(0xD113); writedata16(0x8C);
writecommand16(0xD114); writedata16(0x01);
writecommand16(0xD115); writedata16(0xBE);
writecommand16(0xD116); writedata16(0x02);
writecommand16(0xD117); writedata16(0x0B);
writecommand16(0xD118); writedata16(0x02);
writecommand16(0xD119); writedata16(0x48);
writecommand16(0xD11A); writedata16(0x02);
writecommand16(0xD11B); writedata16(0x4A);
writecommand16(0xD11C); writedata16(0x02);
writecommand16(0xD11D); writedata16(0x7E);
writecommand16(0xD11E); writedata16(0x02);
writecommand16(0xD11F); writedata16(0xBC);
writecommand16(0xD120); writedata16(0x02);
writecommand16(0xD121); writedata16(0xE1);
writecommand16(0xD122); writedata16(0x03);
writecommand16(0xD123); writedata16(0x10);
writecommand16(0xD124); writedata16(0x03);
writecommand16(0xD125); writedata16(0x31);
writecommand16(0xD126); writedata16(0x03);
writecommand16(0xD127); writedata16(0x5A);
writecommand16(0xD128); writedata16(0x03);
writecommand16(0xD129); writedata16(0x73);
writecommand16(0xD12A); writedata16(0x03);
writecommand16(0xD12B); writedata16(0x94);
writecommand16(0xD12C); writedata16(0x03);
writecommand16(0xD12D); writedata16(0x9F);
writecommand16(0xD12E); writedata16(0x03);
writecommand16(0xD12F); writedata16(0xB3);
writecommand16(0xD130); writedata16(0x03);
writecommand16(0xD131); writedata16(0xB9);
writecommand16(0xD132); writedata16(0x03);
writecommand16(0xD133); writedata16(0xC1);
/* GMGCTR1: Setting Gamma 2.2 Correction for Green (Positive) */
//#G+
writecommand16(0xD200); writedata16(0x00);
writecommand16(0xD201); writedata16(0x37);
writecommand16(0xD202); writedata16(0x00);
writecommand16(0xD203); writedata16(0x52);
writecommand16(0xD204); writedata16(0x00);
writecommand16(0xD205); writedata16(0x7B);
writecommand16(0xD206); writedata16(0x00);
writecommand16(0xD207); writedata16(0x99);
writecommand16(0xD208); writedata16(0x00);
writecommand16(0xD209); writedata16(0xB1);
writecommand16(0xD20A); writedata16(0x00);
writecommand16(0xD20B); writedata16(0xD2);
writecommand16(0xD20C); writedata16(0x00);
writecommand16(0xD20D); writedata16(0xF6);
writecommand16(0xD20E); writedata16(0x01);
writecommand16(0xD20F); writedata16(0x27);
writecommand16(0xD210); writedata16(0x01);
writecommand16(0xD211); writedata16(0x4E);
writecommand16(0xD212); writedata16(0x01);
writecommand16(0xD213); writedata16(0x8C);
writecommand16(0xD214); writedata16(0x01);
writecommand16(0xD215); writedata16(0xBE);
writecommand16(0xD216); writedata16(0x02);
writecommand16(0xD217); writedata16(0x0B);
writecommand16(0xD218); writedata16(0x02);
writecommand16(0xD219); writedata16(0x48);
writecommand16(0xD21A); writedata16(0x02);
writecommand16(0xD21B); writedata16(0x4A);
writecommand16(0xD21C); writedata16(0x02);
writecommand16(0xD21D); writedata16(0x7E);
writecommand16(0xD21E); writedata16(0x02);
writecommand16(0xD21F); writedata16(0xBC);
writecommand16(0xD220); writedata16(0x02);
writecommand16(0xD221); writedata16(0xE1);
writecommand16(0xD222); writedata16(0x03);
writecommand16(0xD223); writedata16(0x10);
writecommand16(0xD224); writedata16(0x03);
writecommand16(0xD225); writedata16(0x31);
writecommand16(0xD226); writedata16(0x03);
writecommand16(0xD227); writedata16(0x5A);
writecommand16(0xD228); writedata16(0x03);
writecommand16(0xD229); writedata16(0x73);
writecommand16(0xD22A); writedata16(0x03);
writecommand16(0xD22B); writedata16(0x94);
writecommand16(0xD22C); writedata16(0x03);
writecommand16(0xD22D); writedata16(0x9F);
writecommand16(0xD22E); writedata16(0x03);
writecommand16(0xD22F); writedata16(0xB3);
writecommand16(0xD230); writedata16(0x03);
writecommand16(0xD231); writedata16(0xB9);
writecommand16(0xD232); writedata16(0x03);
writecommand16(0xD233); writedata16(0xC1);
/* GMBCTR1: Setting Gamma 2.2 Correction for Blue (Positive) */
//#B+
writecommand16(0xD300); writedata16(0x00);
writecommand16(0xD301); writedata16(0x37);
writecommand16(0xD302); writedata16(0x00);
writecommand16(0xD303); writedata16(0x52);
writecommand16(0xD304); writedata16(0x00);
writecommand16(0xD305); writedata16(0x7B);
writecommand16(0xD306); writedata16(0x00);
writecommand16(0xD307); writedata16(0x99);
writecommand16(0xD308); writedata16(0x00);
writecommand16(0xD309); writedata16(0xB1);
writecommand16(0xD30A); writedata16(0x00);
writecommand16(0xD30B); writedata16(0xD2);
writecommand16(0xD30C); writedata16(0x00);
writecommand16(0xD30D); writedata16(0xF6);
writecommand16(0xD30E); writedata16(0x01);
writecommand16(0xD30F); writedata16(0x27);
writecommand16(0xD310); writedata16(0x01);
writecommand16(0xD311); writedata16(0x4E);
writecommand16(0xD312); writedata16(0x01);
writecommand16(0xD313); writedata16(0x8C);
writecommand16(0xD314); writedata16(0x01);
writecommand16(0xD315); writedata16(0xBE);
writecommand16(0xD316); writedata16(0x02);
writecommand16(0xD317); writedata16(0x0B);
writecommand16(0xD318); writedata16(0x02);
writecommand16(0xD319); writedata16(0x48);
writecommand16(0xD31A); writedata16(0x02);
writecommand16(0xD31B); writedata16(0x4A);
writecommand16(0xD31C); writedata16(0x02);
writecommand16(0xD31D); writedata16(0x7E);
writecommand16(0xD31E); writedata16(0x02);
writecommand16(0xD31F); writedata16(0xBC);
writecommand16(0xD320); writedata16(0x02);
writecommand16(0xD321); writedata16(0xE1);
writecommand16(0xD322); writedata16(0x03);
writecommand16(0xD323); writedata16(0x10);
writecommand16(0xD324); writedata16(0x03);
writecommand16(0xD325); writedata16(0x31);
writecommand16(0xD326); writedata16(0x03);
writecommand16(0xD327); writedata16(0x5A);
writecommand16(0xD328); writedata16(0x03);
writecommand16(0xD329); writedata16(0x73);
writecommand16(0xD32A); writedata16(0x03);
writecommand16(0xD32B); writedata16(0x94);
writecommand16(0xD32C); writedata16(0x03);
writecommand16(0xD32D); writedata16(0x9F);
writecommand16(0xD32E); writedata16(0x03);
writecommand16(0xD32F); writedata16(0xB3);
writecommand16(0xD330); writedata16(0x03);
writecommand16(0xD331); writedata16(0xB9);
writecommand16(0xD332); writedata16(0x03);
writecommand16(0xD333); writedata16(0xC1);
/* GMRCTR2: Setting Gamma 2.2 Correction for Red (Negative) */
//#R-///////////////////////////////////////////
writecommand16(0xD400); writedata16(0x00);
writecommand16(0xD401); writedata16(0x37);
writecommand16(0xD402); writedata16(0x00);
writecommand16(0xD403); writedata16(0x52);
writecommand16(0xD404); writedata16(0x00);
writecommand16(0xD405); writedata16(0x7B);
writecommand16(0xD406); writedata16(0x00);
writecommand16(0xD407); writedata16(0x99);
writecommand16(0xD408); writedata16(0x00);
writecommand16(0xD409); writedata16(0xB1);
writecommand16(0xD40A); writedata16(0x00);
writecommand16(0xD40B); writedata16(0xD2);
writecommand16(0xD40C); writedata16(0x00);
writecommand16(0xD40D); writedata16(0xF6);
writecommand16(0xD40E); writedata16(0x01);
writecommand16(0xD40F); writedata16(0x27);
writecommand16(0xD410); writedata16(0x01);
writecommand16(0xD411); writedata16(0x4E);
writecommand16(0xD412); writedata16(0x01);
writecommand16(0xD413); writedata16(0x8C);
writecommand16(0xD414); writedata16(0x01);
writecommand16(0xD415); writedata16(0xBE);
writecommand16(0xD416); writedata16(0x02);
writecommand16(0xD417); writedata16(0x0B);
writecommand16(0xD418); writedata16(0x02);
writecommand16(0xD419); writedata16(0x48);
writecommand16(0xD41A); writedata16(0x02);
writecommand16(0xD41B); writedata16(0x4A);
writecommand16(0xD41C); writedata16(0x02);
writecommand16(0xD41D); writedata16(0x7E);
writecommand16(0xD41E); writedata16(0x02);
writecommand16(0xD41F); writedata16(0xBC);
writecommand16(0xD420); writedata16(0x02);
writecommand16(0xD421); writedata16(0xE1);
writecommand16(0xD422); writedata16(0x03);
writecommand16(0xD423); writedata16(0x10);
writecommand16(0xD424); writedata16(0x03);
writecommand16(0xD425); writedata16(0x31);
writecommand16(0xD426); writedata16(0x03);
writecommand16(0xD427); writedata16(0x5A);
writecommand16(0xD428); writedata16(0x03);
writecommand16(0xD429); writedata16(0x73);
writecommand16(0xD42A); writedata16(0x03);
writecommand16(0xD42B); writedata16(0x94);
writecommand16(0xD42C); writedata16(0x03);
writecommand16(0xD42D); writedata16(0x9F);
writecommand16(0xD42E); writedata16(0x03);
writecommand16(0xD42F); writedata16(0xB3);
writecommand16(0xD430); writedata16(0x03);
writecommand16(0xD431); writedata16(0xB9);
writecommand16(0xD432); writedata16(0x03);
writecommand16(0xD433); writedata16(0xC1);
/* GMGCTR2: Setting Gamma 2.2 Correction for Green (Negative) */
//#G-//////////////////////////////////////////////
writecommand16(0xD500); writedata16(0x00);
writecommand16(0xD501); writedata16(0x37);
writecommand16(0xD502); writedata16(0x00);
writecommand16(0xD503); writedata16(0x52);
writecommand16(0xD504); writedata16(0x00);
writecommand16(0xD505); writedata16(0x7B);
writecommand16(0xD506); writedata16(0x00);
writecommand16(0xD507); writedata16(0x99);
writecommand16(0xD508); writedata16(0x00);
writecommand16(0xD509); writedata16(0xB1);
writecommand16(0xD50A); writedata16(0x00);
writecommand16(0xD50B); writedata16(0xD2);
writecommand16(0xD50C); writedata16(0x00);
writecommand16(0xD50D); writedata16(0xF6);
writecommand16(0xD50E); writedata16(0x01);
writecommand16(0xD50F); writedata16(0x27);
writecommand16(0xD510); writedata16(0x01);
writecommand16(0xD511); writedata16(0x4E);
writecommand16(0xD512); writedata16(0x01);
writecommand16(0xD513); writedata16(0x8C);
writecommand16(0xD514); writedata16(0x01);
writecommand16(0xD515); writedata16(0xBE);
writecommand16(0xD516); writedata16(0x02);
writecommand16(0xD517); writedata16(0x0B);
writecommand16(0xD518); writedata16(0x02);
writecommand16(0xD519); writedata16(0x48);
writecommand16(0xD51A); writedata16(0x02);
writecommand16(0xD51B); writedata16(0x4A);
writecommand16(0xD51C); writedata16(0x02);
writecommand16(0xD51D); writedata16(0x7E);
writecommand16(0xD51E); writedata16(0x02);
writecommand16(0xD51F); writedata16(0xBC);
writecommand16(0xD520); writedata16(0x02);
writecommand16(0xD521); writedata16(0xE1);
writecommand16(0xD522); writedata16(0x03);
writecommand16(0xD523); writedata16(0x10);
writecommand16(0xD524); writedata16(0x03);
writecommand16(0xD525); writedata16(0x31);
writecommand16(0xD526); writedata16(0x03);
writecommand16(0xD527); writedata16(0x5A);
writecommand16(0xD528); writedata16(0x03);
writecommand16(0xD529); writedata16(0x73);
writecommand16(0xD52A); writedata16(0x03);
writecommand16(0xD52B); writedata16(0x94);
writecommand16(0xD52C); writedata16(0x03);
writecommand16(0xD52D); writedata16(0x9F);
writecommand16(0xD52E); writedata16(0x03);
writecommand16(0xD52F); writedata16(0xB3);
writecommand16(0xD530); writedata16(0x03);
writecommand16(0xD531); writedata16(0xB9);
writecommand16(0xD532); writedata16(0x03);
writecommand16(0xD533); writedata16(0xC1);
/* GMBCTR2: Setting Gamma 2.2 Correction for Blue (Negative) */
//#B-///////////////////////////////
writecommand16(0xD600); writedata16(0x00);
writecommand16(0xD601); writedata16(0x37);
writecommand16(0xD602); writedata16(0x00);
writecommand16(0xD603); writedata16(0x52);
writecommand16(0xD604); writedata16(0x00);
writecommand16(0xD605); writedata16(0x7B);
writecommand16(0xD606); writedata16(0x00);
writecommand16(0xD607); writedata16(0x99);
writecommand16(0xD608); writedata16(0x00);
writecommand16(0xD609); writedata16(0xB1);
writecommand16(0xD60A); writedata16(0x00);
writecommand16(0xD60B); writedata16(0xD2);
writecommand16(0xD60C); writedata16(0x00);
writecommand16(0xD60D); writedata16(0xF6);
writecommand16(0xD60E); writedata16(0x01);
writecommand16(0xD60F); writedata16(0x27);
writecommand16(0xD610); writedata16(0x01);
writecommand16(0xD611); writedata16(0x4E);
writecommand16(0xD612); writedata16(0x01);
writecommand16(0xD613); writedata16(0x8C);
writecommand16(0xD614); writedata16(0x01);
writecommand16(0xD615); writedata16(0xBE);
writecommand16(0xD616); writedata16(0x02);
writecommand16(0xD617); writedata16(0x0B);
writecommand16(0xD618); writedata16(0x02);
writecommand16(0xD619); writedata16(0x48);
writecommand16(0xD61A); writedata16(0x02);
writecommand16(0xD61B); writedata16(0x4A);
writecommand16(0xD61C); writedata16(0x02);
writecommand16(0xD61D); writedata16(0x7E);
writecommand16(0xD61E); writedata16(0x02);
writecommand16(0xD61F); writedata16(0xBC);
writecommand16(0xD620); writedata16(0x02);
writecommand16(0xD621); writedata16(0xE1);
writecommand16(0xD622); writedata16(0x03);
writecommand16(0xD623); writedata16(0x10);
writecommand16(0xD624); writedata16(0x03);
writecommand16(0xD625); writedata16(0x31);
writecommand16(0xD626); writedata16(0x03);
writecommand16(0xD627); writedata16(0x5A);
writecommand16(0xD628); writedata16(0x03);
writecommand16(0xD629); writedata16(0x73);
writecommand16(0xD62A); writedata16(0x03);
writecommand16(0xD62B); writedata16(0x94);
writecommand16(0xD62C); writedata16(0x03);
writecommand16(0xD62D); writedata16(0x9F);
writecommand16(0xD62E); writedata16(0x03);
writecommand16(0xD62F); writedata16(0xB3);
writecommand16(0xD630); writedata16(0x03);
writecommand16(0xD631); writedata16(0xB9);
writecommand16(0xD632); writedata16(0x03);
writecommand16(0xD633); writedata16(0xC1);
/* MAUCCTR: Manufacture Command Set enable */
//#Enable Page0
writecommand16(0xF000); writedata16(0x55);
writecommand16(0xF001); writedata16(0xAA);
writecommand16(0xF002); writedata16(0x52);
writecommand16(0xF003); writedata16(0x08);
writecommand16(0xF004); writedata16(0x00);
/* RGBCTR: RGB Interface Signals Control */
//# RGB I/F Setting
writecommand16(0xB000); writedata16(0x08);
writecommand16(0xB001); writedata16(0x05);
writecommand16(0xB002); writedata16(0x02);
writecommand16(0xB003); writedata16(0x05);
writecommand16(0xB004); writedata16(0x02);
/* SDHDTCTR: Source Output Data Hold Time Control */
//## SDT:
writecommand16(0xB600); writedata16(0x08);
/* DPRSLCTR: Display Resolution Control */
writecommand16(0xB500); writedata16(0x50);//0x6b ???? 480x854 0x50 ???? 480x800
/* GSEQCTR: EQ Control Function for Gate Signals */
//## Gate EQ:
writecommand16(0xB700); writedata16(0x00);
writecommand16(0xB701); writedata16(0x00);
/* SDEQCTR: EQ Control Function for Source Driver */
//## Source EQ:
writecommand16(0xB800); writedata16(0x01);
writecommand16(0xB801); writedata16(0x05);
writecommand16(0xB802); writedata16(0x05);
writecommand16(0xB803); writedata16(0x05);
/* INVCTR: Inversion Driving Control */
//# Inversion: Column inversion (NVT)
writecommand16(0xBC00); writedata16(0x00);
writecommand16(0xBC01); writedata16(0x00);
writecommand16(0xBC02); writedata16(0x00);
/* DPTMCTR12: Display Timing Control 12 */
//# BOE's Setting(default)
writecommand16(0xCC00); writedata16(0x03);
writecommand16(0xCC01); writedata16(0x00);
writecommand16(0xCC02); writedata16(0x00);
/* DPFRCTR1: Display Timing Control in Normal / Idle Off Mode */
//# Display Timing:
writecommand16(0xBD00); writedata16(0x01);
writecommand16(0xBD01); writedata16(0x84);
writecommand16(0xBD02); writedata16(0x07);
writecommand16(0xBD03); writedata16(0x31);
writecommand16(0xBD04); writedata16(0x00);
/* SDVPCTR: Source Control in Vertical Porch Time */
writecommand16(0xBA00); writedata16(0x01);
/* MAUCCTR: Manufacture Command Set disable (?) */
writecommand16(0xFF00); writedata16(0xAA);
writecommand16(0xFF01); writedata16(0x55);
writecommand16(0xFF02); writedata16(0x25);
writecommand16(0xFF03); writedata16(0x01);
/* TEON: Tearing Effect Line ON */
writecommand16(0x3500); writedata16(0x00);
/* MADCTL: Memory Data Access Control */
writecommand16(TFT_MADCTL); writedata16(0x00);
/* COLMOD: Interface Pixel Format */
/* “0101” = 16-bit/pixel
0110 = 18-bit/pixel
0111 = 24-bit/pixel */
writecommand16(0x3a00); writedata16(0x55); ////55=16?/////66=18?
/* SLPOUT: Sleep Out */
writecommand16(TFT_SLPOUT);
delay(120);
/* DISPON: Display On */
writecommand16(TFT_DISPON);
/* RAMWR: Memory Write */
//writecommand16(TFT_RAMWR);
// End of NT35510 display configuration

View File

@ -1,32 +1,26 @@
// This is the command sequence that rotates the NT35510 driver coordinate frame
rotation = m % 4;
writecommand(TFT_MADCTL);
writecommand(TFT_NOP);
writecommand16(TFT_MADCTL);
switch (rotation) {
case 0: // Portrait
writedata16(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_RGB);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
writedata(0x00);
writedata(0x00);
break;
case 1: // Landscape (Portrait + 90)
writedata16(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_RGB);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
writedata((1<<5)|(1<<6));
writedata(0x00);
break;
case 2: // Inverter portrait
writedata16(TFT_MAD_RGB);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
writedata((1<<7)|(1<<6));
writedata(0x00);
break;
case 3: // Inverted landscape
writedata16(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_RGB);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
writedata((1<<7)|(1<<5));
writedata(0x00);
break;
}

View File

@ -7,25 +7,25 @@
#define TFT_INIT_DELAY 0x80 // Not used unless commandlist invoked
// Generic commands used by TFT_eSPI.cpp
#define TFT_NOP 0x00
#define TFT_SWRST 0x01
#define TFT_NOP 0x0000
#define TFT_SWRST 0x0100
#define TFT_SLPIN 0x10
#define TFT_SLPOUT 0x11
#define TFT_SLPIN 0x1000
#define TFT_SLPOUT 0x1100
#define TFT_INVOFF 0x20
#define TFT_INVON 0x21
#define TFT_INVOFF 0x2000
#define TFT_INVON 0x2100
#define TFT_DISPOFF 0x28
#define TFT_DISPON 0x29
#define TFT_DISPOFF 0x2800
#define TFT_DISPON 0x2900
#define TFT_CASET 0x2A00
#define TFT_PASET 0x2B00
#define TFT_RAMWR 0x2C
#define TFT_RAMRD 0x2E
#define TFT_RAMWR 0x2C00
#define TFT_RAMRD 0x2E00
#define TFT_MADCTL 0x36
#define TFT_MADCTL 0x3600
#define TFT_MAD_MY 0x80 /* Row Address Order */
#define TFT_MAD_MX 0x40 /* Column Address Order */
@ -101,6 +101,12 @@
DC_C; tft_Write_16(TFT_PASET + 3); \
DC_D; tft_Write_16(Byte8L(y1))
#define TFT_RAMWR_CMD \
DC_C; tft_Write_16(TFT_RAMWR)
#define TFT_RAMRD_CMD \
DC_C; tft_Write_16(TFT_RAMRD)
#define writecommand16(cmd) \
writecommand(Byte8H(cmd)); writecommand(Byte8L(cmd))

View File

@ -1,5 +1,4 @@
// This is the command sequence that initialises the OTM8009A driver
// Configure OTM8009A display
//3.97inch OTM8009 Init 20190116
/* Enter CMD2 */
@ -367,7 +366,7 @@
writecommand16(0x3A00);//ccaa[7:0] : reg setting for signal35 selection with u2d mode
writedata16(0x55);//0x55
/* Exit CMD2 - new! */
/* Exit CMD2 */
writecommand16(MCS_CMD2_ENA1);
writedata16(0xFF);
writecommand16(MCS_CMD2_ENA1 + 1);
@ -376,13 +375,11 @@
writedata16(0xFF);
/* Sleep out */
writecommand(TFT_SLPOUT);
writecommand(TFT_NOP);
writecommand16(TFT_SLPOUT);
delay(100);
/* Display on */
writecommand(TFT_DISPON);
writecommand(TFT_NOP);
writecommand16(TFT_DISPON);
delay(50);
/* Memory Write */

View File

@ -1,25 +1,25 @@
// This is the command sequence that rotates the OTM8009A driver coordinate frame
rotation = m % 4;
writecommand(TFT_MADCTL);
writecommand16(TFT_MADCTL);
switch (rotation) {
case 0: // Portrait
writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_RGB);
writedata16(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_RGB);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
break;
case 1: // Landscape (Portrait + 90)
writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_RGB);
writedata16(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_RGB);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
break;
case 2: // Inverter portrait
writedata(TFT_MAD_RGB);
writedata16(TFT_MAD_RGB);
_width = TFT_WIDTH;
_height = TFT_HEIGHT;
break;
case 3: // Inverted landscape
writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_RGB);
writedata16(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_RGB);
_width = TFT_HEIGHT;
_height = TFT_WIDTH;
break;