aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gdisp/ST7735/gdisp_lld_ST7735.c53
1 files changed, 35 insertions, 18 deletions
diff --git a/drivers/gdisp/ST7735/gdisp_lld_ST7735.c b/drivers/gdisp/ST7735/gdisp_lld_ST7735.c
index 6946f231..db91f82d 100644
--- a/drivers/gdisp/ST7735/gdisp_lld_ST7735.c
+++ b/drivers/gdisp/ST7735/gdisp_lld_ST7735.c
@@ -21,14 +21,36 @@
#include "gdisp_lld_config.h"
#include "src/gdisp/gdisp_driver.h"
+#define BOARD_TYPE_B 1
+#define BOARD_TYPE_R 2
+#define BOARD_TYPE_R144 3
+
#include "board_ST7735.h"
+#if !defined(ST7735_TYPE)
+// Backward compatibility:
+ #if defined(ST7735_TYPE_R)
+ #define ST7735_TYPE BOARD_TYPE_R
+ #elif defined(ST7735_TYPE_B)
+ #define ST7735_TYPE BOARD_TYPE_B
+ #endif
+#endif
+
+#if !defined(ST7735_TYPE)
+ // It seems all modern boards is 7735R
+ #define ST7735_TYPE BOARD_TYPE_R
+#endif
+
/*===========================================================================*/
/* Driver local definitions. */
/*===========================================================================*/
#ifndef GDISP_SCREEN_HEIGHT
- #define GDISP_SCREEN_HEIGHT 160
+ #if ST7735_TYPE == BOARD_TYPE_R144
+ #define GDISP_SCREEN_HEIGHT 128
+ #else
+ #define GDISP_SCREEN_HEIGHT 160
+ #endif
#endif
#ifndef GDISP_SCREEN_WIDTH
#define GDISP_SCREEN_WIDTH 128
@@ -40,22 +62,14 @@
#define GDISP_INITIAL_BACKLIGHT 100
#endif
-// Define one of supported type, if not defined yet
-#if !defined(ST7735_TYPE_R) && !defined(ST7735_TYPE_B)
- // It seems all modern boards is 7735R
- #define ST7735_TYPE_R GFXON
-#endif
-
// Define one of supported color packing, if not defined yet
#if !defined(ST7735_COLOR_RGB) && !defined(ST7735_COLOR_BRG)
- // It seems all modern boards is RGB
+ // It seems most modern boards are RGB
+#if ST7735_TYPE == BOARD_TYPE_R144
+ #define ST7735_COLOR_RGB GFXOFF
+#else
#define ST7735_COLOR_RGB GFXON
#endif
-
-
-// Strange boars with shifted coords
-#if !defined (ST7735_SHIFTED_COORDS)
- #define ST7735_SHIFTED_COORDS GFXOFF
#endif
@@ -65,7 +79,10 @@
#define ST7735_MADCTRL_COLOR 0x08
#endif
-#if ST7735_SHIFTED_COORDS
+#if ST7735_TYPE == BOARD_TYPE_R144
+ #define ST7735_COL_SHIFT 2
+ #define ST7735_ROW_SHIFT 3
+#elif defined(ST7735_SHIFTED_COORDS) && ST7735_SHIFTED_COORDS
#define ST7735_COL_SHIFT 2
#define ST7735_ROW_SHIFT 1
#else
@@ -88,7 +105,7 @@
// Commands list copied from https://github.com/adafruit/Adafruit-ST7735-Library
#define DELAY 0x80
-#if ST7735_TYPE_B
+#if ST7735_TYPE == BOARD_TYPE_B
static const unsigned char
init_cmds[] = { // Initialization commands for 7735B screens
16, // 16 commands in list:
@@ -142,7 +159,7 @@ static const unsigned char
10, // 10 ms delay
ST7735_DISPON , DELAY, // 18: Main screen turn on, no args, w/delay
255 }; // 255 = 500 ms delay
-#elif ST7735_TYPE_R
+#elif (ST7735_TYPE == BOARD_TYPE_R) || (ST7735_TYPE == BOARD_TYPE_R144)
static const unsigned char
init_cmds[] = { // Init for 7735R, part 1 (red or green tab)
19, // 19 commands in list:
@@ -180,12 +197,12 @@ static const unsigned char
0xC0|ST7735_MADCTRL_COLOR, // row addr/col addr, bottom to top refresh
ST7735_COLMOD , 1 , // 15: set color mode, 1 arg, no delay:
0x05, // 16-bit color
- ST7735_GMCTRP1, 16 , // 1: Magical unicorn dust, 16 args, no delay:
+ ST7735_GMCTRP1, 16 , // 1: Gamma + Correction, 16 args, no delay:
0x02, 0x1c, 0x07, 0x12,
0x37, 0x32, 0x29, 0x2d,
0x29, 0x25, 0x2B, 0x39,
0x00, 0x01, 0x03, 0x10,
- ST7735_GMCTRN1, 16 , // 2: Sparkles and rainbows, 16 args, no delay:
+ ST7735_GMCTRN1, 16 , // 2: Gamma - Correction, 16 args, no delay:
0x03, 0x1d, 0x07, 0x06,
0x2E, 0x2C, 0x29, 0x2D,
0x2E, 0x2E, 0x37, 0x3F,