Display_Lib_RPI 2.5.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
45
56
59 // Functions
60 // From graphics virtual
61 virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override;
62 //Setup related
63 void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t); //SW SPI
64 void TFTSetupGPIO(int8_t, int8_t); // HW SPI
65 void TFTInitScreenSize(uint16_t w = 160, uint16_t h = 160,
67 uint16_t Xstart= 0, uint16_t Ystart=0);
68 rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev ); // SW SPI
69 rdlib::Return_Codes_e TFTInitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
71 uint16_t HighFreqDelayGet(void);
72 void HighFreqDelaySet(uint16_t);
74
75 // Screen related
77 void TFTchangeInvertMode(bool m);
79 void TFTenableDisplay(bool m);
80 void TFTsetBrightness(uint8_t level);
81 void TFTsetScrollArea(uint16_t topFixed, uint16_t scrollArea, uint16_t bottomFixed);
82 void TFTsetScrollStart(uint16_t vsp);
83 void TFTScrollModeLeave(void);
84
85private:
86
89 void TFTSetupResetPin(int8_t rst);
91 void DualGatecmdInitSequence(void);
93
94 // Display
97 bool _displayOn = false;
98 const uint16_t _sleepDelay = 120;
99 // Screen
100 uint16_t _widthStartTFT = 160;
101 uint16_t _heightStartTFT = 160;
104 uint16_t _GC9D01_X_Offset = 0;
105 uint16_t _GC9D01_Y_Offset = 0;
106 // SPI related
107 int _spiDev = 0;
108 int _spiChan = 0;
109 int _spiBaud = 50000;
110 int _spiFlags = 0;
111 bool _resetPinOn = true;
113 // GC9D01 registers + Commands
118 {
119 static constexpr uint8_t MY = 0x80;
120 static constexpr uint8_t MX = 0x40;
121 static constexpr uint8_t MV = 0x20;
122 static constexpr uint8_t ML = 0x10;
123 static constexpr uint8_t RGB = 0x00;
124 static constexpr uint8_t BGR = 0x08;
125 static constexpr uint8_t MH = 0x04;
126 };
127
128 // GC9D01 registers + Commands
129 static constexpr uint8_t GC9D01_SWRESET = 0x01;
130 static constexpr uint8_t GC9D01_RDDID = 0x04;
131 static constexpr uint8_t GC9D01_RDDST = 0x09;
133 static constexpr uint8_t GC9D01_SLPIN = 0x10;
134 static constexpr uint8_t GC9D01_SLPOUT = 0x11;
135 static constexpr uint8_t GC9D01_PTLON = 0x12;
136 static constexpr uint8_t GC9D01_NORON = 0x13;
137 static constexpr uint8_t GC9D01_DISPOFF = 0x28;
138 static constexpr uint8_t GC9D01_DISPON = 0x29;
139 static constexpr uint8_t GC9D01_IDLEOFF = 0x38;
140 static constexpr uint8_t GC9D01_IDLEON = 0x39;
142 static constexpr uint8_t GC9D01_INVOFF = 0x20;
143 static constexpr uint8_t GC9D01_INVON = 0x21;
144 static constexpr uint8_t GC9D01_CASET = 0x2A;
145 static constexpr uint8_t GC9D01_RASET = 0x2B;
146 static constexpr uint8_t GC9D01_RAMWR = 0x2C;
147 static constexpr uint8_t GC9D01_PTLAR = 0x30;
148 static constexpr uint8_t GC9D01_VSCRDEF = 0x33;
149 static constexpr uint8_t GC9D01_TEOFF = 0x34;
150 static constexpr uint8_t GC9D01_TEON = 0x35;
151 static constexpr uint8_t GC9D01_MADCTL = 0x36;
152 static constexpr uint8_t GC9D01_VSCRSADD = 0x37;
153 static constexpr uint8_t GC9D01_COLMOD = 0x3A;
154 static constexpr uint8_t GC9D01_CONTINUE = 0x3C;
155 static constexpr uint8_t GC9D01_TEARSET = 0x44;
156 static constexpr uint8_t GC9D01_GETLINE = 0x45;
157 static constexpr uint8_t GC9D01_SETBRIGHT = 0x51;
158 static constexpr uint8_t GC9D01_SETCTRL = 0x53;
160 static constexpr uint8_t GC9D01_RGB_CTRL = 0xB0;
161 static constexpr uint8_t GC9D01_TEWC = 0xB4;
162 static constexpr uint8_t GC9D01_BLANK_PORCH_CTRL = 0xB5;
163 static constexpr uint8_t GC9D01_FUNCTION_CTRL = 0xB6;
164 static constexpr uint8_t GC9D01_DUAL_SINGLE = 0xBF;
166 static constexpr uint8_t GC9D01_POWER_CTRL = 0xC1;
167 static constexpr uint8_t GC9D01_VREG1A_CTRL = 0xC3;
168 static constexpr uint8_t GC9D01_VREG1B_CTRL = 0xC4;
169 static constexpr uint8_t GC9D01_VREG2A_CTRL = 0xC9;
171 static constexpr uint8_t GC9D01_RDID1 = 0xDA;
172 static constexpr uint8_t GC9D01_RDID2 = 0xDB;
173 static constexpr uint8_t GC9D01_RDID3 = 0xDC;
175 static constexpr uint8_t GC9D01_GAMMA1 = 0xF0;
176 static constexpr uint8_t GC9D01_GAMMA2 = 0xF1;
177 static constexpr uint8_t GC9D01_GAMMA3 = 0xF2;
178 static constexpr uint8_t GC9D01_GAMMA4 = 0xF3;
180 static constexpr uint8_t GC9D01_SPI2DATA = 0xB1;
181 static constexpr uint8_t GC9D01_INVERSION = 0xEC;
182 static constexpr uint8_t GC9D01_IFACE = 0xF6;
183 static constexpr uint8_t GC9D01_INREGEN1 = 0xFE;
184 static constexpr uint8_t GC9D01_INREGEN2 = 0xEF;
186}; //end of GC9D01_TFT class
187
188// ********************** EOF *********************
Class to control GC9D01 TFT basic functionality.
Definition GC9D01_TFT_LCD_RDL.hpp:20
int _spiDev
Definition GC9D01_TFT_LCD_RDL.hpp:107
static constexpr uint8_t GC9D01_IFACE
Definition GC9D01_TFT_LCD_RDL.hpp:182
static constexpr uint8_t GC9D01_MADCTL
Definition GC9D01_TFT_LCD_RDL.hpp:151
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:180
void TFTchangeInvertMode(bool m)
Toggle the invert mode.
Definition GC9D01_TFT_LCD_RDL.cpp:302
static constexpr uint8_t GC9D01_VREG1B_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:168
static constexpr uint8_t GC9D01_GETLINE
Definition GC9D01_TFT_LCD_RDL.hpp:156
bool _resetPinOn
Definition GC9D01_TFT_LCD_RDL.hpp:111
static constexpr uint8_t GC9D01_CONTINUE
Definition GC9D01_TFT_LCD_RDL.hpp:154
static constexpr uint8_t GC9D01_SETBRIGHT
Definition GC9D01_TFT_LCD_RDL.hpp:157
static constexpr uint8_t GC9D01_INREGEN2
Definition GC9D01_TFT_LCD_RDL.hpp:184
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:274
static constexpr uint8_t GC9D01_TEARSET
Definition GC9D01_TFT_LCD_RDL.hpp:155
static constexpr uint8_t GC9D01_RASET
Definition GC9D01_TFT_LCD_RDL.hpp:145
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:150
static constexpr uint8_t GC9D01_RDID3
Definition GC9D01_TFT_LCD_RDL.hpp:173
void TFTsetBrightness(uint8_t level)
Set display brightness (0–255).
Definition GC9D01_TFT_LCD_RDL.cpp:839
static constexpr uint8_t GC9D01_NORON
Definition GC9D01_TFT_LCD_RDL.hpp:136
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition GC9D01_TFT_LCD_RDL.cpp:823
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition GC9D01_TFT_LCD_RDL.cpp:400
int _spiFlags
Definition GC9D01_TFT_LCD_RDL.hpp:110
static constexpr uint8_t GC9D01_TEOFF
Definition GC9D01_TFT_LCD_RDL.hpp:149
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition GC9D01_TFT_LCD_RDL.cpp:497
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:108
void TFTsetPowerMode(PowerState_e m)
Set the power mode of the display.
Definition GC9D01_TFT_LCD_RDL.cpp:333
uint16_t _widthStartTFT
Definition GC9D01_TFT_LCD_RDL.hpp:100
rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition GC9D01_TFT_LCD_RDL.cpp:486
static constexpr uint8_t GC9D01_RAMWR
Definition GC9D01_TFT_LCD_RDL.hpp:146
static constexpr uint8_t GC9D01_INVERSION
Definition GC9D01_TFT_LCD_RDL.hpp:181
static constexpr uint8_t GC9D01_SETCTRL
Definition GC9D01_TFT_LCD_RDL.hpp:158
void DualGatecmdInitSequence(void)
GC9D01 init command sequence for Dual Gate variant Dual Gate variants include 160x160 and 120x160 res...
Definition GC9D01_TFT_LCD_RDL.cpp:551
static constexpr uint8_t GC9D01_DISPON
Definition GC9D01_TFT_LCD_RDL.hpp:138
static constexpr uint8_t GC9D01_SLPIN
Definition GC9D01_TFT_LCD_RDL.hpp:133
static constexpr uint8_t GC9D01_INVOFF
Definition GC9D01_TFT_LCD_RDL.hpp:142
PowerState_e _currentPowerState
Definition GC9D01_TFT_LCD_RDL.hpp:95
static constexpr uint8_t GC9D01_DUAL_SINGLE
Definition GC9D01_TFT_LCD_RDL.hpp:164
static constexpr uint8_t GC9D01_PTLAR
Definition GC9D01_TFT_LCD_RDL.hpp:147
int _spiBaud
Definition GC9D01_TFT_LCD_RDL.hpp:109
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:513
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:177
Resolution_e
GC9D01 panel resolution and gate configuration.
Definition GC9D01_TFT_LCD_RDL.hpp:50
static constexpr uint8_t GC9D01_DISPOFF
Definition GC9D01_TFT_LCD_RDL.hpp:137
void TFTInitScreenSize(uint16_t w=160, uint16_t h=160, Resolution_e r=Resolution_e::RGB160x160_DualGate, uint16_t Xstart=0, uint16_t Ystart=0)
initialise the variables that define the size of the screen
Definition GC9D01_TFT_LCD_RDL.cpp:443
static constexpr uint8_t GC9D01_BLANK_PORCH_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:162
static constexpr uint8_t GC9D01_VSCRDEF
Definition GC9D01_TFT_LCD_RDL.hpp:148
static constexpr uint8_t GC9D01_VREG2A_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:169
static constexpr uint8_t GC9D01_TEWC
Definition GC9D01_TFT_LCD_RDL.hpp:161
static constexpr uint8_t GC9D01_GAMMA4
Definition GC9D01_TFT_LCD_RDL.hpp:178
uint16_t _GC9D01_X_Offset
Definition GC9D01_TFT_LCD_RDL.hpp:104
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:130
static constexpr uint8_t GC9D01_PTLON
Definition GC9D01_TFT_LCD_RDL.hpp:135
static constexpr uint8_t GC9D01_RDID2
Definition GC9D01_TFT_LCD_RDL.hpp:172
void TFTsetScrollStart(uint16_t vsp)
This method is used together with the setScrollDefinition.
Definition GC9D01_TFT_LCD_RDL.cpp:289
uint16_t _GC9D01_Y_Offset_Start
Definition GC9D01_TFT_LCD_RDL.hpp:103
static constexpr uint8_t GC9D01_IDLEON
Definition GC9D01_TFT_LCD_RDL.hpp:140
static constexpr uint8_t GC9D01_INREGEN1
Definition GC9D01_TFT_LCD_RDL.hpp:183
static constexpr uint8_t GC9D01_RGB_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:160
display_rotate_e displayRotate
Definition GC9D01_TFT_LCD_RDL.hpp:57
static constexpr uint8_t GC9D01_POWER_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:166
uint16_t _GC9D01_Y_Offset
Definition GC9D01_TFT_LCD_RDL.hpp:105
void TFTScrollModeLeave(void)
Scroll Mode can be left ,by the Normal Display Mode ON cmd.
Definition GC9D01_TFT_LCD_RDL.cpp:296
void SingleGatecmdInitSequence(void)
GC9D01 init command sequence for Single Gate variant Single Gate variants include 80x160 and 40x160 r...
Definition GC9D01_TFT_LCD_RDL.cpp:681
static constexpr uint8_t GC9D01_GAMMA1
Definition GC9D01_TFT_LCD_RDL.hpp:175
Resolution_e _currentResolution
Definition GC9D01_TFT_LCD_RDL.hpp:96
static constexpr uint8_t GC9D01_RDID1
Definition GC9D01_TFT_LCD_RDL.hpp:171
static constexpr uint8_t GC9D01_COLMOD
Definition GC9D01_TFT_LCD_RDL.hpp:153
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition GC9D01_TFT_LCD_RDL.cpp:503
static constexpr uint8_t GC9D01_VSCRSADD
Definition GC9D01_TFT_LCD_RDL.hpp:152
static constexpr uint8_t GC9D01_FUNCTION_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:163
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:139
void TFTenableDisplay(bool m)
enable /disable display mode
Definition GC9D01_TFT_LCD_RDL.cpp:316
static constexpr uint8_t GC9D01_VREG1A_CTRL
Definition GC9D01_TFT_LCD_RDL.hpp:167
uint16_t _GC9D01_X_Offset_Start
Definition GC9D01_TFT_LCD_RDL.hpp:102
static constexpr uint8_t GC9D01_SWRESET
Definition GC9D01_TFT_LCD_RDL.hpp:129
static constexpr uint8_t GC9D01_INVON
Definition GC9D01_TFT_LCD_RDL.hpp:143
uint16_t _heightStartTFT
Definition GC9D01_TFT_LCD_RDL.hpp:101
bool _displayOn
Definition GC9D01_TFT_LCD_RDL.hpp:97
static constexpr uint8_t GC9D01_SLPOUT
Definition GC9D01_TFT_LCD_RDL.hpp:134
static constexpr uint8_t GC9D01_GAMMA2
Definition GC9D01_TFT_LCD_RDL.hpp:176
static constexpr uint8_t GC9D01_RDDST
Definition GC9D01_TFT_LCD_RDL.hpp:131
const uint16_t _sleepDelay
Definition GC9D01_TFT_LCD_RDL.hpp:98
static constexpr uint8_t GC9D01_CASET
Definition GC9D01_TFT_LCD_RDL.hpp:144
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:118
static constexpr uint8_t MY
Definition GC9D01_TFT_LCD_RDL.hpp:119
static constexpr uint8_t MH
Definition GC9D01_TFT_LCD_RDL.hpp:125
static constexpr uint8_t MV
Definition GC9D01_TFT_LCD_RDL.hpp:121
static constexpr uint8_t RGB
Definition GC9D01_TFT_LCD_RDL.hpp:123
static constexpr uint8_t MX
Definition GC9D01_TFT_LCD_RDL.hpp:120
static constexpr uint8_t BGR
Definition GC9D01_TFT_LCD_RDL.hpp:124
static constexpr uint8_t ML
Definition GC9D01_TFT_LCD_RDL.hpp:122