Display_Lib_RPI 2.4.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
GC9A01_TFT_LCD_RDL.hpp
Go to the documentation of this file.
1
8#pragma once
9
10// Section Libraries
11#include <cstdint>
12#include <cstdbool>
13#include <cstring>
14#include <lgpio.h>
16
21{
22
23public:
24
25 GC9A01_TFT();
26 ~GC9A01_TFT(){};
27
28 // Enums
46
49 // Functions
50 // From graphics virtual
51 virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override;
52 //Setup related
53 void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t); //SW SPI
54 void TFTSetupGPIO(int8_t, int8_t); // HW SPI
55 void TFTInitScreenSize(uint16_t w, uint16_t h);
56 rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev ); // SW SPI
57 rdlib::Return_Codes_e TFTInitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
59 uint16_t HighFreqDelayGet(void);
60 void HighFreqDelaySet(uint16_t);
62
63 // Screen related
65 void TFTchangeInvertMode(bool m);
67 void TFTenableDisplay(bool m);
68 void TFTsetBrightness(uint8_t level);
69 void TFTsetScrollArea(uint16_t topFixed, uint16_t scrollArea, uint16_t bottomFixed);
70 void TFTsetScrollStart(uint16_t vsp);
71 void TFTScrollModeLeave(void);
72
73private:
74
77 void TFTSetupResetPin(int8_t rst);
79 void cmdInitSequence(void);
80
81 // Screen
82 // Display
84 bool _displayOn = false;
85 const uint16_t _sleepDelay = 120;
86 // Screen
87 uint8_t _colstart = 0;
88 uint8_t _rowstart = 0;
89 uint16_t _widthStartTFT = 240;
90 uint16_t _heightStartTFT = 240;
92 // SPI related
93 int _spiDev = 0;
94 int _spiChan = 0;
95 int _spiBaud = 50000;
96 int _spiFlags = 0;
97 bool _resetPinOn = true;
99 // GC9A01 registers + Commands
104 {
105 static constexpr uint8_t MY = 0x80;
106 static constexpr uint8_t MX = 0x40;
107 static constexpr uint8_t MV = 0x20;
108 static constexpr uint8_t ML = 0x10;
109 static constexpr uint8_t RGB = 0x00;
110 static constexpr uint8_t BGR = 0x08;
111 static constexpr uint8_t MH = 0x04;
112 };
113
114 static constexpr uint8_t GC9A01_SWRESET = 0x01;
115 static constexpr uint8_t GC9A01_RDDID = 0x04;
116 static constexpr uint8_t GC9A01_RDDST = 0x09;
118 static constexpr uint8_t GC9A01_SLPIN = 0x10;
119 static constexpr uint8_t GC9A01_SLPOUT = 0x11;
120 static constexpr uint8_t GC9A01_PTLON = 0x12;
121 static constexpr uint8_t GC9A01_NORON = 0x13;
122 static constexpr uint8_t GC9A01_DISPOFF = 0x28;
123 static constexpr uint8_t GC9A01_DISPON = 0x29;
124 static constexpr uint8_t GC9A01_IDLEOFF = 0x38;
125 static constexpr uint8_t GC9A01_IDLEON = 0x39;
127 static constexpr uint8_t GC9A01_INVOFF = 0x20;
128 static constexpr uint8_t GC9A01_INVON = 0x21;
129 static constexpr uint8_t GC9A01_CASET = 0x2A;
130 static constexpr uint8_t GC9A01_RASET = 0x2B;
131 static constexpr uint8_t GC9A01_RAMWR = 0x2C;
132 static constexpr uint8_t GC9A01_PTLAR = 0x30;
133 static constexpr uint8_t GC9A01_VSCRDEF = 0x33;
134 static constexpr uint8_t GC9A01_TEOFF = 0x34;
135 static constexpr uint8_t GC9A01_TEON = 0x35;
136 static constexpr uint8_t GC9A01_MADCTL = 0x36;
137 static constexpr uint8_t GC9A01_VSCRSADD = 0x37;
138 static constexpr uint8_t GC9A01_COLMOD = 0x3A;
139 static constexpr uint8_t GC9A01_CONTINUE = 0x3C;
140 static constexpr uint8_t GC9A01_TEARSET = 0x44;
141 static constexpr uint8_t GC9A01_GETLINE = 0x45;
142 static constexpr uint8_t GC9A01_SETBRIGHT = 0x51;
143 static constexpr uint8_t GC9A01_SETCTRL = 0x53;
145 static constexpr uint8_t GC9A01_TEWC = 0xBA;
146 static constexpr uint8_t GC9A01_BLANK_PORCH_CTRL = 0xB5;
147 static constexpr uint8_t GC9A01_FUNCTION_CTRL = 0xB6;
149 static constexpr uint8_t GC9A01_POWER1 = 0xC1;
150 static constexpr uint8_t GC9A01_POWER2 = 0xC3;
151 static constexpr uint8_t GC9A01_POWER3 = 0xC4;
152 static constexpr uint8_t GC9A01_POWER4 = 0xC9;
153 static constexpr uint8_t GC9A01_POWER7 = 0xA7;
155 static constexpr uint8_t GC9A01_RDID1 = 0xDA;
156 static constexpr uint8_t GC9A01_RDID2 = 0xDB;
157 static constexpr uint8_t GC9A01_RDID3 = 0xDC;
159 static constexpr uint8_t GC9A01_FRAMERATE = 0xE8;
160 static constexpr uint8_t GC9A01_SPI2DATA = 0xE9;
161 static constexpr uint8_t GC9A01_INREGEN2 = 0xEF;
163 static constexpr uint8_t GC9A01_GAMMA1 = 0xF0;
164 static constexpr uint8_t GC9A01_GAMMA2 = 0xF1;
165 static constexpr uint8_t GC9A01_GAMMA3 = 0xF2;
166 static constexpr uint8_t GC9A01_GAMMA4 = 0xF3;
167 static constexpr uint8_t GC9A01_IFACE = 0xF6;
168 static constexpr uint8_t GC9A01_INREGEN1 = 0xFE;
170}; //end of GC9A01_TFT class
171
172// ********************** EOF *********************
Class to control GC9A01 TFT basic functionality.
Definition GC9A01_TFT_LCD_RDL.hpp:21
static constexpr uint8_t GC9A01_VSCRSADD
Definition GC9A01_TFT_LCD_RDL.hpp:137
static constexpr uint8_t GC9A01_TEARSET
Definition GC9A01_TFT_LCD_RDL.hpp:140
static constexpr uint8_t GC9A01_GETLINE
Definition GC9A01_TFT_LCD_RDL.hpp:141
static constexpr uint8_t GC9A01_RAMWR
Definition GC9A01_TFT_LCD_RDL.hpp:131
static constexpr uint8_t GC9A01_IDLEOFF
Definition GC9A01_TFT_LCD_RDL.hpp:124
static constexpr uint8_t GC9A01_SETBRIGHT
Definition GC9A01_TFT_LCD_RDL.hpp:142
static constexpr uint8_t GC9A01_SLPOUT
Definition GC9A01_TFT_LCD_RDL.hpp:119
static constexpr uint8_t GC9A01_SLPIN
Definition GC9A01_TFT_LCD_RDL.hpp:118
static constexpr uint8_t GC9A01_INREGEN1
Definition GC9A01_TFT_LCD_RDL.hpp:168
static constexpr uint8_t GC9A01_GAMMA3
Definition GC9A01_TFT_LCD_RDL.hpp:165
static constexpr uint8_t GC9A01_CASET
Definition GC9A01_TFT_LCD_RDL.hpp:129
static constexpr uint8_t GC9A01_TEON
Definition GC9A01_TFT_LCD_RDL.hpp:135
void TFTInitScreenSize(uint16_t w, uint16_t h)
initialise the variables that define the size of the screen
Definition GC9A01_TFT_LCD_RDL.cpp:428
static constexpr uint8_t GC9A01_INREGEN2
Definition GC9A01_TFT_LCD_RDL.hpp:161
bool _resetPinOn
Definition GC9A01_TFT_LCD_RDL.hpp:97
static constexpr uint8_t GC9A01_TEWC
Definition GC9A01_TFT_LCD_RDL.hpp:145
static constexpr uint8_t GC9A01_POWER2
Definition GC9A01_TFT_LCD_RDL.hpp:150
int _spiChan
Definition GC9A01_TFT_LCD_RDL.hpp:94
static constexpr uint8_t GC9A01_VSCRDEF
Definition GC9A01_TFT_LCD_RDL.hpp:133
rdlib::Return_Codes_e TFTPowerDown(void)
Call when powering down TFT.
Definition GC9A01_TFT_LCD_RDL.cpp:24
static constexpr uint8_t GC9A01_SPI2DATA
Definition GC9A01_TFT_LCD_RDL.hpp:160
static constexpr uint8_t GC9A01_PTLON
Definition GC9A01_TFT_LCD_RDL.hpp:120
int _spiBaud
Definition GC9A01_TFT_LCD_RDL.hpp:95
void cmdInitSequence(void)
Command Initialization sequence for GC9A01 display.
Definition GC9A01_TFT_LCD_RDL.cpp:519
static constexpr uint8_t GC9A01_TEOFF
Definition GC9A01_TFT_LCD_RDL.hpp:134
virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override
SPI displays set an address window rectangle for blitting pixels.
Definition GC9A01_TFT_LCD_RDL.cpp:494
static constexpr uint8_t GC9A01_GAMMA1
Definition GC9A01_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 GC9A01_TFT_LCD_RDL.cpp:217
void TFTchangeInvertMode(bool m)
Toggle the invert mode.
Definition GC9A01_TFT_LCD_RDL.cpp:301
int _spiFlags
Definition GC9A01_TFT_LCD_RDL.hpp:96
static constexpr uint8_t GC9A01_CONTINUE
Definition GC9A01_TFT_LCD_RDL.hpp:139
static constexpr uint8_t GC9A01_IFACE
Definition GC9A01_TFT_LCD_RDL.hpp:167
uint16_t _heightStartTFT
Definition GC9A01_TFT_LCD_RDL.hpp:90
static constexpr uint8_t GC9A01_POWER1
Definition GC9A01_TFT_LCD_RDL.hpp:149
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition GC9A01_TFT_LCD_RDL.cpp:678
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
: Method for Clock, data and chip select pin setup routine for software SPI.
Definition GC9A01_TFT_LCD_RDL.cpp:161
static constexpr uint8_t GC9A01_DISPOFF
Definition GC9A01_TFT_LCD_RDL.hpp:122
static constexpr uint8_t GC9A01_RASET
Definition GC9A01_TFT_LCD_RDL.hpp:130
rdlib::Return_Codes_e TFTGC9A01Initialize(void)
init routine for GC9A01 controller
Definition GC9A01_TFT_LCD_RDL.cpp:235
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition GC9A01_TFT_LCD_RDL.cpp:141
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition GC9A01_TFT_LCD_RDL.cpp:395
static constexpr uint8_t GC9A01_SWRESET
Definition GC9A01_TFT_LCD_RDL.hpp:114
uint8_t _colstart
Definition GC9A01_TFT_LCD_RDL.hpp:87
void TFTsetPowerMode(PowerState_e m)
Set the power mode of the display.
Definition GC9A01_TFT_LCD_RDL.cpp:332
static constexpr uint8_t GC9A01_RDID3
Definition GC9A01_TFT_LCD_RDL.hpp:157
static constexpr uint8_t GC9A01_GAMMA2
Definition GC9A01_TFT_LCD_RDL.hpp:164
rdlib::Return_Codes_e TFTResetPin(void)
Method for Hardware Reset pin control.
Definition GC9A01_TFT_LCD_RDL.cpp:112
static constexpr uint8_t GC9A01_RDID2
Definition GC9A01_TFT_LCD_RDL.hpp:156
PowerState_e _currentPowerState
Definition GC9A01_TFT_LCD_RDL.hpp:83
static constexpr uint8_t GC9A01_MADCTL
Definition GC9A01_TFT_LCD_RDL.hpp:136
void TFTsetScrollArea(uint16_t topFixed, uint16_t scrollArea, uint16_t bottomFixed)
This method defines the Vertical Scrolling Area of the display where:
Definition GC9A01_TFT_LCD_RDL.cpp:273
uint16_t _widthStartTFT
Definition GC9A01_TFT_LCD_RDL.hpp:89
void TFTScrollModeLeave(void)
Scroll Mode can be left ,by the Normal Display Mode ON cmd.
Definition GC9A01_TFT_LCD_RDL.cpp:295
int _spiDev
Definition GC9A01_TFT_LCD_RDL.hpp:93
void TFTsetBrightness(uint8_t level)
Set display brightness (0–255).
Definition GC9A01_TFT_LCD_RDL.cpp:694
static constexpr uint8_t GC9A01_RDID1
Definition GC9A01_TFT_LCD_RDL.hpp:155
display_rotate_e displayRotate
Definition GC9A01_TFT_LCD_RDL.hpp:47
PowerState_e
GC9A01 power states based on the power control flow chart. These states combine the modes: Normal/Par...
Definition GC9A01_TFT_LCD_RDL.hpp:36
static constexpr uint8_t GC9A01_SETCTRL
Definition GC9A01_TFT_LCD_RDL.hpp:143
static constexpr uint8_t GC9A01_COLMOD
Definition GC9A01_TFT_LCD_RDL.hpp:138
static constexpr uint8_t GC9A01_PTLAR
Definition GC9A01_TFT_LCD_RDL.hpp:132
static constexpr uint8_t GC9A01_GAMMA4
Definition GC9A01_TFT_LCD_RDL.hpp:166
const uint16_t _sleepDelay
Definition GC9A01_TFT_LCD_RDL.hpp:85
static constexpr uint8_t GC9A01_FRAMERATE
Definition GC9A01_TFT_LCD_RDL.hpp:159
static constexpr uint8_t GC9A01_DISPON
Definition GC9A01_TFT_LCD_RDL.hpp:123
static constexpr uint8_t GC9A01_POWER7
Definition GC9A01_TFT_LCD_RDL.hpp:153
static constexpr uint8_t GC9A01_BLANK_PORCH_CTRL
Definition GC9A01_TFT_LCD_RDL.hpp:146
static constexpr uint8_t GC9A01_POWER3
Definition GC9A01_TFT_LCD_RDL.hpp:151
rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition GC9A01_TFT_LCD_RDL.cpp:467
static constexpr uint8_t GC9A01_NORON
Definition GC9A01_TFT_LCD_RDL.hpp:121
GC9A01_TFT()
Constructor for class GC9A01_TFT.
Definition GC9A01_TFT_LCD_RDL.cpp:12
bool _displayOn
Definition GC9A01_TFT_LCD_RDL.hpp:84
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition GC9A01_TFT_LCD_RDL.cpp:484
void TFTenableDisplay(bool m)
enable /disable display mode
Definition GC9A01_TFT_LCD_RDL.cpp:315
static constexpr uint8_t GC9A01_IDLEON
Definition GC9A01_TFT_LCD_RDL.hpp:125
static constexpr uint8_t GC9A01_POWER4
Definition GC9A01_TFT_LCD_RDL.hpp:152
static constexpr uint8_t GC9A01_INVOFF
Definition GC9A01_TFT_LCD_RDL.hpp:127
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition GC9A01_TFT_LCD_RDL.cpp:478
uint8_t _rowstart
Definition GC9A01_TFT_LCD_RDL.hpp:88
void TFTsetScrollStart(uint16_t vsp)
This method is used together with the setScrollDefinition.
Definition GC9A01_TFT_LCD_RDL.cpp:288
static constexpr uint8_t GC9A01_RDDST
Definition GC9A01_TFT_LCD_RDL.hpp:116
static constexpr uint8_t GC9A01_FUNCTION_CTRL
Definition GC9A01_TFT_LCD_RDL.hpp:147
static constexpr uint8_t GC9A01_INVON
Definition GC9A01_TFT_LCD_RDL.hpp:128
static constexpr uint8_t GC9A01_RDDID
Definition GC9A01_TFT_LCD_RDL.hpp:115
Class to handle fonts and graphics of color 16 bit display.
Definition color16_graphics_RDL.hpp:28
display_rotate_e
Definition color16_graphics_RDL.hpp:68
@ Degrees_0
Definition color16_graphics_RDL.hpp:69
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 GC9A01_MADCTL (0x36).
Definition GC9A01_TFT_LCD_RDL.hpp:104
static constexpr uint8_t BGR
Definition GC9A01_TFT_LCD_RDL.hpp:110
static constexpr uint8_t MV
Definition GC9A01_TFT_LCD_RDL.hpp:107
static constexpr uint8_t ML
Definition GC9A01_TFT_LCD_RDL.hpp:108
static constexpr uint8_t MX
Definition GC9A01_TFT_LCD_RDL.hpp:106
static constexpr uint8_t MH
Definition GC9A01_TFT_LCD_RDL.hpp:111
static constexpr uint8_t RGB
Definition GC9A01_TFT_LCD_RDL.hpp:109
static constexpr uint8_t MY
Definition GC9A01_TFT_LCD_RDL.hpp:105