TinyGPU
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
ILI9341Driver8080ESP32< RGB_T > Class Template Reference

Driver for ILI9341 8-bit parallel display controller, driven via ESP32's LCD_CAM/I80 or PARLIO peripheral (see DisplayDriverParallel8ESP32). More...

#include <DisplayDriverParallel8ESP32.h>

Inheritance diagram for ILI9341Driver8080ESP32< RGB_T >:
Inheritance graph
[legend]
Collaboration diagram for ILI9341Driver8080ESP32< RGB_T >:
Collaboration graph
[legend]

Public Types

using Rotation = tinygpu::DisplayRotation
 

Public Member Functions

 ILI9341Driver8080ESP32 (int8_t d0, int8_t d1, int8_t d2, int8_t d3, int8_t d4, int8_t d5, int8_t d6, int8_t d7, int8_t wr, int8_t dc, int8_t cs, Rotation rotation=Rotation::kNone, uint32_t pclkHz=20000000, size_t nativeWidth=240, size_t nativeHeight=320)
 
size_t width () const override
 
size_t height () const override
 
bool begin () override
 
void setRotation (Rotation rotation) override
 
Rotation rotation () const
 
void setInvertColor (bool invert)
 
- Public Member Functions inherited from DisplayDriverParallel8ESP32< RGB_T >
 DisplayDriverParallel8ESP32 (int8_t d0, int8_t d1, int8_t d2, int8_t d3, int8_t d4, int8_t d5, int8_t d6, int8_t d7, int8_t wr, int8_t dc, int8_t cs, size_t width=240, size_t height=320, uint32_t pclkHz=20000000)
 
void end () override
 
 ~DisplayDriverParallel8ESP32 () override
 
size_t width () const override
 
size_t height () const override
 
bool writeData (ISurface< RGB_T > &surface) override
 
bool writeData (ISurface< RGB_T > &surface, size_t x, size_t y) override
 
- Public Member Functions inherited from DisplayDriver< RGB_T >
virtual ~DisplayDriver ()=default
 
virtual bool begin ()=0
 
virtual void end ()
 
virtual bool writeData (ISurface< RGB_T > &surface)=0
 
virtual bool writeData (ISurface< RGB_T > &surface, size_t x, size_t y)=0
 
virtual void setRotation (DisplayRotation rotation)
 
virtual size_t width () const =0
 
virtual size_t height () const =0
 
void writeColor (size_t width, size_t height, RGB_T color)
 

Static Protected Member Functions

static uint8_t madctlForRotation (Rotation rotation)
 

Protected Attributes

Rotation rotation_
 
size_t nativeWidth_
 
size_t nativeHeight_
 
bool invertColor_ = false
 
- Protected Attributes inherited from DisplayDriverParallel8ESP32< RGB_T >
int8_t d_ [8]
 
int8_t wr_
 
int8_t dc_
 
int8_t cs_
 
size_t width_
 
size_t height_
 
uint32_t pclkHz_
 
esp_lcd_panel_io_handle_t io_ = nullptr
 
esp_lcd_i80_bus_handle_t bus_ = nullptr
 
uint8_t * scratch_ = nullptr
 
size_t scratchCapacity_ = 0
 
volatile bool colorTransPending_ = false
 
- Protected Attributes inherited from DisplayDriver< RGB_T >
Font5x7< RGB_T > defaultFont
 

Additional Inherited Members

- Protected Member Functions inherited from DisplayDriverParallel8ESP32< RGB_T >
bool beginBus ()
 
bool writeCommand (uint8_t cmd, const uint8_t *param=nullptr, size_t len=0)
 
bool writeCommand (uint8_t cmd, std::initializer_list< uint8_t > data)
 
bool setAddressWindow (size_t x, size_t y, size_t w, size_t h) override
 
virtual bool setAddressWindow (size_t x, size_t y, size_t w, size_t h)=0
 
- Static Protected Attributes inherited from DisplayDriverParallel8ESP32< RGB_T >
static constexpr uint8_t kCmdRamWrite = 0x2C
 

Detailed Description

template<typename RGB_T = RGB565>
class tinygpu::ILI9341Driver8080ESP32< RGB_T >

Driver for ILI9341 8-bit parallel display controller, driven via ESP32's LCD_CAM/I80 or PARLIO peripheral (see DisplayDriverParallel8ESP32).

Same power/gamma/MADCTL init sequence as DisplayDriverSPI.h's ILI9341Driver (see that class's doc comment for provenance) - only the bus underneath differs.

Member Typedef Documentation

◆ Rotation

Constructor & Destructor Documentation

◆ ILI9341Driver8080ESP32()

ILI9341Driver8080ESP32 ( int8_t  d0,
int8_t  d1,
int8_t  d2,
int8_t  d3,
int8_t  d4,
int8_t  d5,
int8_t  d6,
int8_t  d7,
int8_t  wr,
int8_t  dc,
int8_t  cs,
Rotation  rotation = Rotation::kNone,
uint32_t  pclkHz = 20000000,
size_t  nativeWidth = 240,
size_t  nativeHeight = 320 
)
inline
Parameters
nativeWidth/nativeHeightthe panel's physical resolution in its native (portrait, MV bit clear) orientation - 240x320 is the common ILI9341 module size and the default; pass your panel's real values if it differs.

Member Function Documentation

◆ begin()

bool begin ( )
inlineoverridevirtual

◆ height()

size_t height ( ) const
inlineoverridevirtual

◆ madctlForRotation()

static uint8_t madctlForRotation ( Rotation  rotation)
inlinestaticprotected

◆ rotation()

Rotation rotation ( ) const
inline

◆ setInvertColor()

void setInvertColor ( bool  invert)
inline

See DisplayDriverSPI.h's ILI9341Driver::setInvertColor() - same panel quirk, same fix, just re-sent over this bus's begin() instead.

◆ setRotation()

void setRotation ( Rotation  rotation)
inlineoverridevirtual

Changes the panel's rotation after begin(). Default no-op, for drivers with no such concept (e.g. a fixed-orientation panel, or a desktop/SDL backend) - concrete SPI drivers (ILI9341Driver, ILI9342Driver) override this to reprogram MADCTL.

Reimplemented from DisplayDriver< RGB_T >.

◆ width()

size_t width ( ) const
inlineoverridevirtual

Current addressable panel width/height in pixels - for a driver that supports setRotation(), these reflect the current rotation (landscape vs portrait swaps them; see isLandscapeFamily()), not necessarily the panel's native/physical orientation. Callers that need to lay out content (e.g. OutputTinyGPU's scale_to_fit target, or clearScreen()'s band loop) should read these fresh rather than caching their own copy, so a setRotation() call is picked up automatically without needing separate bookkeeping.

Reimplemented from DisplayDriverParallel8ESP32< RGB_T >.

Member Data Documentation

◆ invertColor_

bool invertColor_ = false
protected

◆ nativeHeight_

size_t nativeHeight_
protected

◆ nativeWidth_

size_t nativeWidth_
protected

◆ rotation_

Rotation rotation_
protected

The documentation for this class was generated from the following file: