|
TinyGPU
|
Driver for ILI9342 SPI display controller. More...
#include <DisplayDriverSPI.h>


Public Types | |
| using | Rotation = tinygpu::DisplayRotation |
Public Member Functions | |
| ILI9342Driver (SPIClass &spi, int8_t cs, int8_t dc, int8_t rst=-1, Rotation rotation=Rotation::kNone, 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 |
Public Member Functions inherited from DisplayDriverSPI< RGB_T > | |
| DisplayDriverSPI (SPIClass &spi, int8_t cs, int8_t dc, int8_t rst=-1, size_t xOffset=0, size_t yOffset=0, uint32_t frequencyHz=40000000, uint32_t readFrequencyHz=15000000, size_t width=240, size_t height=320) | |
| size_t | width () const override |
| size_t | height () const override |
| bool | writeData (ISurface< RGB_T > &surface) override |
| void | setSwapOutputBytes (bool swap) |
| bool | writeData (ISurface< RGB_T > &surface, size_t x, size_t y) override |
| bool | readData (ISurface< RGB_T > &surface, size_t x, size_t y) |
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_ |
Protected Attributes inherited from DisplayDriverSPI< RGB_T > | |
| SPIClass & | spi_ |
| int8_t | cs_ |
| int8_t | dc_ |
| int8_t | rst_ |
| size_t | xOffset_ |
| size_t | yOffset_ |
| uint32_t | frequencyHz_ |
| uint32_t | readFrequencyHz_ |
| size_t | width_ |
| size_t | height_ |
| bool | swapOutputBytes_ = false |
Protected Attributes inherited from DisplayDriver< RGB_T > | |
| Font5x7< RGB_T > | defaultFont |
Additional Inherited Members | |
Protected Member Functions inherited from DisplayDriverSPI< RGB_T > | |
| void | setColumnRowAddress (size_t x, size_t y, size_t w, size_t h) |
| bool | setAddressWindow (size_t x, size_t y, size_t w, size_t h) override |
| void | setupPinsAndReset () |
| void | writeCommand (uint8_t cmd) |
| void | writeData16 (uint16_t d1, uint16_t d2) |
| void | writeData8 (uint8_t data) |
| void | writeDataN (std::initializer_list< uint8_t > bytes) |
| virtual bool | setAddressWindow (size_t x, size_t y, size_t w, size_t h)=0 |
Driver for ILI9342 SPI display controller.
ILI9342 shares ILI9341's command set (this class is structurally identical to ILI9341Driver), but this init sequence additionally programs power control, VCOM and gamma correction registers, which ILI9341Driver's minimal init (reset/sleep-out/pixel-format/MADCTL/ display-on only) leaves at the chip's power-on defaults. On some cheap clone panels sold as "ILI9341-compatible" - including ones that may actually be ILI9342 silicon - unprogrammed gamma/power registers are a plausible cause of color/near-black-tint issues that ILI9341Driver's minimal init doesn't fix. If your panel has that kind of issue, try this driver in place of ILI9341Driver; the register values below are a commonly used, well-established init sequence for this chip family, not something tuned to a specific board.
| using Rotation = tinygpu::DisplayRotation |
Alias for the shared tinygpu::DisplayRotation (see DisplayDriver.h) - kept so existing code written against ILI9342Driver<RGB_T>::Rotation still compiles unchanged now that the enum lives on the base class.
|
inline |
| nativeWidth/nativeHeight | the panel's physical resolution in its native (portrait, MV bit clear) orientation - 240x320 is the common size for this chip family and the default; pass your panel's real values if it differs. width()/height() report these swapped or not depending on rotation (and any later setRotation() call) - see isLandscapeFamily(). |
|
inlineoverridevirtual |
Implements DisplayDriver< RGB_T >.
|
inlineoverridevirtual |
Reimplemented from DisplayDriverSPI< RGB_T >.
|
inlinestaticprotected |
|
inline |
|
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 >.
|
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 DisplayDriverSPI< RGB_T >.
|
protected |
|
protected |
|
protected |