Display_Lib_RPI 2.6.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
GC9D01_TFT_LCD_RDL.hpp
Go to the documentation of this file.
1
7#pragma once
8
9// Section Libraries
10#include <cstdint>
11#include <cstdbool>
12#include <cstring>
13#include <lgpio.h>
15
20{
21
22public:
23
24 GC9D01_TFT();
25 ~GC9D01_TFT(){};
26
27 // Enums
57
60 // Functions
61 // From graphics virtual
62 virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override;
63 //Setup related
64 void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t); //SW SPI
65 void TFTSetupGPIO(int8_t, int8_t); // HW SPI
66 void TFTInitScreenSize(uint16_t w = 160, uint16_t h = 160,
68 void TFTInitOffsets(uint16_t XLstart = 0, uint16_t YLstart = 0, uint16_t XPstart= 0, uint16_t YPstart = 0);
69 rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev ); // SW SPI
70 rdlib::Return_Codes_e TFTInitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
72 uint16_t HighFreqDelayGet(void);
73 void HighFreqDelaySet(uint16_t);
75
76 // Screen related
78 void TFTchangeInvertMode(bool m);
80 void TFTenableDisplay(bool m);
81 void TFTsetBrightness(uint8_t level);
82 void TFTsetScrollArea(uint16_t topFixed, uint16_t scrollArea, uint16_t bottomFixed);
83 void TFTsetScrollStart(uint16_t vsp);
84 void TFTScrollModeLeave(void);
85
86private:
87
90 void TFTSetupResetPin(int8_t rst);
92 void TFTinitByResolution(void);
93 void DualGatecmdInitSequence(void); // default
99
100 // Display
103 bool _displayOn = false;
104 const uint16_t _sleepDelay = 120;
105 // Screen
106 uint16_t _widthStartTFT = 160;
107 uint16_t _heightStartTFT = 160;
108 // Screen Offsets
109 uint16_t _GC9D01_X_Portrait = 0;
110 uint16_t _GC9D01_Y_Portrait = 0;
111 uint16_t _GC9D01_X_Landscape = 0;
112 uint16_t _GC9D01_Y_Landscape = 0;
113 uint16_t _GC9D01_X_Offset = 0;
114 uint16_t _GC9D01_Y_Offset = 0;
115 // SPI related
116 int _spiDev = 0;
117 int _spiChan = 0;
118 int _spiBaud = 50000;
119 int _spiFlags = 0;
120 bool _resetPinOn = true;
122 // GC9D01 registers + Commands
127 {
128 static constexpr uint8_t MY = 0x80;
129 static constexpr uint8_t MX = 0x40;
130 static constexpr uint8_t MV = 0x20;
131 static constexpr uint8_t ML = 0x10;
132 static constexpr uint8_t RGB = 0x00;
133 static constexpr uint8_t BGR = 0x08;
134 static constexpr uint8_t MH = 0x04;
135 };
136
137 // GC9D01 registers + Commands
138 static constexpr uint8_t GC9D01_SWRESET = 0x01;
139 static constexpr uint8_t GC9D01_RDDID = 0x04;
140 static constexpr uint8_t GC9D01_RDDST = 0x09;
142 static constexpr uint8_t GC9D01_SLPIN = 0x10;
143 static constexpr uint8_t GC9D01_SLPOUT = 0x11;
144 static constexpr uint8_t GC9D01_PTLON = 0x12;
145 static constexpr uint8_t GC9D01_NORON = 0x13;
146 static constexpr uint8_t GC9D01_DISPOFF = 0x28;
147 static constexpr uint8_t GC9D01_DISPON = 0x29;
148 static constexpr uint8_t GC9D01_IDLEOFF = 0x38;
149 static constexpr uint8_t GC9D01_IDLEON = 0x39;
151 static constexpr uint8_t GC9D01_INVOFF = 0x20;
152 static constexpr uint8_t GC9D01_INVON = 0x21;
153 static constexpr uint8_t GC9D01_CASET = 0x2A;
154 static constexpr uint8_t GC9D01_RASET = 0x2B;
155 static constexpr uint8_t GC9D01_RAMWR = 0x2C;
156 static constexpr uint8_t GC9D01_PTLAR = 0x30;
157 static constexpr uint8_t GC9D01_VSCRDEF = 0x33;
158 static constexpr uint8_t GC9D01_TEOFF = 0x34;
159 static constexpr uint8_t GC9D01_TEON = 0x35;
160 static constexpr uint8_t GC9D01_MADCTL = 0x36;
161 static constexpr uint8_t GC9D01_VSCRSADD = 0x37;
162 static constexpr uint8_t GC9D01_COLMOD = 0x3A;
163 static constexpr uint8_t GC9D01_CONTINUE = 0x3C;
164 static constexpr uint8_t GC9D01_TEARSET = 0x44;
165 static constexpr uint8_t GC9D01_GETLINE = 0x45;
166 static constexpr uint8_t GC9D01_SETBRIGHT = 0x51;
167 static constexpr uint8_t GC9D01_SETCTRL = 0x53;
169 static constexpr uint8_t GC9D01_RGB_CTRL = 0xB0;
170 static constexpr uint8_t GC9D01_TEWC = 0xB4;
171 static constexpr uint8_t GC9D01_BLANK_PORCH_CTRL = 0xB5;
172 static constexpr uint8_t GC9D01_FUNCTION_CTRL = 0xB6;
173 static constexpr uint8_t GC9D01_DUAL_SINGLE = 0xBF;
175 static constexpr uint8_t GC9D01_POWER_CTRL = 0xC1;
176 static constexpr uint8_t GC9D01_VREG1A_CTRL = 0xC3;
177 static constexpr uint8_t GC9D01_VREG1B_CTRL = 0xC4;
178 static constexpr uint8_t GC9D01_VREG2A_CTRL = 0xC9;
180 static constexpr uint8_t GC9D01_RDID1 = 0xDA;
181 static constexpr uint8_t GC9D01_RDID2 = 0xDB;
182 static constexpr uint8_t GC9D01_RDID3 = 0xDC;
184 static constexpr uint8_t GC9D01_GAMMA1 = 0xF0;
185 static constexpr uint8_t GC9D01_GAMMA2 = 0xF1;
186 static constexpr uint8_t GC9D01_GAMMA3 = 0xF2;
187 static constexpr uint8_t GC9D01_GAMMA4 = 0xF3;
189 static constexpr uint8_t GC9D01_SPI2DATA = 0xB1;
190 static constexpr uint8_t GC9D01_INVERSION = 0xEC;
191 static constexpr uint8_t GC9D01_IFACE = 0xF6;
192 static constexpr uint8_t GC9D01_INREGEN1 = 0xFE;
193 static constexpr uint8_t GC9D01_INREGEN2 = 0xEF;
195}; //end of GC9D01_TFT class
196
197// ********************** EOF *********************
Class to control GC9D01 TFT basic functionality.
Definition GC9D01_TFT_LCD_RDL.hpp:20
int _spiDev
Definition GC9D01_TFT_LCD_RDL.hpp:116
void DualGatecmdInitSequence120x160(void)
GC9D01 init command sequence for dual Gate 120x160 variant.
Definition GC9D01_TFT_LCD_RDL.cpp:767
static constexpr uint8_t GC9D01_IFACE
Definition GC9D01_TFT_LCD_RDL.hpp:191
static constexpr uint8_t GC9D01_MADCTL
Definition GC9D01_TFT_LCD_RDL.hpp:160
GC9D01_TFT()
Constructor for class GC9D01_TFT.
Definition GC9D01_TFT_LCD_RDL.cpp:12
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition GC9D01_TFT_LCD_RDL.cpp:136
static constexpr uint8_t GC9D01_SPI2DATA
Definition GC9D01_TFT_LCD_RDL.hpp:189
void TFTchangeInvertMode(bool m)
Toggle the invert mode.
Definition GC9D01_TFT_LCD_RDL.cpp:341
static constexpr uint8_t GC9D01_VREG1B_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:177
static constexpr uint8_t GC9D01_GETLINE
Definition GC9D01_TFT_LCD_RDL.hpp:165
bool _resetPinOn
Definition GC9D01_TFT_LCD_RDL.hpp:120
static constexpr uint8_t GC9D01_CONTINUE
Definition GC9D01_TFT_LCD_RDL.hpp:163
static constexpr uint8_t GC9D01_SETBRIGHT
Definition GC9D01_TFT_LCD_RDL.hpp:166
static constexpr uint8_t GC9D01_INREGEN2
Definition GC9D01_TFT_LCD_RDL.hpp:193
void TFTsetScrollArea(uint16_t topFixed, uint16_t scrollArea, uint16_t bottomFixed)
This method defines the Vertical Scrolling Area of the display where:
Definition GC9D01_TFT_LCD_RDL.cpp:313
static constexpr uint8_t GC9D01_TEARSET
Definition GC9D01_TFT_LCD_RDL.hpp:164
static constexpr uint8_t GC9D01_RASET
Definition GC9D01_TFT_LCD_RDL.hpp:154
PowerState_e
GC9D01 power states based on the power control flow chart. These states combine the modes: Normal/Par...
Definition GC9D01_TFT_LCD_RDL.hpp:35
static constexpr uint8_t GC9D01_TEON
Definition GC9D01_TFT_LCD_RDL.hpp:159
static constexpr uint8_t GC9D01_RDID3
Definition GC9D01_TFT_LCD_RDL.hpp:182
uint16_t _GC9D01_Y_Landscape
Definition GC9D01_TFT_LCD_RDL.hpp:112
void TFTsetBrightness(uint8_t level)
Set display brightness (0–255).
Definition GC9D01_TFT_LCD_RDL.cpp:623
static constexpr uint8_t GC9D01_NORON
Definition GC9D01_TFT_LCD_RDL.hpp:145
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition GC9D01_TFT_LCD_RDL.cpp:607
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition GC9D01_TFT_LCD_RDL.cpp:441
int _spiFlags
Definition GC9D01_TFT_LCD_RDL.hpp:119
static constexpr uint8_t GC9D01_TEOFF
Definition GC9D01_TFT_LCD_RDL.hpp:158
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition GC9D01_TFT_LCD_RDL.cpp:552
void TFTInitOffsets(uint16_t XLstart=0, uint16_t YLstart=0, uint16_t XPstart=0, uint16_t YPstart=0)
initialise the offsets that define the behaviour of the screen
Definition GC9D01_TFT_LCD_RDL.cpp:499
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
: Method for Clock, data and chip select pin setup routine for software SPI.
Definition GC9D01_TFT_LCD_RDL.cpp:156
int _spiChan
Definition GC9D01_TFT_LCD_RDL.hpp:117
void TFTsetPowerMode(PowerState_e m)
Set the power mode of the display.
Definition GC9D01_TFT_LCD_RDL.cpp:372
uint16_t _widthStartTFT
Definition GC9D01_TFT_LCD_RDL.hpp:106
rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition GC9D01_TFT_LCD_RDL.cpp:541
static constexpr uint8_t GC9D01_RAMWR
Definition GC9D01_TFT_LCD_RDL.hpp:155
static constexpr uint8_t GC9D01_INVERSION
Definition GC9D01_TFT_LCD_RDL.hpp:190
static constexpr uint8_t GC9D01_SETCTRL
Definition GC9D01_TFT_LCD_RDL.hpp:167
void DualGatecmdInitSequence(void)
GC9D01 init command sequence for Dual Gate variant Dual Gate variants include 160x160 resolutions.
Definition GC9D01_TFT_LCD_RDL.cpp:637
uint16_t _GC9D01_X_Landscape
Definition GC9D01_TFT_LCD_RDL.hpp:111
static constexpr uint8_t GC9D01_DISPON
Definition GC9D01_TFT_LCD_RDL.hpp:147
static constexpr uint8_t GC9D01_SLPIN
Definition GC9D01_TFT_LCD_RDL.hpp:142
void SingleGatecmdInitSequence60x160(void)
GC9D01 init command sequence for Single Gate variant Single Gate variants include 60X160 display reso...
Definition GC9D01_TFT_LCD_RDL.cpp:1047
static constexpr uint8_t GC9D01_INVOFF
Definition GC9D01_TFT_LCD_RDL.hpp:151
PowerState_e _currentPowerState
Definition GC9D01_TFT_LCD_RDL.hpp:101
uint16_t _GC9D01_X_Portrait
Definition GC9D01_TFT_LCD_RDL.hpp:109
static constexpr uint8_t GC9D01_DUAL_SINGLE
Definition GC9D01_TFT_LCD_RDL.hpp:173
static constexpr uint8_t GC9D01_PTLAR
Definition GC9D01_TFT_LCD_RDL.hpp:156
int _spiBaud
Definition GC9D01_TFT_LCD_RDL.hpp:118
virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override
SPI displays set an address window rectangle for blitting pixels.
Definition GC9D01_TFT_LCD_RDL.cpp:568
uint16_t _GC9D01_Y_Portrait
Definition GC9D01_TFT_LCD_RDL.hpp:110
void TFTinitByResolution(void)
helper function for TFTGC9D01Initialize calls command sequnce
Definition GC9D01_TFT_LCD_RDL.cpp:266
rdlib::Return_Codes_e TFTGC9D01Initialize(void)
init routine for GC9D01 controller
Definition GC9D01_TFT_LCD_RDL.cpp:230
static constexpr uint8_t GC9D01_GAMMA3
Definition GC9D01_TFT_LCD_RDL.hpp:186
Resolution_e
GC9D01 panel resolution and gate configuration.
Definition GC9D01_TFT_LCD_RDL.hpp:49
static constexpr uint8_t GC9D01_DISPOFF
Definition GC9D01_TFT_LCD_RDL.hpp:146
static constexpr uint8_t GC9D01_BLANK_PORCH_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:171
static constexpr uint8_t GC9D01_VSCRDEF
Definition GC9D01_TFT_LCD_RDL.hpp:157
static constexpr uint8_t GC9D01_VREG2A_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:178
static constexpr uint8_t GC9D01_TEWC
Definition GC9D01_TFT_LCD_RDL.hpp:170
static constexpr uint8_t GC9D01_GAMMA4
Definition GC9D01_TFT_LCD_RDL.hpp:187
uint16_t _GC9D01_X_Offset
Definition GC9D01_TFT_LCD_RDL.hpp:113
void SingleGatecmdInitSequence40x160(void)
GC9D01 init command sequence for Single Gate variant Single Gate variant 40x160 resolutions.
Definition GC9D01_TFT_LCD_RDL.cpp:780
rdlib::Return_Codes_e TFTResetPin(void)
Method for Hardware Reset pin control.
Definition GC9D01_TFT_LCD_RDL.cpp:110
rdlib::Return_Codes_e TFTPowerDown(void)
Call when powering down TFT.
Definition GC9D01_TFT_LCD_RDL.cpp:24
static constexpr uint8_t GC9D01_RDDID
Definition GC9D01_TFT_LCD_RDL.hpp:139
static constexpr uint8_t GC9D01_PTLON
Definition GC9D01_TFT_LCD_RDL.hpp:144
static constexpr uint8_t GC9D01_RDID2
Definition GC9D01_TFT_LCD_RDL.hpp:181
void TFTsetScrollStart(uint16_t vsp)
This method is used together with the setScrollDefinition.
Definition GC9D01_TFT_LCD_RDL.cpp:328
static constexpr uint8_t GC9D01_IDLEON
Definition GC9D01_TFT_LCD_RDL.hpp:149
static constexpr uint8_t GC9D01_INREGEN1
Definition GC9D01_TFT_LCD_RDL.hpp:192
static constexpr uint8_t GC9D01_RGB_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:169
display_rotate_e displayRotate
Definition GC9D01_TFT_LCD_RDL.hpp:58
static constexpr uint8_t GC9D01_POWER_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:175
uint16_t _GC9D01_Y_Offset
Definition GC9D01_TFT_LCD_RDL.hpp:114
void TFTScrollModeLeave(void)
Scroll Mode can be left ,by the Normal Display Mode ON cmd.
Definition GC9D01_TFT_LCD_RDL.cpp:335
void SingleGatecmdInitSequence50x160(void)
GC9D01 init command sequence for Single Gate variant Single Gate variants include 50X160 display reso...
Definition GC9D01_TFT_LCD_RDL.cpp:920
static constexpr uint8_t GC9D01_GAMMA1
Definition GC9D01_TFT_LCD_RDL.hpp:184
void TFTInitScreenSize(uint16_t w=160, uint16_t h=160, Resolution_e r=Resolution_e::RGB160x160_DualGate)
initialise the variables that define the size of the screen
Definition GC9D01_TFT_LCD_RDL.cpp:483
Resolution_e _currentResolution
Definition GC9D01_TFT_LCD_RDL.hpp:102
static constexpr uint8_t GC9D01_RDID1
Definition GC9D01_TFT_LCD_RDL.hpp:180
static constexpr uint8_t GC9D01_COLMOD
Definition GC9D01_TFT_LCD_RDL.hpp:162
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition GC9D01_TFT_LCD_RDL.cpp:558
static constexpr uint8_t GC9D01_VSCRSADD
Definition GC9D01_TFT_LCD_RDL.hpp:161
static constexpr uint8_t GC9D01_FUNCTION_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:172
void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t)
sets up TFT GPIO for software SPI
Definition GC9D01_TFT_LCD_RDL.cpp:212
static constexpr uint8_t GC9D01_IDLEOFF
Definition GC9D01_TFT_LCD_RDL.hpp:148
void TFTenableDisplay(bool m)
enable /disable display mode
Definition GC9D01_TFT_LCD_RDL.cpp:355
static constexpr uint8_t GC9D01_VREG1A_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:176
void SingleGatecmdInitSequence80x160(void)
GC9D01 init command sequence for single Gate 80x160 variant.
Definition GC9D01_TFT_LCD_RDL.cpp:1171
static constexpr uint8_t GC9D01_SWRESET
Definition GC9D01_TFT_LCD_RDL.hpp:138
static constexpr uint8_t GC9D01_INVON
Definition GC9D01_TFT_LCD_RDL.hpp:152
uint16_t _heightStartTFT
Definition GC9D01_TFT_LCD_RDL.hpp:107
bool _displayOn
Definition GC9D01_TFT_LCD_RDL.hpp:103
static constexpr uint8_t GC9D01_SLPOUT
Definition GC9D01_TFT_LCD_RDL.hpp:143
static constexpr uint8_t GC9D01_GAMMA2
Definition GC9D01_TFT_LCD_RDL.hpp:185
static constexpr uint8_t GC9D01_RDDST
Definition GC9D01_TFT_LCD_RDL.hpp:140
const uint16_t _sleepDelay
Definition GC9D01_TFT_LCD_RDL.hpp:104
static constexpr uint8_t GC9D01_CASET
Definition GC9D01_TFT_LCD_RDL.hpp:153
Class to handle fonts and graphics of color 16 bit display.
Definition color16_graphics_RDL.hpp:23
display_rotate_e
Definition color16_graphics_RDL.hpp:73
@ Degrees_0
Definition color16_graphics_RDL.hpp:74
Library header file for 16 bit (565) color graphics library. This file handles the graphic methods.
Return_Codes_e
Definition common_data_RDL.hpp:22
MADCTL bit flags for register GC9D01_MADCTL (0x36).
Definition GC9D01_TFT_LCD_RDL.hpp:127
static constexpr uint8_t MY
Definition GC9D01_TFT_LCD_RDL.hpp:128
static constexpr uint8_t MH
Definition GC9D01_TFT_LCD_RDL.hpp:134
static constexpr uint8_t MV
Definition GC9D01_TFT_LCD_RDL.hpp:130
static constexpr uint8_t RGB
Definition GC9D01_TFT_LCD_RDL.hpp:132
static constexpr uint8_t MX
Definition GC9D01_TFT_LCD_RDL.hpp:129
static constexpr uint8_t BGR
Definition GC9D01_TFT_LCD_RDL.hpp:133
static constexpr uint8_t ML
Definition GC9D01_TFT_LCD_RDL.hpp:131