TinyGPU
Loading...
Searching...
No Matches
Public Member Functions | List of all members
IQSPIBus Class Referenceabstract

Abstraction over the transport used by DisplayDriverQSPI (see TinyGPU/Drivers/DisplayDriverQSPI.h) to talk to the family of QSPI TFT panel controllers (NV3041A, ST77916, CO5300, SH8601, AXS15231B, ...) that wrap every command in a 32-bit frame: opcode byte (0x02 = "write, parameter bytes follow over 1 line", 0x32 = "write, color/pixel data follows over 4 lines"), the MIPI-DCS-style command byte, then 16 unused bits. More...

#include <IQSPIBus.h>

Inheritance diagram for IQSPIBus:
Inheritance graph
[legend]

Public Member Functions

virtual ~IQSPIBus ()=default
 
virtual bool begin ()=0
 Sets up the bus (pins/peripheral). Returns false on failure.
 
virtual void end ()=0
 
virtual bool writeCommand (uint8_t cmd, const uint8_t *param, size_t len)=0
 
virtual bool writeColor (uint8_t cmd, const uint8_t *data, size_t len)=0
 

Detailed Description

Abstraction over the transport used by DisplayDriverQSPI (see TinyGPU/Drivers/DisplayDriverQSPI.h) to talk to the family of QSPI TFT panel controllers (NV3041A, ST77916, CO5300, SH8601, AXS15231B, ...) that wrap every command in a 32-bit frame: opcode byte (0x02 = "write, parameter bytes follow over 1 line", 0x32 = "write, color/pixel data follows over 4 lines"), the MIPI-DCS-style command byte, then 16 unused bits.

DisplayDriverQSPI and its panel subclasses (NV3041ADriver, ...) only call writeCommand()/writeColor() - they never build the 32-bit frame or touch GPIO/peripheral registers themselves, so a new platform gains support for this whole panel family by implementing just this interface. See QSPIBusESP32.h (hardware esp_lcd-backed, DMA, ESP32 only) and QSPIBusBitBang.h (portable software fallback, any Arduino core with digitalWrite - RP2040, STM32, ...).

Constructor & Destructor Documentation

◆ ~IQSPIBus()

virtual ~IQSPIBus ( )
virtualdefault

Member Function Documentation

◆ begin()

virtual bool begin ( )
pure virtual

Sets up the bus (pins/peripheral). Returns false on failure.

Implemented in QSPIBusBitBang, and QSPIBusESP32.

◆ end()

virtual void end ( )
pure virtual

Releases any peripheral resources. Safe to call even if begin() was never called or already failed.

Implemented in QSPIBusBitBang, and QSPIBusESP32.

◆ writeColor()

virtual bool writeColor ( uint8_t  cmd,
const uint8_t *  data,
size_t  len 
)
pure virtual

Sends len bytes of pixel/color data for the given RAM-write command (usually 0x2C), framed with the 0x32 ("data over 4 lines") opcode. Returns false on transport failure. Blocks until the whole transfer has been accepted by the panel (synchronous from the caller's point of view, even if the underlying transport is internally asynchronous/DMA-driven).

Implemented in QSPIBusBitBang, and QSPIBusESP32.

◆ writeCommand()

virtual bool writeCommand ( uint8_t  cmd,
const uint8_t *  param,
size_t  len 
)
pure virtual

Sends one MIPI-DCS/vendor register command with up to len parameter bytes, framed with the 0x02 ("param bytes over 1 line") opcode. Returns false on transport failure.

Implemented in QSPIBusBitBang, and QSPIBusESP32.


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