diff --git a/Adafruit_TFTLCD.cpp b/Adafruit_TFTLCD.cpp index 33a65bd..69f6a83 100644 --- a/Adafruit_TFTLCD.cpp +++ b/Adafruit_TFTLCD.cpp @@ -753,8 +753,8 @@ void Adafruit_TFTLCD::setRotation(uint8_t x) { setLR(); // CS_IDLE happens here } - if ((driver == ID_9341) || (driver == ID_HX8357D)) { - // MEME, HX8357D uses same registers but different values + if (driver == ID_9341) { + // MEME, HX8357D uses same registers as 9341 but different values uint16_t t; switch (rotation) { @@ -775,7 +775,29 @@ void Adafruit_TFTLCD::setRotation(uint8_t x) { // For 9341, init default full-screen address window: setAddrWindow(0, 0, _width - 1, _height - 1); // CS_IDLE happens here } -} + + if (driver == ID_HX8357D) { + // MEME, HX8357D uses same registers as 9341 but different values + uint16_t t; + + switch (rotation) { + case 2: + t = HX8357B_MADCTL_RGB; + break; + case 3: + t = HX8357B_MADCTL_MX | HX8357B_MADCTL_MV | HX8357B_MADCTL_RGB; + break; + case 0: + t = HX8357B_MADCTL_MX | HX8357B_MADCTL_MY | HX8357B_MADCTL_RGB; + break; + case 1: + t = HX8357B_MADCTL_MY | HX8357B_MADCTL_MV | HX8357B_MADCTL_RGB; + break; + } + writeRegister8(ILI9341_MADCTL, t ); // MADCTL + // For 8357, init default full-screen address window: + setAddrWindow(0, 0, _width - 1, _height - 1); // CS_IDLE happens here + }} #ifdef read8isFunctionalized #define read8(x) x=read8fn() diff --git a/examples/rotationtest/rotationtest.pde b/examples/rotationtest/rotationtest.pde old mode 100755 new mode 100644 index 01e0560..7b83622 --- a/examples/rotationtest/rotationtest.pde +++ b/examples/rotationtest/rotationtest.pde @@ -65,6 +65,8 @@ void setup(void) { Serial.println(F("Found HX8347G LCD driver")); } else if(identifier == 0x9341) { Serial.println(F("Found ILI9341 LCD driver")); + } else if(identifier == 0x8357) { + Serial.println(F("Found HX8357D LCD driver")); } else { Serial.print(F("Unknown LCD driver chip: ")); Serial.println(identifier, HEX); diff --git a/registers.h b/registers.h index 83f5842..810805d 100644 --- a/registers.h +++ b/registers.h @@ -162,3 +162,11 @@ #define HX8357B_SETGAMMA 0xC8 #define HX8357B_SETPANELRELATED 0xE9 + +#define HX8357B_MADCTL_MY 0x80 +#define HX8357B_MADCTL_MX 0x40 +#define HX8357B_MADCTL_MV 0x20 +#define HX8357B_MADCTL_ML 0x10 +#define HX8357B_MADCTL_RGB 0x00 +#define HX8357B_MADCTL_BGR 0x08 +#define HX8357B_MADCTL_MH 0x04