From 37cfe8ca961844332e543340fb194057bf9021cb Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Wed, 7 Aug 2024 22:36:59 +0100 Subject: [PATCH] PicoGraphics: Support for Explorer. --- drivers/st7789/st7789.hpp | 3 ++- micropython/modules/picographics/picographics.c | 1 + micropython/modules/picographics/picographics.cpp | 14 +++++++++++++- micropython/modules/picographics/picographics.h | 3 ++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/st7789/st7789.hpp b/drivers/st7789/st7789.hpp index e4ad2ee6f..52369256f 100644 --- a/drivers/st7789/st7789.hpp +++ b/drivers/st7789/st7789.hpp @@ -58,9 +58,10 @@ namespace pimoroni { cs(pins.cs), dc(pins.dc), wr_sck(pins.wr_sck), rd_sck(pins.rd_sck), d0(pins.d0), bl(pins.bl) { parallel_pio = pio1; + pio_set_gpio_base(parallel_pio, d0 + 8 >= 32 ? 16 : 0); parallel_sm = pio_claim_unused_sm(parallel_pio, true); parallel_offset = pio_add_program(parallel_pio, &st7789_parallel_program); - + //gpio_init(wr_sck); //gpio_set_dir(wr_sck, GPIO_OUT); //gpio_set_function(wr_sck, GPIO_FUNC_SIO); diff --git a/micropython/modules/picographics/picographics.c b/micropython/modules/picographics/picographics.c index b1aeec19e..0074b55f0 100644 --- a/micropython/modules/picographics/picographics.c +++ b/micropython/modules/picographics/picographics.c @@ -157,6 +157,7 @@ static const mp_map_elem_t picographics_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_DISPLAY_UNICORN_PACK), MP_ROM_INT(DISPLAY_UNICORN_PACK) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY_SCROLL_PACK), MP_ROM_INT(DISPLAY_SCROLL_PACK) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY_PICO_W_EXPLORER), MP_ROM_INT(DISPLAY_PICO_W_EXPLORER) }, + { MP_ROM_QSTR(MP_QSTR_DISPLAY_EXPLORER), MP_ROM_INT(DISPLAY_EXPLORER) }, { MP_ROM_QSTR(MP_QSTR_PEN_1BIT), MP_ROM_INT(PEN_1BIT) }, { MP_ROM_QSTR(MP_QSTR_PEN_P4), MP_ROM_INT(PEN_P4) }, diff --git a/micropython/modules/picographics/picographics.cpp b/micropython/modules/picographics/picographics.cpp index 4fe1e2d04..a55e8ad41 100644 --- a/micropython/modules/picographics/picographics.cpp +++ b/micropython/modules/picographics/picographics.cpp @@ -44,6 +44,13 @@ typedef struct _ModPicoGraphics_obj_t { bool get_display_settings(PicoGraphicsDisplay display, int &width, int &height, int &rotate, int &pen_type, PicoGraphicsBusType &bus_type) { switch(display) { + case DISPLAY_EXPLORER: + width = 320; + height = 240; + bus_type = BUS_PARALLEL; + if(rotate == -1) rotate = (int)Rotation::ROTATE_0; + if(pen_type == -1) pen_type = PEN_RGB565; + break; case DISPLAY_PICO_DISPLAY: width = 240; height = 135; @@ -335,6 +342,10 @@ mp_obj_t ModPicoGraphics_make_new(const mp_obj_type_t *type, size_t n_args, size } else if (display == DISPLAY_PICO_W_EXPLORER) { spi_bus = {PIMORONI_SPI_DEFAULT_INSTANCE, 17, SPI_DEFAULT_SCK, SPI_DEFAULT_MOSI, PIN_UNUSED, SPI_DEFAULT_MISO, 9}; } + } else if (bus_type == BUS_PARALLEL) { + if (display == DISPLAY_EXPLORER) { + parallel_bus = {27, 28, 30, 31, 32, 26}; + } } } @@ -349,7 +360,8 @@ mp_obj_t ModPicoGraphics_make_new(const mp_obj_type_t *type, size_t n_args, size // TODO grab BUSY and RESET from ARG_extra_pins self->display = m_new_class(Inky73, width, height, (Rotation)rotate, spi_bus); - } else if (display == DISPLAY_TUFTY_2040) { + } else if (display == DISPLAY_TUFTY_2040 + || display == DISPLAY_EXPLORER) { self->display = m_new_class(ST7789, width, height, (Rotation)rotate, parallel_bus); } else if (display == DISPLAY_LCD_160X80) { diff --git a/micropython/modules/picographics/picographics.h b/micropython/modules/picographics/picographics.h index 1812a875f..655d336b7 100644 --- a/micropython/modules/picographics/picographics.h +++ b/micropython/modules/picographics/picographics.h @@ -30,7 +30,8 @@ enum PicoGraphicsDisplay { DISPLAY_STELLAR_UNICORN, DISPLAY_UNICORN_PACK, DISPLAY_SCROLL_PACK, - DISPLAY_PICO_W_EXPLORER + DISPLAY_PICO_W_EXPLORER, + DISPLAY_EXPLORER }; enum PicoGraphicsPenType {