mirror of
https://github.com/Bodmer/TFT_eSPI.git
synced 2024-09-21 10:27:11 +00:00
Add HX8357B/C drivers
Only tested with 16 bit parallel interface
This commit is contained in:
parent
7b5f98a638
commit
8e0e7183c2
52
TFT_Drivers/HX8357B_Defines.h
Normal file
52
TFT_Drivers/HX8357B_Defines.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Change the width and height if required (defined in portrait mode)
|
||||||
|
// or use the constructor to over-ride defaults
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_HEIGHT 480
|
||||||
|
|
||||||
|
|
||||||
|
// Delay between some initialisation commands
|
||||||
|
#define TFT_INIT_DELAY 0x80 // Not used unless commandlist invoked
|
||||||
|
|
||||||
|
|
||||||
|
// Generic commands used by TFT_eSPar.cpp
|
||||||
|
#define TFT_NOP 0x00
|
||||||
|
#define TFT_SWRST 0x01
|
||||||
|
|
||||||
|
#define TFT_SLPIN 0x10
|
||||||
|
#define TFT_SLPOUT 0x11
|
||||||
|
|
||||||
|
#define TFT_INVOFF 0x20
|
||||||
|
#define TFT_INVON 0x21
|
||||||
|
|
||||||
|
#define TFT_DISPOFF 0x28
|
||||||
|
#define TFT_DISPON 0x29
|
||||||
|
|
||||||
|
#define TFT_CASET 0x2A
|
||||||
|
#define TFT_PASET 0x2B
|
||||||
|
#define TFT_RAMWR 0x2C
|
||||||
|
|
||||||
|
#define TFT_RAMRD 0x2E
|
||||||
|
|
||||||
|
#define TFT_MADCTL 0x36
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
#ifdef TFT_RGB_ORDER
|
||||||
|
#if (TFT_RGB_ORDER == 1)
|
||||||
|
#define TFT_MAD_COLOR_ORDER TFT_MAD_RGB
|
||||||
|
#else
|
||||||
|
#define TFT_MAD_COLOR_ORDER TFT_MAD_BGR
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define TFT_MAD_COLOR_ORDER TFT_MAD_BGR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TFT_IDXRD 0x00 // ILI9341 only, indexed control register read
|
76
TFT_Drivers/HX8357B_Init.h
Normal file
76
TFT_Drivers/HX8357B_Init.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
|
||||||
|
// This is the command sequence that initialises the HX8357B driver
|
||||||
|
//
|
||||||
|
// This setup information uses simple 8 bit SPI writecommand() and writedata() functions
|
||||||
|
//
|
||||||
|
// See ST7735_Setup.h file for an alternative format
|
||||||
|
|
||||||
|
|
||||||
|
// Configure HX8357-B display
|
||||||
|
writecommand(0x11);
|
||||||
|
delay(20);
|
||||||
|
writecommand(0xD0);
|
||||||
|
writedata(0x07);
|
||||||
|
writedata(0x42);
|
||||||
|
writedata(0x18);
|
||||||
|
|
||||||
|
writecommand(0xD1);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x07);
|
||||||
|
writedata(0x10);
|
||||||
|
|
||||||
|
writecommand(0xD2);
|
||||||
|
writedata(0x01);
|
||||||
|
writedata(0x02);
|
||||||
|
|
||||||
|
writecommand(0xC0);
|
||||||
|
writedata(0x10);
|
||||||
|
writedata(0x3B);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x02);
|
||||||
|
writedata(0x11);
|
||||||
|
|
||||||
|
writecommand(0xC5);
|
||||||
|
writedata(0x08);
|
||||||
|
|
||||||
|
writecommand(0xC8);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x32);
|
||||||
|
writedata(0x36);
|
||||||
|
writedata(0x45);
|
||||||
|
writedata(0x06);
|
||||||
|
writedata(0x16);
|
||||||
|
writedata(0x37);
|
||||||
|
writedata(0x75);
|
||||||
|
writedata(0x77);
|
||||||
|
writedata(0x54);
|
||||||
|
writedata(0x0C);
|
||||||
|
writedata(0x00);
|
||||||
|
|
||||||
|
writecommand(0x36);
|
||||||
|
writedata(0x0a);
|
||||||
|
|
||||||
|
writecommand(0x3A);
|
||||||
|
writedata(0x55);
|
||||||
|
|
||||||
|
writecommand(0x2A);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x01);
|
||||||
|
writedata(0x3F);
|
||||||
|
|
||||||
|
writecommand(0x2B);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x01);
|
||||||
|
writedata(0xDF);
|
||||||
|
|
||||||
|
delay(120);
|
||||||
|
writecommand(0x29);
|
||||||
|
|
||||||
|
delay(25);
|
||||||
|
|
||||||
|
// End of HX8357B display configuration
|
||||||
|
|
||||||
|
|
||||||
|
|
47
TFT_Drivers/HX8357B_Rotation.h
Normal file
47
TFT_Drivers/HX8357B_Rotation.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// This is the command sequence that rotates the HX8357C driver coordinate frame
|
||||||
|
|
||||||
|
writecommand(TFT_MADCTL);
|
||||||
|
rotation = m % 8;
|
||||||
|
switch (rotation) {
|
||||||
|
case 0: // Portrait
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MX);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 1: // Landscape (Portrait + 90)
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
case 2: // Inverter portrait
|
||||||
|
writedata( TFT_MAD_COLOR_ORDER | TFT_MAD_MY);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 3: // Inverted landscape
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV | TFT_MAD_MX | TFT_MAD_MY);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
case 4: // Portrait
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MX | TFT_MAD_MY);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 5: // Landscape (Portrait + 90)
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV | TFT_MAD_MX);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
case 6: // Inverter portrait
|
||||||
|
writedata( TFT_MAD_COLOR_ORDER);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 7: // Inverted landscape
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV | TFT_MAD_MY);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
52
TFT_Drivers/HX8357C_Defines.h
Normal file
52
TFT_Drivers/HX8357C_Defines.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Change the width and height if required (defined in portrait mode)
|
||||||
|
// or use the constructor to over-ride defaults
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_HEIGHT 480
|
||||||
|
|
||||||
|
|
||||||
|
// Delay between some initialisation commands
|
||||||
|
#define TFT_INIT_DELAY 0x80 // Not used unless commandlist invoked
|
||||||
|
|
||||||
|
|
||||||
|
// Generic commands used by TFT_eSPar.cpp
|
||||||
|
#define TFT_NOP 0x00
|
||||||
|
#define TFT_SWRST 0x01
|
||||||
|
|
||||||
|
#define TFT_SLPIN 0x10
|
||||||
|
#define TFT_SLPOUT 0x11
|
||||||
|
|
||||||
|
#define TFT_INVOFF 0x20
|
||||||
|
#define TFT_INVON 0x21
|
||||||
|
|
||||||
|
#define TFT_DISPOFF 0x28
|
||||||
|
#define TFT_DISPON 0x29
|
||||||
|
|
||||||
|
#define TFT_CASET 0x2A
|
||||||
|
#define TFT_PASET 0x2B
|
||||||
|
#define TFT_RAMWR 0x2C
|
||||||
|
|
||||||
|
#define TFT_RAMRD 0x2E
|
||||||
|
|
||||||
|
#define TFT_MADCTL 0x36
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
#ifdef TFT_RGB_ORDER
|
||||||
|
#if (TFT_RGB_ORDER == 1)
|
||||||
|
#define TFT_MAD_COLOR_ORDER TFT_MAD_RGB
|
||||||
|
#else
|
||||||
|
#define TFT_MAD_COLOR_ORDER TFT_MAD_BGR
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define TFT_MAD_COLOR_ORDER TFT_MAD_BGR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TFT_IDXRD 0x00 // ILI9341 only, indexed control register read
|
116
TFT_Drivers/HX8357C_Init.h
Normal file
116
TFT_Drivers/HX8357C_Init.h
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
|
||||||
|
// This is the command sequence that initialises the HX8357C driver
|
||||||
|
//
|
||||||
|
// This setup information uses simple 8 bit SPI writecommand() and writedata() functions
|
||||||
|
//
|
||||||
|
// See ST7735_Setup.h file for an alternative format
|
||||||
|
|
||||||
|
|
||||||
|
// Configure HX8357C display
|
||||||
|
|
||||||
|
writecommand(0xB9); // Enable extension command
|
||||||
|
writedata(0xFF);
|
||||||
|
writedata(0x83);
|
||||||
|
writedata(0x57);
|
||||||
|
delay(50);
|
||||||
|
|
||||||
|
writecommand(0xB6); //Set VCOM voltage
|
||||||
|
writedata(0x2C); //0x52 for HSD 3.0"
|
||||||
|
|
||||||
|
writecommand(0x11); // Sleep off
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
writecommand(0x35); // Tearing effect on
|
||||||
|
writedata(0x00); // Added parameter
|
||||||
|
|
||||||
|
writecommand(0x3A); // Interface pixel format
|
||||||
|
writedata(0x55); // 16 bits per pixel
|
||||||
|
|
||||||
|
//writecommand(0xCC); // Set panel characteristic
|
||||||
|
//writedata(0x09); // S960>S1, G1>G480, R-G-B, normally black
|
||||||
|
|
||||||
|
//writecommand(0xB3); // RGB interface
|
||||||
|
//writedata(0x43);
|
||||||
|
//writedata(0x00);
|
||||||
|
//writedata(0x06);
|
||||||
|
//writedata(0x06);
|
||||||
|
|
||||||
|
writecommand(0xB1); // Power control
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x15);
|
||||||
|
writedata(0x0D);
|
||||||
|
writedata(0x0D);
|
||||||
|
writedata(0x83);
|
||||||
|
writedata(0x48);
|
||||||
|
|
||||||
|
|
||||||
|
writecommand(0xC0); // Does this do anything?
|
||||||
|
writedata(0x24);
|
||||||
|
writedata(0x24);
|
||||||
|
writedata(0x01);
|
||||||
|
writedata(0x3C);
|
||||||
|
writedata(0xC8);
|
||||||
|
writedata(0x08);
|
||||||
|
|
||||||
|
writecommand(0xB4); // Display cycle
|
||||||
|
writedata(0x02);
|
||||||
|
writedata(0x40);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x2A);
|
||||||
|
writedata(0x2A);
|
||||||
|
writedata(0x0D);
|
||||||
|
writedata(0x4F);
|
||||||
|
|
||||||
|
writecommand(0xE0); // Gamma curve
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x15);
|
||||||
|
writedata(0x1D);
|
||||||
|
writedata(0x2A);
|
||||||
|
writedata(0x31);
|
||||||
|
writedata(0x42);
|
||||||
|
writedata(0x4C);
|
||||||
|
writedata(0x53);
|
||||||
|
writedata(0x45);
|
||||||
|
writedata(0x40);
|
||||||
|
writedata(0x3B);
|
||||||
|
writedata(0x32);
|
||||||
|
writedata(0x2E);
|
||||||
|
writedata(0x28);
|
||||||
|
|
||||||
|
writedata(0x24);
|
||||||
|
writedata(0x03);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x15);
|
||||||
|
writedata(0x1D);
|
||||||
|
writedata(0x2A);
|
||||||
|
writedata(0x31);
|
||||||
|
writedata(0x42);
|
||||||
|
writedata(0x4C);
|
||||||
|
writedata(0x53);
|
||||||
|
writedata(0x45);
|
||||||
|
writedata(0x40);
|
||||||
|
writedata(0x3B);
|
||||||
|
writedata(0x32);
|
||||||
|
|
||||||
|
writedata(0x2E);
|
||||||
|
writedata(0x28);
|
||||||
|
writedata(0x24);
|
||||||
|
writedata(0x03);
|
||||||
|
writedata(0x00);
|
||||||
|
writedata(0x01);
|
||||||
|
|
||||||
|
writecommand(0x36); // MADCTL Memory access control
|
||||||
|
writedata(0x48);
|
||||||
|
delay(20);
|
||||||
|
|
||||||
|
writecommand(0x21); //Display inversion on
|
||||||
|
delay(20);
|
||||||
|
|
||||||
|
writecommand(0x29); // Display on
|
||||||
|
|
||||||
|
delay(120);
|
||||||
|
|
||||||
|
// End of HX8357C display configuration
|
||||||
|
|
||||||
|
|
||||||
|
|
47
TFT_Drivers/HX8357C_Rotation.h
Normal file
47
TFT_Drivers/HX8357C_Rotation.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// This is the command sequence that rotates the HX8357C driver coordinate frame
|
||||||
|
|
||||||
|
writecommand(TFT_MADCTL);
|
||||||
|
rotation = m % 8;
|
||||||
|
switch (rotation) {
|
||||||
|
case 0: // Portrait
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MX);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 1: // Landscape (Portrait + 90)
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
case 2: // Inverter portrait
|
||||||
|
writedata( TFT_MAD_COLOR_ORDER | TFT_MAD_MY);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 3: // Inverted landscape
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV | TFT_MAD_MX | TFT_MAD_MY);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
case 4: // Portrait
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MX | TFT_MAD_MY);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 5: // Landscape (Portrait + 90)
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV | TFT_MAD_MX);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
case 6: // Inverter portrait
|
||||||
|
writedata( TFT_MAD_COLOR_ORDER);
|
||||||
|
_width = _init_width;
|
||||||
|
_height = _init_height;
|
||||||
|
break;
|
||||||
|
case 7: // Inverted landscape
|
||||||
|
writedata(TFT_MAD_COLOR_ORDER | TFT_MAD_MV | TFT_MAD_MY);
|
||||||
|
_width = _init_height;
|
||||||
|
_height = _init_width;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user