Display_Lib_RPI 2.3.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
ILI9341_TFT_LCD_RDL.hpp
Go to the documentation of this file.
1
8#pragma once
9
10#include <lgpio.h>
12
17{
18public:
20 ~ILI9341_TFT(){};
21
22 //Functions
23 virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) override;
24
25 //Init Setup related
26 void SetupGPIO(int8_t RST, int8_t DC, int8_t CS, int8_t SCLK, int8_t MOSI, int8_t MISO); //SW SPI
27 void SetupGPIO(int8_t RST, int8_t DC); // HW SPI
28 void InitScreenSize(uint16_t w, uint16_t h);
29 rdlib::Return_Codes_e InitSPI(uint16_t CommDelay, int gpioDev); // SW SPI
30 rdlib::Return_Codes_e InitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
31
32 // SPI related
33 uint16_t HighFreqDelayGet(void);
34 void HighFreqDelaySet(uint16_t);
36 void EnableDisplay(bool enableDisplay);
37
38 // screen related
39 void setRotation(display_rotate_e rotation);
40 void invertDisplay(bool i);
41 void scrollTo(uint16_t y);
42 void setScrollMargins(uint16_t top, uint16_t bottom);
43 void NormalMode(void);
45 void PrintDiagnostic(void);
46
47protected:
48
49private:
50
54 void TFTSetupResetPin(int8_t rst);
55 void cmdInit(void);
56
57 // SPI
58 bool _resetPinOn = true;
60 // SPI related
61 int _spiDev = 0;
62 int _spiChan = 0;
63 int _spiBaud = 50000;
64 int _spiFlags = 0;
66 // Screen
67 uint16_t _widthStartTFT = 240;
68 uint16_t _heightStartTFT = 320;
70 // Registers & command Set
71 static constexpr uint8_t ILI9341_NOP = 0x00;
72 static constexpr uint8_t ILI9341_SWRESET = 0x01;
73 static constexpr uint8_t ILI9341_RDDID = 0x04;
74 static constexpr uint8_t ILI9341_RDDST = 0x09;
76 static constexpr uint8_t ILI9341_SLPIN = 0x10;
77 static constexpr uint8_t ILI9341_SLPOUT = 0x11;
78 static constexpr uint8_t ILI9341_PTLON = 0x12;
79 static constexpr uint8_t ILI9341_NORON = 0x13;
81 static constexpr uint8_t ILI9341_INVOFF = 0x20;
82 static constexpr uint8_t ILI9341_INVON = 0x21;
83 static constexpr uint8_t ILI9341_GAMMASET = 0x26;
84 static constexpr uint8_t ILI9341_DISPOFF = 0x28;
85 static constexpr uint8_t ILI9341_DISPON = 0x29;
87 static constexpr uint8_t ILI9341_CASET = 0x2A;
88 static constexpr uint8_t ILI9341_PASET = 0x2B;
89 static constexpr uint8_t ILI9341_RAMWR = 0x2C;
90 static constexpr uint8_t ILI9341_RAMRD = 0x2E;
92 static constexpr uint8_t ILI9341_PTLAR = 0x30;
93 static constexpr uint8_t ILI9341_VSCRDEF = 0x33;
94 static constexpr uint8_t ILI9341_MADCTL = 0x36;
95 static constexpr uint8_t ILI9341_VSCRSADD = 0x37;
96 static constexpr uint8_t ILI9341_PIXFMT = 0x3A;
98 static constexpr uint8_t ILI9341_FRMCTR1 = 0xB1;
99 static constexpr uint8_t ILI9341_FRMCTR2 = 0xB2;
100 static constexpr uint8_t ILI9341_FRMCTR3 = 0xB3;
101 static constexpr uint8_t ILI9341_INVCTR = 0xB4;
102 static constexpr uint8_t ILI9341_DFUNCTR = 0xB6;
104 static constexpr uint8_t ILI9341_PWCTR1 = 0xC0;
105 static constexpr uint8_t ILI9341_PWCTR2 = 0xC1;
106 static constexpr uint8_t ILI9341_PWCTR3 = 0xC2;
107 static constexpr uint8_t ILI9341_PWCTR4 = 0xC3;
108 static constexpr uint8_t ILI9341_PWCTR5 = 0xC4;
110 static constexpr uint8_t ILI9341_VMCTR1 = 0xC5;
111 static constexpr uint8_t ILI9341_VMCTR2 = 0xC7;
113 static constexpr uint8_t ILI9341_RDID1 = 0xDA;
114 static constexpr uint8_t ILI9341_RDID2 = 0xDB;
115 static constexpr uint8_t ILI9341_RDID3 = 0xDC;
116 static constexpr uint8_t ILI9341_RDID4 = 0xDD;
118 static constexpr uint8_t ILI9341_EN3GAM = 0xF2;
119 static constexpr uint8_t ILI9341_GMCTRP1 = 0xE0;
120 static constexpr uint8_t ILI9341_GMCTRN1 = 0xE1;
122 static constexpr uint8_t ILI9341_PWONCS = 0xED;
123 static constexpr uint8_t ILI9341_PWCTRA = 0xCB;
124 static constexpr uint8_t ILI9341_PWCTRB = 0xCF;
125 static constexpr uint8_t ILI9341_DTMCTRA = 0xE8;
126 static constexpr uint8_t ILI9341_DTMCTRC = 0xEA;
127 static constexpr uint8_t ILI9341_PURTCTR = 0xF7;
129 static constexpr uint8_t MADCTL_MY = 0x80;
130 static constexpr uint8_t MADCTL_MX = 0x40;
131 static constexpr uint8_t MADCTL_MV = 0x20;
132 static constexpr uint8_t MADCTL_ML = 0x10;
133 static constexpr uint8_t MADCTL_RGB = 0x00;
134 static constexpr uint8_t MADCTL_BGR = 0x08;
135 static constexpr uint8_t MADCTL_MH = 0x04;
136};
137
Class to interface with ILI9341 LCD display.
Definition ILI9341_TFT_LCD_RDL.hpp:17
static constexpr uint8_t MADCTL_MY
Definition ILI9341_TFT_LCD_RDL.hpp:129
virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) override
Set the address window - the rectangle we will write to RAM with the next chunk of SPI data writes....
Definition ILI9341_TFT_LCD_RDL.cpp:432
static constexpr uint8_t MADCTL_BGR
Definition ILI9341_TFT_LCD_RDL.hpp:134
static constexpr uint8_t ILI9341_PWCTRB
Definition ILI9341_TFT_LCD_RDL.hpp:124
void NormalMode(void)
To Return Display to normal mode.
Definition ILI9341_TFT_LCD_RDL.cpp:398
void EnableDisplay(bool enableDisplay)
enable /disable display mode
Definition ILI9341_TFT_LCD_RDL.cpp:371
static constexpr uint8_t ILI9341_RDID2
Definition ILI9341_TFT_LCD_RDL.hpp:114
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition ILI9341_TFT_LCD_RDL.cpp:156
void setScrollMargins(uint16_t top, uint16_t bottom)
Set the height of the Top and Bottom Scroll Margins.
Definition ILI9341_TFT_LCD_RDL.cpp:406
static constexpr uint8_t ILI9341_MADCTL
Definition ILI9341_TFT_LCD_RDL.hpp:94
static constexpr uint8_t ILI9341_GMCTRN1
Definition ILI9341_TFT_LCD_RDL.hpp:120
static constexpr uint8_t ILI9341_SWRESET
Definition ILI9341_TFT_LCD_RDL.hpp:72
static constexpr uint8_t ILI9341_RDDID
Definition ILI9341_TFT_LCD_RDL.hpp:73
static constexpr uint8_t ILI9341_RDID1
Definition ILI9341_TFT_LCD_RDL.hpp:113
void invertDisplay(bool i)
Enable/Disable display color inversion.
Definition ILI9341_TFT_LCD_RDL.cpp:359
static constexpr uint8_t ILI9341_GAMMASET
Definition ILI9341_TFT_LCD_RDL.hpp:83
static constexpr uint8_t ILI9341_DFUNCTR
Definition ILI9341_TFT_LCD_RDL.hpp:102
static constexpr uint8_t ILI9341_DISPOFF
Definition ILI9341_TFT_LCD_RDL.hpp:84
static constexpr uint8_t ILI9341_FRMCTR2
Definition ILI9341_TFT_LCD_RDL.hpp:99
static constexpr uint8_t ILI9341_PWCTR1
Definition ILI9341_TFT_LCD_RDL.hpp:104
static constexpr uint8_t ILI9341_PTLON
Definition ILI9341_TFT_LCD_RDL.hpp:78
void InitScreenSize(uint16_t w, uint16_t h)
initialise the variables that define the size of the screen
Definition ILI9341_TFT_LCD_RDL.cpp:68
void scrollTo(uint16_t y)
Scroll display memory.
Definition ILI9341_TFT_LCD_RDL.cpp:388
static constexpr uint8_t MADCTL_RGB
Definition ILI9341_TFT_LCD_RDL.hpp:133
void setRotation(display_rotate_e rotation)
Set origin of (0,0) and orientation of TFT display.
Definition ILI9341_TFT_LCD_RDL.cpp:326
static constexpr uint8_t MADCTL_ML
Definition ILI9341_TFT_LCD_RDL.hpp:132
static constexpr uint8_t ILI9341_DTMCTRA
Definition ILI9341_TFT_LCD_RDL.hpp:125
uint16_t _heightStartTFT
Definition ILI9341_TFT_LCD_RDL.hpp:68
static constexpr uint8_t ILI9341_PURTCTR
Definition ILI9341_TFT_LCD_RDL.hpp:127
int _spiChan
Definition ILI9341_TFT_LCD_RDL.hpp:62
static constexpr uint8_t MADCTL_MH
Definition ILI9341_TFT_LCD_RDL.hpp:135
void SetupGPIO(int8_t RST, int8_t DC, int8_t CS, int8_t SCLK, int8_t MOSI, int8_t MISO)
sets up TFT GPIO for software SPI
Definition ILI9341_TFT_LCD_RDL.cpp:36
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
: Method for Clock, data and chip select pin setup routine for software SPI.
Definition ILI9341_TFT_LCD_RDL.cpp:508
static constexpr uint8_t ILI9341_RDID3
Definition ILI9341_TFT_LCD_RDL.hpp:115
static constexpr uint8_t ILI9341_FRMCTR1
Definition ILI9341_TFT_LCD_RDL.hpp:98
static constexpr uint8_t ILI9341_PASET
Definition ILI9341_TFT_LCD_RDL.hpp:88
static constexpr uint8_t ILI9341_INVCTR
Definition ILI9341_TFT_LCD_RDL.hpp:101
static constexpr uint8_t ILI9341_RDDST
Definition ILI9341_TFT_LCD_RDL.hpp:74
static constexpr uint8_t ILI9341_PWCTR3
Definition ILI9341_TFT_LCD_RDL.hpp:106
static constexpr uint8_t ILI9341_VMCTR1
Definition ILI9341_TFT_LCD_RDL.hpp:110
rdlib::Return_Codes_e ILI9341Initialize(void)
init routine for ILI9341_TFTcontroller
Definition ILI9341_TFT_LCD_RDL.cpp:120
static constexpr uint8_t ILI9341_PWCTR5
Definition ILI9341_TFT_LCD_RDL.hpp:108
static constexpr uint8_t MADCTL_MX
Definition ILI9341_TFT_LCD_RDL.hpp:130
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition ILI9341_TFT_LCD_RDL.cpp:52
bool _resetPinOn
Definition ILI9341_TFT_LCD_RDL.hpp:58
uint16_t _widthStartTFT
Definition ILI9341_TFT_LCD_RDL.hpp:67
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition ILI9341_TFT_LCD_RDL.cpp:162
static constexpr uint8_t ILI9341_PTLAR
Definition ILI9341_TFT_LCD_RDL.hpp:92
static constexpr uint8_t ILI9341_DTMCTRC
Definition ILI9341_TFT_LCD_RDL.hpp:126
void cmdInit(void)
Command Initialization sequence for ILI9341 LCD TFT display.
Definition ILI9341_TFT_LCD_RDL.cpp:257
rdlib::Return_Codes_e PowerDown(void)
Call when powering down TFT.
Definition ILI9341_TFT_LCD_RDL.cpp:173
static constexpr uint8_t ILI9341_PWCTR4
Definition ILI9341_TFT_LCD_RDL.hpp:107
static constexpr uint8_t ILI9341_SLPIN
Definition ILI9341_TFT_LCD_RDL.hpp:76
static constexpr uint8_t ILI9341_CASET
Definition ILI9341_TFT_LCD_RDL.hpp:87
rdlib::Return_Codes_e TFTResetPin(void)
: Method for Hardware Reset pin control
Definition ILI9341_TFT_LCD_RDL.cpp:457
rdlib::Return_Codes_e InitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition ILI9341_TFT_LCD_RDL.cpp:105
static constexpr uint8_t ILI9341_RDID4
Definition ILI9341_TFT_LCD_RDL.hpp:116
void PrintDiagnostic(void)
: Print out diagnostics
Definition ILI9341_TFT_LCD_RDL.cpp:545
int _spiFlags
Definition ILI9341_TFT_LCD_RDL.hpp:64
static constexpr uint8_t ILI9341_VMCTR2
Definition ILI9341_TFT_LCD_RDL.hpp:111
static constexpr uint8_t ILI9341_RAMRD
Definition ILI9341_TFT_LCD_RDL.hpp:90
static constexpr uint8_t ILI9341_SLPOUT
Definition ILI9341_TFT_LCD_RDL.hpp:77
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition ILI9341_TFT_LCD_RDL.cpp:488
static constexpr uint8_t ILI9341_NORON
Definition ILI9341_TFT_LCD_RDL.hpp:79
static constexpr uint8_t ILI9341_INVOFF
Definition ILI9341_TFT_LCD_RDL.hpp:81
static constexpr uint8_t ILI9341_PWCTRA
Definition ILI9341_TFT_LCD_RDL.hpp:123
static constexpr uint8_t ILI9341_EN3GAM
Definition ILI9341_TFT_LCD_RDL.hpp:118
int _spiBaud
Definition ILI9341_TFT_LCD_RDL.hpp:63
static constexpr uint8_t ILI9341_GMCTRP1
Definition ILI9341_TFT_LCD_RDL.hpp:119
static constexpr uint8_t MADCTL_MV
Definition ILI9341_TFT_LCD_RDL.hpp:131
static constexpr uint8_t ILI9341_PWCTR2
Definition ILI9341_TFT_LCD_RDL.hpp:105
static constexpr uint8_t ILI9341_DISPON
Definition ILI9341_TFT_LCD_RDL.hpp:85
static constexpr uint8_t ILI9341_INVON
Definition ILI9341_TFT_LCD_RDL.hpp:82
static constexpr uint8_t ILI9341_VSCRSADD
Definition ILI9341_TFT_LCD_RDL.hpp:95
int _spiDev
Definition ILI9341_TFT_LCD_RDL.hpp:61
static constexpr uint8_t ILI9341_PWONCS
Definition ILI9341_TFT_LCD_RDL.hpp:122
static constexpr uint8_t ILI9341_RAMWR
Definition ILI9341_TFT_LCD_RDL.hpp:89
ILI9341_TFT()
Constructor for class ILI9341_TFT.
Definition ILI9341_TFT_LCD_RDL.cpp:11
static constexpr uint8_t ILI9341_NOP
Definition ILI9341_TFT_LCD_RDL.hpp:71
static constexpr uint8_t ILI9341_FRMCTR3
Definition ILI9341_TFT_LCD_RDL.hpp:100
static constexpr uint8_t ILI9341_VSCRDEF
Definition ILI9341_TFT_LCD_RDL.hpp:93
static constexpr uint8_t ILI9341_PIXFMT
Definition ILI9341_TFT_LCD_RDL.hpp:96
Class to handle fonts and graphics of color 16 bit display.
Definition color16_graphics_RDL.hpp:22
display_rotate_e
Definition color16_graphics_RDL.hpp:62
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