From d55f96bea2e1956f3399fb7543f88fb44f0f17fc Mon Sep 17 00:00:00 2001 From: Karolis Stasaitis Date: Thu, 7 Jul 2022 14:01:06 +0200 Subject: [PATCH 1/5] carlossless_usbkb --- .../boards/carlossless_usbkb/board.c | 99 +++++++++++++++++++ .../boards/carlossless_usbkb/mpconfigboard.h | 17 ++++ .../boards/carlossless_usbkb/mpconfigboard.mk | 23 +++++ .../espressif/boards/carlossless_usbkb/pins.c | 68 +++++++++++++ .../boards/carlossless_usbkb/sdkconfig | 39 ++++++++ 5 files changed, 246 insertions(+) create mode 100644 ports/espressif/boards/carlossless_usbkb/board.c create mode 100644 ports/espressif/boards/carlossless_usbkb/mpconfigboard.h create mode 100644 ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk create mode 100644 ports/espressif/boards/carlossless_usbkb/pins.c create mode 100644 ports/espressif/boards/carlossless_usbkb/sdkconfig diff --git a/ports/espressif/boards/carlossless_usbkb/board.c b/ports/espressif/boards/carlossless_usbkb/board.c new file mode 100644 index 000000000000..3a0f09511ab5 --- /dev/null +++ b/ports/espressif/boards/carlossless_usbkb/board.c @@ -0,0 +1,99 @@ +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/busio/I2C.h" +#include "shared-bindings/displayio/I2CDisplay.h" +#include "shared-bindings/microcontroller/Pin.h" +#include "shared-module/displayio/__init__.h" + +#define DISPLAY_WIDTH 128 +#define DISPLAY_HEIGHT 32 + +displayio_fourwire_obj_t board_display_obj; + +// Sequence from page 19 here: https://cdn-shop.adafruit.com/datasheets/UG-2864HSWEG01+user+guide.pdf +uint8_t display_init_sequence[] = { + 0xAE, 0x00, // DISPLAY_OFF + 0x20, 0x01, 0x10, // set memory addressing to page mode. + 0x81, 0x01, 0xcf, // set contrast control + 0xA1, 0x00, // column 127 is segment 0 + 0xA6, 0x00, // normal display + 0xc8, 0x00, // normal display + 0xA8, 0x01, DISPLAY_HEIGHT - 1, // mux ratio is 1/64 + 0xd5, 0x01, 0x80, // set divide ratio + 0xd9, 0x01, 0xf1, // set pre-charge period + 0xda, 0x01, 0x12, // set com configuration + 0xdb, 0x01, 0x30, // set vcom configuration + 0x8d, 0x01, 0x14, // enable charge pump + 0xAF, 0x00 // DISPLAY_ON +}; + +void board_init(void) { + // USB + common_hal_never_reset_pin(&pin_GPIO19); + common_hal_never_reset_pin(&pin_GPIO20); + + // display + busio_i2c_obj_t *i2c = &displays[0].i2cdisplay_bus.inline_bus; + common_hal_busio_i2c_construct( + i2c, + &pin_GPIO7, // SCL + &pin_GPIO8, // SDA + 100000, // frequency + 255 // timeout + ); + + displayio_i2cdisplay_obj_t *bus = &displays[0].i2cdisplay_bus; + bus->base.type = &displayio_i2cdisplay_type; + + common_hal_displayio_i2cdisplay_construct( + bus, + i2c, + 0x3C, + NULL + ); + + displayio_display_obj_t *display = &displays[0].display; + display->base.type = &displayio_display_type; + + common_hal_displayio_display_construct( + display, + bus, + DISPLAY_WIDTH, // width (after rotation) + DISPLAY_HEIGHT, // height (after rotation) + 0, // column start + 0, // row start + 0, // rotation + 1, // color depth + true, // grayscale + false, // pixels in a byte share a row. Only valid for depths < 8 + 1, // bytes per cell. Only valid for depths < 8 + false, // reverse_pixels_in_byte. Only valid for depths < 8 + true, // reverse_pixels_in_word + 0x21, // set column command + 0x22, // set row command + 0x2c, // write memory command + display_init_sequence, + sizeof(display_init_sequence), + NULL, // backlight pin + 0x81, // brightness command + 1.0f, // brightness + false, // auto_brightness + true, // single_byte_bounds + true, // data_as_commands + true, // auto_refresh + 60, // native_frames_per_second + true, // backlight_on_high + true // SH1107_addressing + ); +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { + +} + +void board_deinit(void) { +} diff --git a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.h b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.h new file mode 100644 index 000000000000..812e9c3c43b3 --- /dev/null +++ b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.h @@ -0,0 +1,17 @@ +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "carlossless usbkb" +#define MICROPY_HW_MCU_NAME "ESP32S2" + +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) + +#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") + +#define AUTORESET_DELAY_MS 500 + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO4) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO3) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37) diff --git a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk new file mode 100644 index 000000000000..a7830365fdcd --- /dev/null +++ b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk @@ -0,0 +1,23 @@ +USB_VID = 0x239A +USB_PID = 0x80EC +USB_PRODUCT = "carlossless usbkb" +USB_MANUFACTURER = "carlossless" + +IDF_TARGET = esp32s2 + +INTERNAL_FLASH_FILESYSTEM = 1 +LONGINT_IMPL = MPZ + +# The default queue depth of 16 overflows on release builds, +# so increase it to 32. +CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32 + +CIRCUITPY_ESP_FLASH_MODE=dio +CIRCUITPY_ESP_FLASH_FREQ=40m +CIRCUITPY_ESP_FLASH_SIZE=4MB + +CIRCUITPY_MODULE=wroom + +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text diff --git a/ports/espressif/boards/carlossless_usbkb/pins.c b/ports/espressif/boards/carlossless_usbkb/pins.c new file mode 100644 index 000000000000..930d995db4a3 --- /dev/null +++ b/ports/espressif/boards/carlossless_usbkb/pins.c @@ -0,0 +1,68 @@ +#include "shared-bindings/board/__init__.h" + +#include "shared-module/displayio/__init__.h" + +STATIC const mp_rom_map_elem_t board_global_dict_table[] = { + {MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0)}, + + {MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3)}, + {MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO3)}, + + {MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4)}, + {MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO4)}, + + {MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5)}, + {MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6)}, + {MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7)}, + + {MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8)}, + {MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO8)}, + + {MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9)}, + {MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10)}, + {MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11)}, + {MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12)}, + + {MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13)}, + {MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13)}, + {MP_ROM_QSTR(MP_QSTR_L), MP_ROM_PTR(&pin_GPIO13)}, + + {MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14)}, + {MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO14)}, + + {MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15)}, + {MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO15)}, + + {MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16)}, + {MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO16)}, + + {MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17)}, + {MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO17)}, + + {MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18)}, + {MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO18)}, + + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO21)}, + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO33)}, + + {MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35)}, + {MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35)}, + + {MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36)}, + {MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36)}, + + {MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO37)}, + {MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO37)}, + + {MP_ROM_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO38)}, + {MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO38)}, + + {MP_ROM_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO39)}, + {MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO39)}, + + {MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj)}, + {MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj)}, + + { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)} +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); diff --git a/ports/espressif/boards/carlossless_usbkb/sdkconfig b/ports/espressif/boards/carlossless_usbkb/sdkconfig new file mode 100644 index 000000000000..7399bc76b428 --- /dev/null +++ b/ports/espressif/boards/carlossless_usbkb/sdkconfig @@ -0,0 +1,39 @@ +CONFIG_ESP32S2_SPIRAM_SUPPORT=y + +# +# SPI RAM config +# +# CONFIG_SPIRAM_TYPE_AUTO is not set +CONFIG_SPIRAM_TYPE_ESPPSRAM16=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_SIZE=2097152 + +# +# PSRAM clock and cs IO for ESP32S2 +# +CONFIG_DEFAULT_PSRAM_CLK_IO=30 +CONFIG_DEFAULT_PSRAM_CS_IO=26 +# end of PSRAM clock and cs IO for ESP32S2 + +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +# CONFIG_SPIRAM_SPEED_80M is not set +CONFIG_SPIRAM_SPEED_40M=y +# CONFIG_SPIRAM_SPEED_26M is not set +# CONFIG_SPIRAM_SPEED_20M is not set +CONFIG_SPIRAM=y +CONFIG_SPIRAM_BOOT_INIT=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +CONFIG_SPIRAM_USE_MEMMAP=y +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +# CONFIG_SPIRAM_USE_MALLOC is not set +CONFIG_SPIRAM_MEMTEST=y +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# end of SPI RAM config + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="usbkb" +# end of LWIP From 1983136274fb6313053cc78dfc4d28b858e1a678 Mon Sep 17 00:00:00 2001 From: Karolis Stasaitis Date: Mon, 7 Apr 2025 22:31:42 +0200 Subject: [PATCH 2/5] updated configs --- .../boards/carlossless_usbkb/board.c | 59 +++++++------------ .../boards/carlossless_usbkb/mpconfigboard.h | 18 +++--- .../boards/carlossless_usbkb/mpconfigboard.mk | 24 ++++---- .../espressif/boards/carlossless_usbkb/pins.c | 8 ++- .../boards/carlossless_usbkb/sdkconfig | 39 ------------ 5 files changed, 48 insertions(+), 100 deletions(-) diff --git a/ports/espressif/boards/carlossless_usbkb/board.c b/ports/espressif/boards/carlossless_usbkb/board.c index 3a0f09511ab5..8f79216f0ecc 100644 --- a/ports/espressif/boards/carlossless_usbkb/board.c +++ b/ports/espressif/boards/carlossless_usbkb/board.c @@ -1,15 +1,19 @@ -#include "supervisor/board.h" -#include "mpconfigboard.h" +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" +#include "shared-bindings/i2cdisplaybus/I2CDisplayBus.h" +#include "shared-module/displayio/__init__.h" #include "shared-bindings/busio/I2C.h" -#include "shared-bindings/displayio/I2CDisplay.h" #include "shared-bindings/microcontroller/Pin.h" -#include "shared-module/displayio/__init__.h" +#include "supervisor/board.h" +#include "supervisor/shared/board.h" +#include "shared-bindings/board/__init__.h" #define DISPLAY_WIDTH 128 #define DISPLAY_HEIGHT 32 -displayio_fourwire_obj_t board_display_obj; - // Sequence from page 19 here: https://cdn-shop.adafruit.com/datasheets/UG-2864HSWEG01+user+guide.pdf uint8_t display_init_sequence[] = { 0xAE, 0x00, // DISPLAY_OFF @@ -28,34 +32,22 @@ uint8_t display_init_sequence[] = { }; void board_init(void) { - // USB - common_hal_never_reset_pin(&pin_GPIO19); - common_hal_never_reset_pin(&pin_GPIO20); + busio_i2c_obj_t *i2c = common_hal_board_create_i2c(0); // display - busio_i2c_obj_t *i2c = &displays[0].i2cdisplay_bus.inline_bus; - common_hal_busio_i2c_construct( - i2c, - &pin_GPIO7, // SCL - &pin_GPIO8, // SDA - 100000, // frequency - 255 // timeout - ); - - displayio_i2cdisplay_obj_t *bus = &displays[0].i2cdisplay_bus; - bus->base.type = &displayio_i2cdisplay_type; - - common_hal_displayio_i2cdisplay_construct( + i2cdisplaybus_i2cdisplaybus_obj_t *bus = &allocate_display_bus()->i2cdisplay_bus; + bus->base.type = &i2cdisplaybus_i2cdisplaybus_type; + common_hal_i2cdisplaybus_i2cdisplaybus_construct( bus, i2c, - 0x3C, + 0x3c, NULL ); - displayio_display_obj_t *display = &displays[0].display; - display->base.type = &displayio_display_type; + busdisplay_busdisplay_obj_t *display = &allocate_display()->display; + display->base.type = &busdisplay_busdisplay_type; - common_hal_displayio_display_construct( + common_hal_busdisplay_busdisplay_construct( display, bus, DISPLAY_WIDTH, // width (after rotation) @@ -77,23 +69,12 @@ void board_init(void) { NULL, // backlight pin 0x81, // brightness command 1.0f, // brightness - false, // auto_brightness true, // single_byte_bounds true, // data_as_commands true, // auto_refresh 60, // native_frames_per_second true, // backlight_on_high - true // SH1107_addressing + true, // SH1107_addressing + 50000 // backlight pwm frequency (unused) ); } - -bool board_requests_safe_mode(void) { - return false; -} - -void reset_board(void) { - -} - -void board_deinit(void) { -} diff --git a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.h b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.h index 812e9c3c43b3..1c7e7c631e2a 100644 --- a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.h +++ b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.h @@ -1,16 +1,20 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "carlossless usbkb" #define MICROPY_HW_MCU_NAME "ESP32S2" -#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) - -#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") - -#define AUTORESET_DELAY_MS 500 +// #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) -#define DEFAULT_I2C_BUS_SCL (&pin_GPIO4) -#define DEFAULT_I2C_BUS_SDA (&pin_GPIO3) +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO7) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8) #define DEFAULT_SPI_BUS_SCK (&pin_GPIO36) #define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35) diff --git a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk index a7830365fdcd..48b907a5f458 100644 --- a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk +++ b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk @@ -5,19 +5,15 @@ USB_MANUFACTURER = "carlossless" IDF_TARGET = esp32s2 -INTERNAL_FLASH_FILESYSTEM = 1 -LONGINT_IMPL = MPZ +CIRCUITPY_ESP_FLASH_FREQ = 80m +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_SIZE = 4MB -# The default queue depth of 16 overflows on release builds, -# so increase it to 32. -CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32 +CIRCUITPY_ESP_PSRAM_SIZE = 2MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m -CIRCUITPY_ESP_FLASH_MODE=dio -CIRCUITPY_ESP_FLASH_FREQ=40m -CIRCUITPY_ESP_FLASH_SIZE=4MB - -CIRCUITPY_MODULE=wroom - -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text +# screen too small for the display +CIRCUITPY_TERMINALIO = 0 +# still load the fontio module +CIRCUITPY_FONTIO = 1 diff --git a/ports/espressif/boards/carlossless_usbkb/pins.c b/ports/espressif/boards/carlossless_usbkb/pins.c index 930d995db4a3..e1279b9942b7 100644 --- a/ports/espressif/boards/carlossless_usbkb/pins.c +++ b/ports/espressif/boards/carlossless_usbkb/pins.c @@ -1,8 +1,14 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + {MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0)}, {MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3)}, diff --git a/ports/espressif/boards/carlossless_usbkb/sdkconfig b/ports/espressif/boards/carlossless_usbkb/sdkconfig index 7399bc76b428..e69de29bb2d1 100644 --- a/ports/espressif/boards/carlossless_usbkb/sdkconfig +++ b/ports/espressif/boards/carlossless_usbkb/sdkconfig @@ -1,39 +0,0 @@ -CONFIG_ESP32S2_SPIRAM_SUPPORT=y - -# -# SPI RAM config -# -# CONFIG_SPIRAM_TYPE_AUTO is not set -CONFIG_SPIRAM_TYPE_ESPPSRAM16=y -# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set -# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set -CONFIG_SPIRAM_SIZE=2097152 - -# -# PSRAM clock and cs IO for ESP32S2 -# -CONFIG_DEFAULT_PSRAM_CLK_IO=30 -CONFIG_DEFAULT_PSRAM_CS_IO=26 -# end of PSRAM clock and cs IO for ESP32S2 - -# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set -# CONFIG_SPIRAM_RODATA is not set -# CONFIG_SPIRAM_SPEED_80M is not set -CONFIG_SPIRAM_SPEED_40M=y -# CONFIG_SPIRAM_SPEED_26M is not set -# CONFIG_SPIRAM_SPEED_20M is not set -CONFIG_SPIRAM=y -CONFIG_SPIRAM_BOOT_INIT=y -# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set -CONFIG_SPIRAM_USE_MEMMAP=y -# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set -# CONFIG_SPIRAM_USE_MALLOC is not set -CONFIG_SPIRAM_MEMTEST=y -# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set -# end of SPI RAM config - -# -# LWIP -# -CONFIG_LWIP_LOCAL_HOSTNAME="usbkb" -# end of LWIP From a7354d5f1ed0268166f422aaf373c869bf2cd45d Mon Sep 17 00:00:00 2001 From: Karolis Stasaitis Date: Mon, 7 Apr 2025 22:35:48 +0200 Subject: [PATCH 3/5] different vid and pid --- ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk index 48b907a5f458..2be1cc8a046a 100644 --- a/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk +++ b/ports/espressif/boards/carlossless_usbkb/mpconfigboard.mk @@ -1,5 +1,5 @@ -USB_VID = 0x239A -USB_PID = 0x80EC +USB_VID = 0xCAFE +USB_PID = 0xBABE USB_PRODUCT = "carlossless usbkb" USB_MANUFACTURER = "carlossless" From 4cff7702207288d5f04bb2b70dfcb6183c97ec59 Mon Sep 17 00:00:00 2001 From: Karolis Stasaitis Date: Mon, 7 Apr 2025 23:16:28 +0200 Subject: [PATCH 4/5] format fixes --- ports/espressif/boards/carlossless_usbkb/board.c | 4 ++-- shared-module/board/__init__.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/espressif/boards/carlossless_usbkb/board.c b/ports/espressif/boards/carlossless_usbkb/board.c index 8f79216f0ecc..68f6dc874e87 100644 --- a/ports/espressif/boards/carlossless_usbkb/board.c +++ b/ports/espressif/boards/carlossless_usbkb/board.c @@ -42,7 +42,7 @@ void board_init(void) { i2c, 0x3c, NULL - ); + ); busdisplay_busdisplay_obj_t *display = &allocate_display()->display; display->base.type = &busdisplay_busdisplay_type; @@ -76,5 +76,5 @@ void board_init(void) { true, // backlight_on_high true, // SH1107_addressing 50000 // backlight pwm frequency (unused) - ); + ); } diff --git a/shared-module/board/__init__.c b/shared-module/board/__init__.c index 96735c8dbaa4..022e3bbd953c 100644 --- a/shared-module/board/__init__.c +++ b/shared-module/board/__init__.c @@ -68,7 +68,7 @@ mp_obj_t common_hal_board_create_i2c(const mp_int_t instance) { assert_pin_free(i2c_pin[instance].scl); assert_pin_free(i2c_pin[instance].sda); - common_hal_busio_i2c_construct(self, i2c_pin[instance].scl, i2c_pin[instance].sda, 100000, 255); + common_hal_busio_i2c_construct(self, i2c_pin[instance].scl, i2c_pin[instance].sda, 400000, 255); i2c_obj_created[instance] = true; return &i2c_obj[instance]; From ec8afc519aba30e23d5707360a17c462f1155dd9 Mon Sep 17 00:00:00 2001 From: Karolis Stasaitis Date: Mon, 7 Apr 2025 23:21:59 +0200 Subject: [PATCH 5/5] undo busio change --- shared-module/board/__init__.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-module/board/__init__.c b/shared-module/board/__init__.c index 022e3bbd953c..96735c8dbaa4 100644 --- a/shared-module/board/__init__.c +++ b/shared-module/board/__init__.c @@ -68,7 +68,7 @@ mp_obj_t common_hal_board_create_i2c(const mp_int_t instance) { assert_pin_free(i2c_pin[instance].scl); assert_pin_free(i2c_pin[instance].sda); - common_hal_busio_i2c_construct(self, i2c_pin[instance].scl, i2c_pin[instance].sda, 400000, 255); + common_hal_busio_i2c_construct(self, i2c_pin[instance].scl, i2c_pin[instance].sda, 100000, 255); i2c_obj_created[instance] = true; return &i2c_obj[instance];