Display_Lib_RPI 2.4.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
ST7789_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 ST7789_TFT();
25 ~ST7789_TFT(){};
26
27 // Enum
28
31 // Functions
32 // From graphics virtual
33 virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override;
34 //Setup related
35 void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t); //SW SPI
36 void TFTSetupGPIO(int8_t, int8_t); // HW SPI
39 rdlib::Return_Codes_e TFTInitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
40
41 // SPI related
45 // Screen related
47 void TFTchangeInvertMode(bool m);
48 void TFTpartialDisplay(bool m);
49 void TFTenableDisplay(bool m);
50 void TFTidleDisplay(bool m);
51 void TFTsleepDisplay(bool m);
52 void TFTNormalMode(void);
56
57private:
58
63 void cmd89(void);
64 void AdjustWidthHeight(void);
65
66 // Screen
74 // SPI related
75 int _spiDev = 0;
76 int _spiChan = 0;
77 int _spiBaud = 50000;
78 int _spiFlags = 0;
79 bool _resetPinOn = true;
81 // ST7789 registers + Commands
82
83 // ST7789 general purpose
84 static constexpr uint8_t ST7789_NOP = 0x00;
85 static constexpr uint8_t ST7789_SWRESET = 0x01;
87 // ST7789 Modes
88 static constexpr uint8_t ST7789_SLPIN = 0x10;
89 static constexpr uint8_t ST7789_SLPOUT = 0x11;
90 static constexpr uint8_t ST7789_PTLON = 0x12;
91 static constexpr uint8_t ST7789_NORON = 0x13;
92 static constexpr uint8_t ST7789_INVOFF = 0x20;
93 static constexpr uint8_t ST7789_INVON = 0x21;
94 static constexpr uint8_t ST7789_DISPOFF = 0x28;
95 static constexpr uint8_t ST7789_DISPON = 0x29;
96 static constexpr uint8_t ST7789_IDLE_ON = 0x39;
97 static constexpr uint8_t ST7789_IDLE_OFF = 0x38;
99 // ST7789 Addressing
100 static constexpr uint8_t ST7789_CASET = 0x2A;
101 static constexpr uint8_t ST7789_RASET = 0x2B;
102 static constexpr uint8_t ST7789_RAMWR = 0x2C;
103 static constexpr uint8_t ST7789_RAMRD = 0x2E;
104 static constexpr uint8_t ST7789_PTLAR = 0x30;
105 static constexpr uint8_t ST7789_VSCRDEF = 0x33;
106 static constexpr uint8_t ST7789_SRLBTT = 0x28;
107 static constexpr uint8_t ST7789_SRLTTB = 0x30;
108 static constexpr uint8_t ST7789_COLMOD = 0x3A;
109 static constexpr uint8_t ST7789_MADCTL = 0x36;
110 static constexpr uint8_t ST7789_VSCRSADD = 0x37;
112 // Frame Rate Control
113 static constexpr uint8_t ST7789_FRMCTR1 = 0xB1;
114 static constexpr uint8_t ST7789_FRMCTR2 = 0xB2;
115 static constexpr uint8_t ST7789_FRMCTR3 = 0xB3;
117 static constexpr uint8_t ST7789_INVCTR = 0xB4;
118 static constexpr uint8_t ST7789_DISSET5 = 0xB6;
120 static constexpr uint8_t ST7789_RDID1 = 0xDA;
121 static constexpr uint8_t ST7789_RDID2 = 0xDB;
122 static constexpr uint8_t ST7789_RDID3 = 0xDC;
123 static constexpr uint8_t ST7789_RDID4 = 0xDD;
125 // ST7789 color control
126 static constexpr uint8_t ST7789_GMCTRP1 = 0xE0;
127 static constexpr uint8_t ST7789_GMCTRN1 = 0xE1;
129 // Memory Access Data Control Register
130 static constexpr uint8_t ST7789_MADCTL_MY = 0x80;
131 static constexpr uint8_t ST7789_MADCTL_MX = 0x40;
132 static constexpr uint8_t ST7789_MADCTL_MV = 0x20;
133 static constexpr uint8_t ST7789_MADCTL_ML = 0x10;
134 static constexpr uint8_t ST7789_MADCTL_RGB = 0x00;
135 static constexpr uint8_t ST7789_MADCTL_BGR = 0x08;
136 static constexpr uint8_t ST7789_MADCTL_MH = 0x04;
138}; //end of ST7789_TFT class
139
140// ********************** EOF *********************
static constexpr int defaultFormat()
Called from vector & string template , Get the default format for a given type.
Definition print_data_RDL.hpp:206
Class to control ST7789 TFT basic functionality.
Definition ST7789_TFT_LCD_RDL.hpp:20
static constexpr uint8_t ST7789_INVOFF
Definition ST7789_TFT_LCD_RDL.hpp:92
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition ST7789_TFT_LCD_RDL.cpp:142
static constexpr uint8_t ST7789_DISPOFF
Definition ST7789_TFT_LCD_RDL.hpp:94
static constexpr uint8_t ST7789_SRLTTB
Definition ST7789_TFT_LCD_RDL.hpp:107
static constexpr uint8_t ST7789_COLMOD
Definition ST7789_TFT_LCD_RDL.hpp:108
uint8_t _colstart2
Definition ST7789_TFT_LCD_RDL.hpp:69
static constexpr uint8_t ST7789_GMCTRN1
Definition ST7789_TFT_LCD_RDL.hpp:127
static constexpr uint8_t ST7789_MADCTL_MY
Definition ST7789_TFT_LCD_RDL.hpp:130
static constexpr uint8_t ST7789_SLPIN
Definition ST7789_TFT_LCD_RDL.hpp:88
uint16_t _heightStartTFT
Definition ST7789_TFT_LCD_RDL.hpp:72
static constexpr uint8_t ST7789_NOP
Definition ST7789_TFT_LCD_RDL.hpp:84
static constexpr uint8_t ST7789_FRMCTR3
Definition ST7789_TFT_LCD_RDL.hpp:115
static constexpr uint8_t ST7789_PTLAR
Definition ST7789_TFT_LCD_RDL.hpp:104
void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t)
sets up TFT GPIO for software SPI
Definition ST7789_TFT_LCD_RDL.cpp:218
int _spiBaud
Definition ST7789_TFT_LCD_RDL.hpp:77
uint16_t _widthStartTFT
Definition ST7789_TFT_LCD_RDL.hpp:71
rdlib::Return_Codes_e TFTST7789Initialize(void)
init routine for ST7789 controller
Definition ST7789_TFT_LCD_RDL.cpp:236
uint8_t _rowstart2
Definition ST7789_TFT_LCD_RDL.hpp:70
static constexpr uint8_t ST7789_FRMCTR2
Definition ST7789_TFT_LCD_RDL.hpp:114
static constexpr uint8_t ST7789_MADCTL_BGR
Definition ST7789_TFT_LCD_RDL.hpp:135
static constexpr uint8_t ST7789_INVON
Definition ST7789_TFT_LCD_RDL.hpp:93
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition ST7789_TFT_LCD_RDL.cpp:374
static constexpr uint8_t ST7789_DISSET5
Definition ST7789_TFT_LCD_RDL.hpp:118
rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition ST7789_TFT_LCD_RDL.cpp:470
static constexpr uint8_t ST7789_RAMWR
Definition ST7789_TFT_LCD_RDL.hpp:102
static constexpr uint8_t ST7789_RDID2
Definition ST7789_TFT_LCD_RDL.hpp:121
static constexpr uint8_t ST7789_CASET
Definition ST7789_TFT_LCD_RDL.hpp:100
static constexpr uint8_t ST7789_GMCTRP1
Definition ST7789_TFT_LCD_RDL.hpp:126
void TFTenableDisplay(bool m)
enable /disable display mode
Definition ST7789_TFT_LCD_RDL.cpp:332
int _spiChan
Definition ST7789_TFT_LCD_RDL.hpp:76
static constexpr uint8_t ST7789_PTLON
Definition ST7789_TFT_LCD_RDL.hpp:90
static constexpr uint8_t ST7789_IDLE_OFF
Definition ST7789_TFT_LCD_RDL.hpp:97
static constexpr uint8_t ST7789_IDLE_ON
Definition ST7789_TFT_LCD_RDL.hpp:96
void AdjustWidthHeight(void)
Initialization width and height code common to all ST7789 displays.
Definition ST7789_TFT_LCD_RDL.cpp:556
static constexpr uint8_t ST7789_MADCTL_MV
Definition ST7789_TFT_LCD_RDL.hpp:132
void TFTVerticalScroll(uint16_t vsp)
: This method is used together with the TFTsetScrollDefinition.
Definition ST7789_TFT_LCD_RDL.cpp:298
static constexpr uint8_t ST7789_NORON
Definition ST7789_TFT_LCD_RDL.hpp:91
bool _resetPinOn
Definition ST7789_TFT_LCD_RDL.hpp:79
static constexpr uint8_t ST7789_FRMCTR1
Definition ST7789_TFT_LCD_RDL.hpp:113
static constexpr uint8_t ST7789_RAMRD
Definition ST7789_TFT_LCD_RDL.hpp:103
display_rotate_e displayRotate
Definition ST7789_TFT_LCD_RDL.hpp:29
static constexpr uint8_t ST7789_RASET
Definition ST7789_TFT_LCD_RDL.hpp:101
static constexpr uint8_t ST7789_RDID3
Definition ST7789_TFT_LCD_RDL.hpp:122
static constexpr uint8_t ST7789_SRLBTT
Definition ST7789_TFT_LCD_RDL.hpp:106
static constexpr uint8_t ST7789_RDID1
Definition ST7789_TFT_LCD_RDL.hpp:120
static constexpr uint8_t ST7789_DISPON
Definition ST7789_TFT_LCD_RDL.hpp:95
int _spiDev
Definition ST7789_TFT_LCD_RDL.hpp:75
void TFTInitScreenSize(uint8_t xOffset, uint8_t yOffset, uint16_t w, uint16_t h)
initialise the variables that define the size of the screen
Definition ST7789_TFT_LCD_RDL.cpp:420
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
: Method for Clock, data and chip select pin setup routine for software SPI.
Definition ST7789_TFT_LCD_RDL.cpp:162
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition ST7789_TFT_LCD_RDL.cpp:481
int _spiFlags
Definition ST7789_TFT_LCD_RDL.hpp:78
rdlib::Return_Codes_e TFTPowerDown(void)
Call when powering down TFT.
Definition ST7789_TFT_LCD_RDL.cpp:24
static constexpr uint8_t ST7789_MADCTL_MX
Definition ST7789_TFT_LCD_RDL.hpp:131
static constexpr uint8_t ST7789_MADCTL_MH
Definition ST7789_TFT_LCD_RDL.hpp:136
ST7789_TFT()
Constructor for class ST7789_TFT.
Definition ST7789_TFT_LCD_RDL.cpp:12
static constexpr uint8_t ST7789_SLPOUT
Definition ST7789_TFT_LCD_RDL.hpp:89
void cmd89(void)
Command Initialization sequence for ST7789 display.
Definition ST7789_TFT_LCD_RDL.cpp:522
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition ST7789_TFT_LCD_RDL.cpp:579
uint8_t _colstart
Definition ST7789_TFT_LCD_RDL.hpp:67
void TFTNormalMode(void)
return Display to normal mode
Definition ST7789_TFT_LCD_RDL.cpp:459
void TFTchangeInvertMode(bool m)
Toggle the invert mode.
Definition ST7789_TFT_LCD_RDL.cpp:308
static constexpr uint8_t ST7789_INVCTR
Definition ST7789_TFT_LCD_RDL.hpp:117
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition ST7789_TFT_LCD_RDL.cpp:487
void TFTpartialDisplay(bool m)
Toggle the partial display mode.
Definition ST7789_TFT_LCD_RDL.cpp:320
static constexpr uint8_t ST7789_RDID4
Definition ST7789_TFT_LCD_RDL.hpp:123
static constexpr uint8_t ST7789_VSCRSADD
Definition ST7789_TFT_LCD_RDL.hpp:110
static constexpr uint8_t ST7789_MADCTL_ML
Definition ST7789_TFT_LCD_RDL.hpp:133
static constexpr uint8_t ST7789_VSCRDEF
Definition ST7789_TFT_LCD_RDL.hpp:105
static constexpr uint8_t ST7789_MADCTL
Definition ST7789_TFT_LCD_RDL.hpp:109
void TFTsleepDisplay(bool m)
Toggle the sleep mode.
Definition ST7789_TFT_LCD_RDL.cpp:356
static constexpr uint8_t ST7789_MADCTL_RGB
Definition ST7789_TFT_LCD_RDL.hpp:134
rdlib::Return_Codes_e TFTResetPin(void)
Method for Hardware Reset pin control.
Definition ST7789_TFT_LCD_RDL.cpp:112
virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override
SPI displays set an address window rectangle for blitting pixels.
Definition ST7789_TFT_LCD_RDL.cpp:497
void TFTsetScrollDefinition(uint16_t th, uint16_t tb, bool sd)
This method defines the Vertical Scrolling Area of the display where:
Definition ST7789_TFT_LCD_RDL.cpp:276
static constexpr uint8_t ST7789_SWRESET
Definition ST7789_TFT_LCD_RDL.hpp:85
void TFTidleDisplay(bool m)
Toggle the idle display mode.
Definition ST7789_TFT_LCD_RDL.cpp:344
uint8_t _rowstart
Definition ST7789_TFT_LCD_RDL.hpp:68
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