Base driver for MIPI-DSI panels. All of the DSI PHY/lane bring-up, command-channel writes and video-timing/framebuffer scan-out are handled by an IDSIBus (dependency-injected, see the constructor below), not by this class - this class only turns ISurface writes into drawBitmap() calls and byte-swaps into the bus's expected native RGB565 order (see writeData()). That split is what makes this family portable: adding a platform means implementing IDSIBus once (see DSIBusESP32.h, the ESP32-P4 DBI+DPI path; DSIBusSTM32.h, STM32's HAL_DSI+LTDC path), while every panel subclass (ST7701Driver, ...) keeps working unchanged on every platform that has a bus.
More...
#include <DisplayDriverDSI.h>
template<typename RGB_T = RGB565>
class tinygpu::DisplayDriverDSI< RGB_T >
Base driver for MIPI-DSI panels. All of the DSI PHY/lane bring-up, command-channel writes and video-timing/framebuffer scan-out are handled by an IDSIBus (dependency-injected, see the constructor below), not by this class - this class only turns ISurface writes into drawBitmap() calls and byte-swaps into the bus's expected native RGB565 order (see writeData()). That split is what makes this family portable: adding a platform means implementing IDSIBus once (see DSIBusESP32.h, the ESP32-P4 DBI+DPI path; DSIBusSTM32.h, STM32's HAL_DSI+LTDC path), while every panel subclass (ST7701Driver, ...) keeps working unchanged on every platform that has a bus.
RP2040 has no MIPI-DSI peripheral on any variant, so there is no RP2040 IDSIBus backend - QSPI/SPI panels (DisplayDriverQSPI.h/ DisplayDriverSPI.h) are the only display option on that platform.
◆ DisplayDriverDSI()
◆ ~DisplayDriverDSI()
◆ beginBus()
◆ end()
◆ finishInit()
Finalizes the panel after the init register sequence has been sent - active video scan-out starts once this returns true.
◆ height()
◆ setAddressWindow()
| bool setAddressWindow |
( |
size_t |
, |
|
|
size_t |
, |
|
|
size_t |
, |
|
|
size_t |
|
|
) |
| |
|
inlineoverrideprotectedvirtual |
◆ setBacklight()
| void setBacklight |
( |
bool |
on | ) |
|
|
inlineprotected |
◆ setBacklightPin()
| void setBacklightPin |
( |
int8_t |
backlight | ) |
|
|
inlineprotected |
◆ width()
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.
Implements DisplayDriver< RGB_T >.
◆ writeCommand()
| bool writeCommand |
( |
uint8_t |
cmd, |
|
|
const uint8_t * |
param = nullptr, |
|
|
size_t |
len = 0 |
|
) |
| |
|
inlineprotected |
Sends one command + parameter bytes over the DSI command channel.
◆ writeData() [1/2]
| bool writeData |
( |
ISurface< RGB_T > & |
surface | ) |
|
|
inlineoverridevirtual |
◆ writeData() [2/2]
| bool writeData |
( |
ISurface< RGB_T > & |
surface, |
|
|
size_t |
x, |
|
|
size_t |
y |
|
) |
| |
|
inlineoverridevirtual |
◆ backlight_
◆ bus_
◆ height_
◆ width_
The documentation for this class was generated from the following file: