Display_Lib_RPI 2.5.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 void TFTsoftwareReset(void);
57
58private:
59
64 void cmd89(void);
65 void AdjustWidthHeight(void);
66
67 // Screen
75 // SPI related
76 int _spiDev = 0;
77 int _spiChan = 0;
78 int _spiBaud = 50000;
79 int _spiFlags = 0;
80 bool _resetPinOn = true;
82 // ST7789 registers + Commands
83
84 // ST7789 general purpose
85 static constexpr uint8_t ST7789_NOP = 0x00;
86 static constexpr uint8_t ST7789_SWRESET = 0x01;
88 // ST7789 Modes
89 static constexpr uint8_t ST7789_SLPIN = 0x10;
90 static constexpr uint8_t ST7789_SLPOUT = 0x11;
91 static constexpr uint8_t ST7789_PTLON = 0x12;
92 static constexpr uint8_t ST7789_NORON = 0x13;
93 static constexpr uint8_t ST7789_INVOFF = 0x20;
94 static constexpr uint8_t ST7789_INVON = 0x21;
95 static constexpr uint8_t ST7789_DISPOFF = 0x28;
96 static constexpr uint8_t ST7789_DISPON = 0x29;
97 static constexpr uint8_t ST7789_IDLE_ON = 0x39;
98 static constexpr uint8_t ST7789_IDLE_OFF = 0x38;
100 // ST7789 Addressing
101 static constexpr uint8_t ST7789_CASET = 0x2A;
102 static constexpr uint8_t ST7789_RASET = 0x2B;
103 static constexpr uint8_t ST7789_RAMWR = 0x2C;
104 static constexpr uint8_t ST7789_RAMRD = 0x2E;
105 static constexpr uint8_t ST7789_PTLAR = 0x30;
106 static constexpr uint8_t ST7789_VSCRDEF = 0x33;
107 static constexpr uint8_t ST7789_SRLBTT = 0x28;
108 static constexpr uint8_t ST7789_SRLTTB = 0x30;
109 static constexpr uint8_t ST7789_COLMOD = 0x3A;
110 static constexpr uint8_t ST7789_MADCTL = 0x36;
111 static constexpr uint8_t ST7789_VSCRSADD = 0x37;
113 // Frame Rate Control
114 static constexpr uint8_t ST7789_FRMCTR1 = 0xB1;
115 static constexpr uint8_t ST7789_FRMCTR2 = 0xB2;
116 static constexpr uint8_t ST7789_FRMCTR3 = 0xB3;
118 static constexpr uint8_t ST7789_INVCTR = 0xB4;
119 static constexpr uint8_t ST7789_DISSET5 = 0xB6;
121 static constexpr uint8_t ST7789_RDID1 = 0xDA;
122 static constexpr uint8_t ST7789_RDID2 = 0xDB;
123 static constexpr uint8_t ST7789_RDID3 = 0xDC;
124 static constexpr uint8_t ST7789_RDID4 = 0xDD;
126 // ST7789 color control
127 static constexpr uint8_t ST7789_GMCTRP1 = 0xE0;
128 static constexpr uint8_t ST7789_GMCTRN1 = 0xE1;
130 // Memory Access Data Control Register
131 static constexpr uint8_t ST7789_MADCTL_MY = 0x80;
132 static constexpr uint8_t ST7789_MADCTL_MX = 0x40;
133 static constexpr uint8_t ST7789_MADCTL_MV = 0x20;
134 static constexpr uint8_t ST7789_MADCTL_ML = 0x10;
135 static constexpr uint8_t ST7789_MADCTL_RGB = 0x00;
136 static constexpr uint8_t ST7789_MADCTL_BGR = 0x08;
137 static constexpr uint8_t ST7789_MADCTL_MH = 0x04;
139}; //end of ST7789_TFT class
140
141// ********************** 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:93
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition ST7789_TFT_LCD_RDL.cpp:137
static constexpr uint8_t ST7789_DISPOFF
Definition ST7789_TFT_LCD_RDL.hpp:95
static constexpr uint8_t ST7789_SRLTTB
Definition ST7789_TFT_LCD_RDL.hpp:108
static constexpr uint8_t ST7789_COLMOD
Definition ST7789_TFT_LCD_RDL.hpp:109
uint8_t _colstart2
Definition ST7789_TFT_LCD_RDL.hpp:70
static constexpr uint8_t ST7789_GMCTRN1
Definition ST7789_TFT_LCD_RDL.hpp:128
static constexpr uint8_t ST7789_MADCTL_MY
Definition ST7789_TFT_LCD_RDL.hpp:131
static constexpr uint8_t ST7789_SLPIN
Definition ST7789_TFT_LCD_RDL.hpp:89
uint16_t _heightStartTFT
Definition ST7789_TFT_LCD_RDL.hpp:73
static constexpr uint8_t ST7789_NOP
Definition ST7789_TFT_LCD_RDL.hpp:85
static constexpr uint8_t ST7789_FRMCTR3
Definition ST7789_TFT_LCD_RDL.hpp:116
static constexpr uint8_t ST7789_PTLAR
Definition ST7789_TFT_LCD_RDL.hpp:105
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:213
int _spiBaud
Definition ST7789_TFT_LCD_RDL.hpp:78
uint16_t _widthStartTFT
Definition ST7789_TFT_LCD_RDL.hpp:72
rdlib::Return_Codes_e TFTST7789Initialize(void)
init routine for ST7789 controller
Definition ST7789_TFT_LCD_RDL.cpp:231
uint8_t _rowstart2
Definition ST7789_TFT_LCD_RDL.hpp:71
static constexpr uint8_t ST7789_FRMCTR2
Definition ST7789_TFT_LCD_RDL.hpp:115
static constexpr uint8_t ST7789_MADCTL_BGR
Definition ST7789_TFT_LCD_RDL.hpp:136
static constexpr uint8_t ST7789_INVON
Definition ST7789_TFT_LCD_RDL.hpp:94
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition ST7789_TFT_LCD_RDL.cpp:369
static constexpr uint8_t ST7789_DISSET5
Definition ST7789_TFT_LCD_RDL.hpp:119
rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition ST7789_TFT_LCD_RDL.cpp:465
static constexpr uint8_t ST7789_RAMWR
Definition ST7789_TFT_LCD_RDL.hpp:103
void TFTsoftwareReset(void)
software reset
Definition ST7789_TFT_LCD_RDL.cpp:591
static constexpr uint8_t ST7789_RDID2
Definition ST7789_TFT_LCD_RDL.hpp:122
static constexpr uint8_t ST7789_CASET
Definition ST7789_TFT_LCD_RDL.hpp:101
static constexpr uint8_t ST7789_GMCTRP1
Definition ST7789_TFT_LCD_RDL.hpp:127
void TFTenableDisplay(bool m)
enable /disable display mode
Definition ST7789_TFT_LCD_RDL.cpp:327
int _spiChan
Definition ST7789_TFT_LCD_RDL.hpp:77
static constexpr uint8_t ST7789_PTLON
Definition ST7789_TFT_LCD_RDL.hpp:91
static constexpr uint8_t ST7789_IDLE_OFF
Definition ST7789_TFT_LCD_RDL.hpp:98
static constexpr uint8_t ST7789_IDLE_ON
Definition ST7789_TFT_LCD_RDL.hpp:97
void AdjustWidthHeight(void)
Initialization width and height code common to all ST7789 displays.
Definition ST7789_TFT_LCD_RDL.cpp:551
static constexpr uint8_t ST7789_MADCTL_MV
Definition ST7789_TFT_LCD_RDL.hpp:133
void TFTVerticalScroll(uint16_t vsp)
: This method is used together with the TFTsetScrollDefinition.
Definition ST7789_TFT_LCD_RDL.cpp:293
static constexpr uint8_t ST7789_NORON
Definition ST7789_TFT_LCD_RDL.hpp:92
bool _resetPinOn
Definition ST7789_TFT_LCD_RDL.hpp:80
static constexpr uint8_t ST7789_FRMCTR1
Definition ST7789_TFT_LCD_RDL.hpp:114
static constexpr uint8_t ST7789_RAMRD
Definition ST7789_TFT_LCD_RDL.hpp:104
display_rotate_e displayRotate
Definition ST7789_TFT_LCD_RDL.hpp:29
static constexpr uint8_t ST7789_RASET
Definition ST7789_TFT_LCD_RDL.hpp:102
static constexpr uint8_t ST7789_RDID3
Definition ST7789_TFT_LCD_RDL.hpp:123
static constexpr uint8_t ST7789_SRLBTT
Definition ST7789_TFT_LCD_RDL.hpp:107
static constexpr uint8_t ST7789_RDID1
Definition ST7789_TFT_LCD_RDL.hpp:121
static constexpr uint8_t ST7789_DISPON
Definition ST7789_TFT_LCD_RDL.hpp:96
int _spiDev
Definition ST7789_TFT_LCD_RDL.hpp:76
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:415
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:157
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition ST7789_TFT_LCD_RDL.cpp:476
int _spiFlags
Definition ST7789_TFT_LCD_RDL.hpp:79
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:132
static constexpr uint8_t ST7789_MADCTL_MH
Definition ST7789_TFT_LCD_RDL.hpp:137
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:90
void cmd89(void)
Command Initialization sequence for ST7789 display.
Definition ST7789_TFT_LCD_RDL.cpp:517
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition ST7789_TFT_LCD_RDL.cpp:574
uint8_t _colstart
Definition ST7789_TFT_LCD_RDL.hpp:68
void TFTNormalMode(void)
return Display to normal mode
Definition ST7789_TFT_LCD_RDL.cpp:454
void TFTchangeInvertMode(bool m)
Toggle the invert mode.
Definition ST7789_TFT_LCD_RDL.cpp:303
static constexpr uint8_t ST7789_INVCTR
Definition ST7789_TFT_LCD_RDL.hpp:118
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition ST7789_TFT_LCD_RDL.cpp:482
void TFTpartialDisplay(bool m)
Toggle the partial display mode.
Definition ST7789_TFT_LCD_RDL.cpp:315
static constexpr uint8_t ST7789_RDID4
Definition ST7789_TFT_LCD_RDL.hpp:124
static constexpr uint8_t ST7789_VSCRSADD
Definition ST7789_TFT_LCD_RDL.hpp:111
static constexpr uint8_t ST7789_MADCTL_ML
Definition ST7789_TFT_LCD_RDL.hpp:134
static constexpr uint8_t ST7789_VSCRDEF
Definition ST7789_TFT_LCD_RDL.hpp:106
static constexpr uint8_t ST7789_MADCTL
Definition ST7789_TFT_LCD_RDL.hpp:110
void TFTsleepDisplay(bool m)
Toggle the sleep mode.
Definition ST7789_TFT_LCD_RDL.cpp:351
static constexpr uint8_t ST7789_MADCTL_RGB
Definition ST7789_TFT_LCD_RDL.hpp:135
rdlib::Return_Codes_e TFTResetPin(void)
Method for Hardware Reset pin setup and control.
Definition ST7789_TFT_LCD_RDL.cpp:110
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:492
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:271
static constexpr uint8_t ST7789_SWRESET
Definition ST7789_TFT_LCD_RDL.hpp:86
void TFTidleDisplay(bool m)
Toggle the idle display mode.
Definition ST7789_TFT_LCD_RDL.cpp:339
uint8_t _rowstart
Definition ST7789_TFT_LCD_RDL.hpp:69
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