Bodmer / TFT_eSPI

Arduino and PlatformIO IDE compatible TFT library optimised for the Raspberry Pi Pico (RP2040), STM32, ESP8266 and ESP32 that supports different driver chips
Other
3.77k stars 1.08k forks source link

Parallel support for RP2040 #1299

Closed DustinWatts closed 2 years ago

DustinWatts commented 3 years ago

Hi Bodmer!

Do you have any plans to support 8/16 bit parallel in your awesome library? There is a demo here using the PIO: https://github.com/zapta/pio_tft/tree/main/platformio/src

Would be very interesting to have RP2040 PIO support in TFT_eSPI!

Cheers!

Bodmer commented 3 years ago

Adding parallel support is on the TODO list and using PIO would be great. Thanks for the link that makes a good starting point.

I just need more free time to implement it!

DustinWatts commented 3 years ago

Where can I donate free time? 😄

Bodmer commented 2 years ago

There is a new branch here:

https://github.com/Bodmer/TFT_eSPI/tree/RP2040_8bit_parallel

This implements 8 bit parallel support for the RP2040 using the PIO hardware to manage the interface. This provides a high data transfer rate to the screen (10ms to clear 480x320 pixel screen).

Important: At the moment it ONLY works with the Earle Philhower RP2040 board package.

Bodmer commented 2 years ago

RP2040 parallel support is now built into the main branch, this uses the PIO capability in the RP2040 processor. The PIO is also used for block fills so, for example, the processor can carry on executing software while the PIO fills the screen with a colour. DMA is also supported at >30M pixels/s.

Important: At the moment it ONLY works with the Earle Philhower RP2040 board package.

brightproject commented 1 year ago

Excuse me, how do I connect an 8 or 16 bit display to RP2040-zero? Is this possible and what wiring diagram should I use? Waveshare-rp2040-zero-Raspberry-Pi-Pico-alternative-pinout

Bodmer commented 1 year ago

Example connections for the GPIO:

#define TFT_RST   8 // Reset pin
#define TFT_CS    9  // Do not define if chip select control pin permanently connected to 0V
//#define TFT_RD   -1   // Do not define, read pin must be permanently connected to 3V3

// Note: All the following pins are PIO hardware configured and driven
  #define TFT_WR   10    // Write strobe pin
  #define TFT_DC   11    // Data Command control pin

  // PIO requires these to be sequentially increasing
  #define TFT_D0    0
  #define TFT_D1    1
  #define TFT_D2    2
  #define TFT_D3    3
  #define TFT_D4    4
  #define TFT_D5    5
  #define TFT_D6    6
  #define TFT_D7    7

You will also need to connect up power and maybe a backlight control signal depending on the display you have.