From ed1b9a4902c2a493bad1daba8ae2f438f9e7f611 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Tue, 16 May 2023 18:54:21 +0200 Subject: [PATCH 01/10] fixed frozen modules --- .../boards/pimoroni_inky_frame_5_7/mpconfigboard.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.mk b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.mk index 40583e1b965f..9d6126fc0494 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.mk +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.mk @@ -23,4 +23,6 @@ CFLAGS += -DCYW43_PIN_WL_HOST_WAKE=24 -DCYW43_PIN_WL_REG_ON=23 -DCYW43_WL_GPIO_C # Must be accompanied by a linker script change CFLAGS += -DCIRCUITPY_FIRMWARE_SIZE='(1536 * 1024)' -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel +FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-pcf85063a +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD From bfa536f300833664bfeea6962e14e57940db28ad Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Tue, 16 May 2023 18:59:28 +0200 Subject: [PATCH 02/10] use board-LED as status-LED (sic!) --- .../raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h index 0817a6c594ee..01aec8982444 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h @@ -4,7 +4,7 @@ #define CIRCUITPY_DIGITALIO_HAVE_INVALID_PULL (1) #define CIRCUITPY_DIGITALIO_HAVE_INVALID_DRIVE_MODE (1) -#define MICROPY_HW_LED_STATUS (&pin_GPIO6) +#define MICROPY_HW_LED_STATUS (&pin_CYW0) #define DEFAULT_I2C_BUS_SCL (&pin_GPIO4) #define DEFAULT_I2C_BUS_SDA (&pin_GPIO5) From 957d0119492d567fc9088d3a2573033df2d386be Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Tue, 16 May 2023 19:10:01 +0200 Subject: [PATCH 03/10] use board-LED as status-LED (sic!) --- ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index 4496790c6cb2..b9d86a3caca1 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -15,7 +15,6 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_LED_ACT), MP_ROM_PTR(&pin_GPIO6) }, - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO6) }, { MP_ROM_QSTR(MP_QSTR_LED_CONN), MP_ROM_PTR(&pin_GPIO7) }, { MP_ROM_QSTR(MP_QSTR_SWITCH_CLK), MP_ROM_PTR(&pin_GPIO8) }, { MP_ROM_QSTR(MP_QSTR_SWITCH_LATCH), MP_ROM_PTR(&pin_GPIO9) }, @@ -39,6 +38,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_INKY_RES), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_INKY_DC), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_CYW0) }, { MP_ROM_QSTR(MP_QSTR_SMPS_MODE), MP_ROM_PTR(&pin_CYW1) }, { MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_CYW2) }, From 3c10409708e04d2cc46bed69f8e70df33b41beb8 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Wed, 17 May 2023 19:06:20 +0200 Subject: [PATCH 04/10] support enable-pin as DigitalInOut (Badger2040W compatibility) --- .../boards/pimoroni_inky_frame_5_7/board.c | 15 +++++++++++++-- .../boards/pimoroni_inky_frame_5_7/inky-shared.h | 8 ++++++++ .../boards/pimoroni_inky_frame_5_7/pins.c | 3 ++- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c index 53fd01b75af2..995ce0f73aa9 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c @@ -33,14 +33,17 @@ #include "shared-module/displayio/__init__.h" #include "shared-bindings/board/__init__.h" #include "supervisor/shared/board.h" +#include "inky-shared.h" #define DELAY 0x80 +digitalio_digitalinout_obj_t enable_pin_obj; + // This is an SPD1656 control chip. The display is a 5.7" ACeP EInk. const uint8_t display_start_sequence[] = { 0x01, 4, 0x37, 0x00, 0x23, 0x23, // power setting - 0x00, 2, 0xef, 0x08, // panel setting (PSR) + 0x00, 2, 0xe3, 0x08, // panel setting (PSR, 0xe3: no rotation) 0x03, 1, 0x00, // PFS 0x06, 3, 0xc7, 0xc7, 0x1d, // booster 0x30, 1, 0x3c, // PLL setting @@ -62,6 +65,14 @@ const uint8_t refresh_sequence[] = { }; void board_init(void) { + // Drive the EN_3V3 pin high so the board stays awake on battery power + enable_pin_obj.base.type = &digitalio_digitalinout_type; + common_hal_digitalio_digitalinout_construct(&enable_pin_obj, &pin_GPIO2); + common_hal_digitalio_digitalinout_switch_to_output(&enable_pin_obj, true, DRIVE_MODE_PUSH_PULL); + + // Never reset + common_hal_digitalio_digitalinout_never_reset(&enable_pin_obj); + displayio_fourwire_obj_t *bus = &allocate_display_bus()->fourwire_bus; busio_spi_obj_t *spi = common_hal_board_create_spi(0); @@ -89,7 +100,7 @@ void board_init(void) { 480, // ram_height 0, // colstart 0, // rowstart - 180, // rotation + 0, // rotation NO_COMMAND, // set_column_window_command NO_COMMAND, // set_row_window_command NO_COMMAND, // set_current_column_command diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h new file mode 100644 index 000000000000..6f85d6800285 --- /dev/null +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h @@ -0,0 +1,8 @@ +#ifndef PIMORONI_INKY_SHARED +#define PIMORONI_INKY_SHARED + +#include "shared-bindings/digitalio/DigitalInOut.h" + +extern digitalio_digitalinout_obj_t enable_pin_obj; + +#endif // PIMORONI_INKY_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index b9d86a3caca1..0226add3afdc 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -2,13 +2,13 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" +#include "inky-shared.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, - { MP_ROM_QSTR(MP_QSTR_HOLD_SYS_EN), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_I2C_INT), MP_ROM_PTR(&pin_GPIO3) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO4) }, @@ -48,5 +48,6 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].epaper_display)}, + { MP_ROM_QSTR(MP_QSTR_ENABLE_DIO), MP_ROM_PTR(&enable_pin_obj)}, // GP2 }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 123aad76075d77f770d147195ce6f6784f5badb5 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Wed, 17 May 2023 19:07:27 +0200 Subject: [PATCH 05/10] optimize parameters --- ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c index 995ce0f73aa9..5e40a9b0f271 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c @@ -111,10 +111,10 @@ void board_init(void) { false, // color_bits_inverted 0x000000, // highlight_color refresh_sequence, sizeof(refresh_sequence), - 28.0, // refresh_time + 2.0, // refresh_time NULL, // busy_pin false, // busy_state - 30.0, // seconds_per_frame + 40.0, // seconds_per_frame false, // always_toggle_chip_select false, // grayscale true, // acep From 2d30d6d2e2ba10627eb3cf336c67905e29b700e0 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Thu, 18 May 2023 20:26:00 +0200 Subject: [PATCH 06/10] add support for keycodes to make inky-buttons usable --- .../boards/pimoroni_inky_frame_5_7/pins.c | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index 0226add3afdc..b6942d7cc24b 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -2,8 +2,41 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" +#include "py/objtuple.h" +#include "py/qstr.h" + #include "inky-shared.h" +// for use with keypad.ShiftRegisterKeys: map keycode (bit-number) +// to logical names board.KEYCODES.SW_A etc. +// N.B.: labels and bit-numbers in the schematic are reversed, i.e. +// SW_A on D0 has bit-number 7 + +STATIC const qstr board_keycodes_fields[] = { + MP_QSTR_SW_A, + MP_QSTR_SW_B, + MP_QSTR_SW_C, + MP_QSTR_SW_D, + MP_QSTR_SW_E, + MP_QSTR_RTC_ALARM, + MP_QSTR_EXT_TRIGGER, + MP_QSTR_INKY_BUS +}; + +STATIC MP_DEFINE_ATTRTUPLE( + board_keycodes_obj, + board_keycodes_fields, + 8, + MP_ROM_INT(7), + MP_ROM_INT(6), + MP_ROM_INT(5), + MP_ROM_INT(4), + MP_ROM_INT(3), + MP_ROM_INT(2), + MP_ROM_INT(1), + MP_ROM_INT(0) + ); + STATIC const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS @@ -49,5 +82,6 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].epaper_display)}, { MP_ROM_QSTR(MP_QSTR_ENABLE_DIO), MP_ROM_PTR(&enable_pin_obj)}, // GP2 + { MP_ROM_QSTR(MP_QSTR_KEYCODES), MP_ROM_PTR(&board_keycodes_obj)}, }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 767be33b0adc079eda3b69c25a82a11b3f0676e4 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Fri, 19 May 2023 20:34:10 +0200 Subject: [PATCH 07/10] use GPIO6 as status led and and add PICO_LED for onboard-led --- .../raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h | 2 +- ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h index 01aec8982444..0817a6c594ee 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h @@ -4,7 +4,7 @@ #define CIRCUITPY_DIGITALIO_HAVE_INVALID_PULL (1) #define CIRCUITPY_DIGITALIO_HAVE_INVALID_DRIVE_MODE (1) -#define MICROPY_HW_LED_STATUS (&pin_CYW0) +#define MICROPY_HW_LED_STATUS (&pin_GPIO6) #define DEFAULT_I2C_BUS_SCL (&pin_GPIO4) #define DEFAULT_I2C_BUS_SDA (&pin_GPIO5) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index b6942d7cc24b..492812719284 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -71,7 +71,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_INKY_RES), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_INKY_DC), MP_ROM_PTR(&pin_GPIO28) }, - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_CYW0) }, + { MP_ROM_QSTR(MP_QSTR_PICO_LED), MP_ROM_PTR(&pin_CYW0) }, { MP_ROM_QSTR(MP_QSTR_SMPS_MODE), MP_ROM_PTR(&pin_CYW1) }, { MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_CYW2) }, From 0af689d54267faf8ce87de050caf4b737228a931 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Fri, 23 Jun 2023 15:18:59 +0200 Subject: [PATCH 08/10] added defines for VOLTAGE_MONITOR/A3 --- ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index 492812719284..e97d36aa9276 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -71,6 +71,9 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_INKY_RES), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_INKY_DC), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_PICO_LED), MP_ROM_PTR(&pin_CYW0) }, { MP_ROM_QSTR(MP_QSTR_SMPS_MODE), MP_ROM_PTR(&pin_CYW1) }, { MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_CYW2) }, From d905ac0916f364e8cd2e93ca107f5fa32428594d Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Tue, 27 Jun 2023 20:30:04 +0200 Subject: [PATCH 09/10] add board.LED --- ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index e97d36aa9276..6ba266e7f3d3 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -48,6 +48,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_LED_ACT), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO6) }, { MP_ROM_QSTR(MP_QSTR_LED_CONN), MP_ROM_PTR(&pin_GPIO7) }, { MP_ROM_QSTR(MP_QSTR_SWITCH_CLK), MP_ROM_PTR(&pin_GPIO8) }, { MP_ROM_QSTR(MP_QSTR_SWITCH_LATCH), MP_ROM_PTR(&pin_GPIO9) }, From 9f91eb42aa020a430573f73991e5f3b5bde1f0f1 Mon Sep 17 00:00:00 2001 From: bablokb Date: Wed, 3 Apr 2024 13:23:38 +0000 Subject: [PATCH 10/10] changed refresh_time as requested --- ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c index 823e0be3f895..30b010a4f4e1 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c @@ -110,7 +110,7 @@ void board_init(void) { false, // color_bits_inverted 0x000000, // highlight_color refresh_sequence, sizeof(refresh_sequence), - 2.0, // refresh_time + 28.0, // refresh_time NULL, // busy_pin false, // busy_state 40.0, // seconds_per_frame