From 8348b8b3b29733fe88c6114fc0c5a47c7df18ac9 Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:52:22 -0700 Subject: [PATCH 01/13] Added board definitions --- .../board.c | 9 ++++ .../mpconfigboard.h | 27 ++++++++++ .../mpconfigboard.mk | 31 +++++++++++ .../pins.c | 53 +++++++++++++++++++ 4 files changed, 120 insertions(+) create mode 100644 ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/board.c create mode 100644 ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h create mode 100644 ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk create mode 100644 ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/board.c b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/board.c new file mode 100644 index 0000000000000..b44a1ae51e04b --- /dev/null +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h new file mode 100644 index 0000000000000..0188cd9b519ae --- /dev/null +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h @@ -0,0 +1,27 @@ + +#pragma once + +#define MICROPY_HW_BOARD_NAME "Microchip Curiosity CircuitPython Nano" +#define MICROPY_HW_MCU_NAME "same51j20" +#define CIRCUITPY_MCU_FAMILY samd51 + +#define MICROPY_HW_LED_STATUS (&pin_PB22) +#define MICROPY_HW_NEOPIXEL (&pin_PB22) + +#define EXTERNAL_FLASH_QSPI_DUAL + +#define BOARD_HAS_CRYSTAL 1 + +// USB is always used internally so skip the pin objects for it. +#define IGNORE_PIN_PA24 1 +#define IGNORE_PIN_PA25 1 + +#define DEFAULT_I2C_BUS_SCL (&pin_PB31) +#define DEFAULT_I2C_BUS_SDA (&pin_PB30) + +#define DEFAULT_SPI_BUS_SCK (&pin_PBA17) +#define DEFAULT_SPI_BUS_MOSI (&pin_PA16) +#define DEFAULT_SPI_BUS_MISO (&pin_PA18) + +#define DEFAULT_UART_BUS_RX (&pin_PA23) +#define DEFAULT_UART_BUS_TX (&pin_PA22) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk new file mode 100644 index 0000000000000..fcda6bf4b77a7 --- /dev/null +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk @@ -0,0 +1,31 @@ +USB_VID = 0x04D8 +USB_PID = 0xE52B +USB_PRODUCT = "Microchip Curiosity CircuitPython Nano" +USB_MANUFACTURER = "Microchip Technology Inc" + +CHIP_VARIANT = SAME51J20A +CHIP_FAMILY = same51 + +QSPI_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "GD25Q16C,W25Q16JVxQ,SST26VF032B" +LONGINT_IMPL = MPZ + +CIRCUITPY__EVE = 1 +CIRCUITPY_BITMAPFILTER = 0 +CIRCUITPY_CANIO = 1 +CIRCUITPY_FLOPPYIO = 0 +CIRCUITPY_SYNTHIO = 0 +CIRCUITPY_GIFIO = 0 +CIRCUITPY_JPEGIO = 0 + +CIRCUITPY_LTO_PARTITION = one + +# We don't have room for the fonts for terminalio for certain languages, +# so turn off terminalio, and if it's off and displayio is on, +# force a clean build. +# Note that we cannot test $(CIRCUITPY_DISPLAYIO) directly with an +# ifeq, because it's not set yet. +ifneq (,$(filter $(TRANSLATION),ja ko ru)) +CIRCUITPY_TERMINALIO = 0 +RELEASE_NEEDS_CLEAN_BUILD = $(CIRCUITPY_DISPLAYIO) +endif diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c new file mode 100644 index 0000000000000..c6a9dd9c416af --- /dev/null +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c @@ -0,0 +1,53 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA15) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA20) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA21) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB14) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB15) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PB16) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB17) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB22) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIX), MP_ROM_PTR(&pin_PB22) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) }, + { MP_ROM_QSTR(MP_QSTR_VREF), MP_ROM_PTR(&pin_PA03) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB04) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB05) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB06) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB07) }, + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB08) }, + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB09) }, + { MP_ROM_QSTR(MP_QSTR_DAC), MP_ROM_PTR(&pin_PA02) }, + { MP_ROM_QSTR(MP_QSTR_CAP1), MP_ROM_PTR(&pin_PB09) }, + { MP_ROM_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, + { MP_ROM_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB13) }, + { MP_ROM_QSTR(MP_QSTR_CAN_STDBY), MP_ROM_PTR(&pin_PB17) }, + { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_PA07) }, + { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_PA04) }, + { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_PA05) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB30) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB31) }, + { MP_ROM_QSTR(MP_QSTR_BLE_TX), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_BLE_RX), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_BLE_CLR), MP_ROM_PTR(&pin_PA14) }, + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_0), MP_ROM_PTR(&pin_PB00) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_1), MP_ROM_PTR(&pin_PB01) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_2), MP_ROM_PTR(&pin_PB02) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_3), MP_ROM_PTR(&pin_PB03) }, + { MP_ROM_QSTR(MP_QSTR_DEBUG_TX), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_DEBUG_RX), MP_ROM_PTR(&pin_PA23) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 0f9462f35cbbad14d602a9fcae7ead20e8db51c2 Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:11:34 -0700 Subject: [PATCH 02/13] Updated mpconfig.mk to use SST26VF016B. --- .../microchip_curiosity_circuitpython_nano/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk index fcda6bf4b77a7..666cec8ede16b 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk @@ -7,7 +7,7 @@ CHIP_VARIANT = SAME51J20A CHIP_FAMILY = same51 QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "GD25Q16C,W25Q16JVxQ,SST26VF032B" +EXTERNAL_FLASH_DEVICES = "SST26VF016B" LONGINT_IMPL = MPZ CIRCUITPY__EVE = 1 From b2a11f0d851512508de9adf0c9e2f281c8404525 Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Thu, 10 Apr 2025 14:34:14 -0700 Subject: [PATCH 03/13] Updated pins.c to contain objects for I2C, SPI, UART, CAN --- .../pins.c | 96 +++++++++++-------- 1 file changed, 56 insertions(+), 40 deletions(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c index c6a9dd9c416af..aae64a8a2f86a 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c @@ -9,45 +9,61 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA15) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA20) }, - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA21) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA27) }, - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB14) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB15) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PB16) }, - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB17) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB22) }, - { MP_ROM_QSTR(MP_QSTR_NEOPIX), MP_ROM_PTR(&pin_PB22) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) }, - { MP_ROM_QSTR(MP_QSTR_VREF), MP_ROM_PTR(&pin_PA03) }, - { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB04) }, - { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB05) }, - { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB06) }, - { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB07) }, - { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB08) }, - { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB09) }, - { MP_ROM_QSTR(MP_QSTR_DAC), MP_ROM_PTR(&pin_PA02) }, - { MP_ROM_QSTR(MP_QSTR_CAP1), MP_ROM_PTR(&pin_PB09) }, - { MP_ROM_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, - { MP_ROM_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB13) }, - { MP_ROM_QSTR(MP_QSTR_CAN_STDBY), MP_ROM_PTR(&pin_PB17) }, - { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_PA07) }, - { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_PA04) }, - { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_PA05) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB30) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB31) }, - { MP_ROM_QSTR(MP_QSTR_BLE_TX), MP_ROM_PTR(&pin_PA12) }, - { MP_ROM_QSTR(MP_QSTR_BLE_RX), MP_ROM_PTR(&pin_PA13) }, - { MP_ROM_QSTR(MP_QSTR_BLE_CLR), MP_ROM_PTR(&pin_PA14) }, - { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PA16) }, - { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_PA18) }, - { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA17) }, - { MP_ROM_QSTR(MP_QSTR_SPARE_0), MP_ROM_PTR(&pin_PB00) }, - { MP_ROM_QSTR(MP_QSTR_SPARE_1), MP_ROM_PTR(&pin_PB01) }, - { MP_ROM_QSTR(MP_QSTR_SPARE_2), MP_ROM_PTR(&pin_PB02) }, - { MP_ROM_QSTR(MP_QSTR_SPARE_3), MP_ROM_PTR(&pin_PB03) }, - { MP_ROM_QSTR(MP_QSTR_DEBUG_TX), MP_ROM_PTR(&pin_PA22) }, - { MP_ROM_QSTR(MP_QSTR_DEBUG_RX), MP_ROM_PTR(&pin_PA23) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA15) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA20) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA21) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB14) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB15) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PB16) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB17) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB22) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) }, + + { MP_ROM_QSTR(MP_QSTR_NEOPIX), MP_ROM_PTR(&pin_PB22) }, + + { MP_ROM_QSTR(MP_QSTR_VREF), MP_ROM_PTR(&pin_PA03) }, + + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB04) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB05) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB06) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB07) }, + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB08) }, + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB09) }, + + { MP_ROM_QSTR(MP_QSTR_DAC), MP_ROM_PTR(&pin_PA02) }, + + { MP_ROM_QSTR(MP_QSTR_CAP1), MP_ROM_PTR(&pin_PB09) }, + + { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_PA07) }, + { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_PA04) }, + { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_PA05) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB30) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB31) }, + + { MP_ROM_QSTR(MP_QSTR_BLE_TX), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_BLE_RX), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_BLE_CLR), MP_ROM_PTR(&pin_PA14) }, + + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA17) }, + + { MP_ROM_QSTR(MP_QSTR_SPARE_0), MP_ROM_PTR(&pin_PB00) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_1), MP_ROM_PTR(&pin_PB01) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_2), MP_ROM_PTR(&pin_PB02) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_3), MP_ROM_PTR(&pin_PB03) }, + + { MP_ROM_QSTR(MP_QSTR_DEBUG_TX), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_DEBUG_RX), MP_ROM_PTR(&pin_PA23) }, + + { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB13) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_STANDBY), MP_ROM_PTR(&pin_PB17) }, + + { 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_UART), MP_ROM_PTR(&board_uart_obj) }, }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 15b1d5f276fd30f8bcd5b3725dc53799c36e8caf Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 23 Apr 2025 11:38:00 -0700 Subject: [PATCH 04/13] Changes to mpconfigboard.h and pins.c --- mpconfigboard.h | 37 ++++++++++++++++++++++++++ pins.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 mpconfigboard.h create mode 100644 pins.c diff --git a/mpconfigboard.h b/mpconfigboard.h new file mode 100644 index 0000000000000..673a584585148 --- /dev/null +++ b/mpconfigboard.h @@ -0,0 +1,37 @@ + +#pragma once + +#define MICROPY_HW_BOARD_NAME "Microchip Curiosity CircuitPython Nano" +#define MICROPY_HW_MCU_NAME "same51j20" +#define CIRCUITPY_MCU_FAMILY samd51 + +#define MICROPY_HW_LED_STATUS (&pin_PB23) +#define MICROPY_HW_NEOPIXEL (&pin_PB22) + +#define EXTERNAL_FLASH_QSPI_DUAL + +#define BOARD_HAS_CRYSTAL 1 + +// USB is always used internally so skip the pin objects for it. +#define IGNORE_PIN_PA24 1 +#define IGNORE_PIN_PA25 1 + +#define DEFAULT_I2C_BUS_SCL (&pin_PB31) +#define DEFAULT_I2C_BUS_SDA (&pin_PB30) + +#define LCD_SPI_BUS_SCK (&pin_PA05) +#define LCD_SPI_BUS_MOSI (&pin_PA04) +#define LCD_SPI_BUS_CS (&pin_PA07) +#define LCD_BACKLIGHT (&pin_PA06) + +#define SDCARD_SPI_BUS_SCK (&pin_PA17) +#define SDCARD_SPI_BUS_MOSI (&pin_PA16) +#define SDCARD_SPI_BUS_MISO (&pin_PA18) +#define SDCARD_SPI_BUS_CS (&pin_PA19) + +#define DEFAULT_CAN_BUS_TX (&pin_PB12) +#define DEFAULT_CAN_BUS_RX (&pin_PB13) +#define DEFAULT_CAN_BUS_STDBY (&pin_PB17) + +#define DEFAULT_UART_BUS_RX (&pin_PA23) +#define DEFAULT_UART_BUS_TX (&pin_PA22) diff --git a/pins.c b/pins.c new file mode 100644 index 0000000000000..73cd7c64f18df --- /dev/null +++ b/pins.c @@ -0,0 +1,71 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA15) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA20) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA21) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA27) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB14) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB15) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PB16) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB17) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB22) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) }, + + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PB23) }, + + { MP_ROM_QSTR(MP_QSTR_NEOPIX), MP_ROM_PTR(&pin_PB22) }, + + { MP_ROM_QSTR(MP_QSTR_VREF), MP_ROM_PTR(&pin_PA03) }, + + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB04) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB05) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB06) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB07) }, + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB08) }, + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB09) }, + + { MP_ROM_QSTR(MP_QSTR_DAC), MP_ROM_PTR(&pin_PA02) }, + + { MP_ROM_QSTR(MP_QSTR_CAP1), MP_ROM_PTR(&pin_PB09) }, + + { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_PA07) }, + { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_PA04) }, + { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_PA05) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB30) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB31) }, + + { MP_ROM_QSTR(MP_QSTR_BLE_TX), MP_ROM_PTR(&pin_PA12) }, + { MP_ROM_QSTR(MP_QSTR_BLE_RX), MP_ROM_PTR(&pin_PA13) }, + { MP_ROM_QSTR(MP_QSTR_BLE_CLR), MP_ROM_PTR(&pin_PA14) }, + + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PA16) }, + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_PA18) }, + { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA17) }, + + { MP_ROM_QSTR(MP_QSTR_SPARE_0), MP_ROM_PTR(&pin_PB00) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_1), MP_ROM_PTR(&pin_PB01) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_2), MP_ROM_PTR(&pin_PB02) }, + { MP_ROM_QSTR(MP_QSTR_SPARE_3), MP_ROM_PTR(&pin_PB03) }, + + { MP_ROM_QSTR(MP_QSTR_DEBUG_TX), MP_ROM_PTR(&pin_PA22) }, + { MP_ROM_QSTR(MP_QSTR_DEBUG_RX), MP_ROM_PTR(&pin_PA23) }, + + { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB13) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_STANDBY), MP_ROM_PTR(&pin_PB17) }, + + { 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_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 4b72af42624dc50b56ecd836015483940ef3f9b1 Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:17:43 -0700 Subject: [PATCH 05/13] Delete pins.c --- pins.c | 71 ---------------------------------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 pins.c diff --git a/pins.c b/pins.c deleted file mode 100644 index 73cd7c64f18df..0000000000000 --- a/pins.c +++ /dev/null @@ -1,71 +0,0 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries -// -// SPDX-License-Identifier: MIT - -#include "shared-bindings/board/__init__.h" - -static const mp_rom_map_elem_t board_module_globals_table[] = { - CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS - - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA15) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA20) }, - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA21) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA27) }, - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB14) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB15) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PB16) }, - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB17) }, - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB22) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) }, - - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PB23) }, - - { MP_ROM_QSTR(MP_QSTR_NEOPIX), MP_ROM_PTR(&pin_PB22) }, - - { MP_ROM_QSTR(MP_QSTR_VREF), MP_ROM_PTR(&pin_PA03) }, - - { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB04) }, - { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB05) }, - { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB06) }, - { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB07) }, - { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB08) }, - { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB09) }, - - { MP_ROM_QSTR(MP_QSTR_DAC), MP_ROM_PTR(&pin_PA02) }, - - { MP_ROM_QSTR(MP_QSTR_CAP1), MP_ROM_PTR(&pin_PB09) }, - - { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_PA07) }, - { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_PA04) }, - { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_PA05) }, - - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB30) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB31) }, - - { MP_ROM_QSTR(MP_QSTR_BLE_TX), MP_ROM_PTR(&pin_PA12) }, - { MP_ROM_QSTR(MP_QSTR_BLE_RX), MP_ROM_PTR(&pin_PA13) }, - { MP_ROM_QSTR(MP_QSTR_BLE_CLR), MP_ROM_PTR(&pin_PA14) }, - - { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PA16) }, - { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_PA18) }, - { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA17) }, - - { MP_ROM_QSTR(MP_QSTR_SPARE_0), MP_ROM_PTR(&pin_PB00) }, - { MP_ROM_QSTR(MP_QSTR_SPARE_1), MP_ROM_PTR(&pin_PB01) }, - { MP_ROM_QSTR(MP_QSTR_SPARE_2), MP_ROM_PTR(&pin_PB02) }, - { MP_ROM_QSTR(MP_QSTR_SPARE_3), MP_ROM_PTR(&pin_PB03) }, - - { MP_ROM_QSTR(MP_QSTR_DEBUG_TX), MP_ROM_PTR(&pin_PA22) }, - { MP_ROM_QSTR(MP_QSTR_DEBUG_RX), MP_ROM_PTR(&pin_PA23) }, - - { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB13) }, - { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, - { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_STANDBY), MP_ROM_PTR(&pin_PB17) }, - - { 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_UART), MP_ROM_PTR(&board_uart_obj) }, -}; -MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From c4285e8472f44b7f1bff796b65efd9200a2522db Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:17:59 -0700 Subject: [PATCH 06/13] Delete mpconfigboard.h --- mpconfigboard.h | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 mpconfigboard.h diff --git a/mpconfigboard.h b/mpconfigboard.h deleted file mode 100644 index 673a584585148..0000000000000 --- a/mpconfigboard.h +++ /dev/null @@ -1,37 +0,0 @@ - -#pragma once - -#define MICROPY_HW_BOARD_NAME "Microchip Curiosity CircuitPython Nano" -#define MICROPY_HW_MCU_NAME "same51j20" -#define CIRCUITPY_MCU_FAMILY samd51 - -#define MICROPY_HW_LED_STATUS (&pin_PB23) -#define MICROPY_HW_NEOPIXEL (&pin_PB22) - -#define EXTERNAL_FLASH_QSPI_DUAL - -#define BOARD_HAS_CRYSTAL 1 - -// USB is always used internally so skip the pin objects for it. -#define IGNORE_PIN_PA24 1 -#define IGNORE_PIN_PA25 1 - -#define DEFAULT_I2C_BUS_SCL (&pin_PB31) -#define DEFAULT_I2C_BUS_SDA (&pin_PB30) - -#define LCD_SPI_BUS_SCK (&pin_PA05) -#define LCD_SPI_BUS_MOSI (&pin_PA04) -#define LCD_SPI_BUS_CS (&pin_PA07) -#define LCD_BACKLIGHT (&pin_PA06) - -#define SDCARD_SPI_BUS_SCK (&pin_PA17) -#define SDCARD_SPI_BUS_MOSI (&pin_PA16) -#define SDCARD_SPI_BUS_MISO (&pin_PA18) -#define SDCARD_SPI_BUS_CS (&pin_PA19) - -#define DEFAULT_CAN_BUS_TX (&pin_PB12) -#define DEFAULT_CAN_BUS_RX (&pin_PB13) -#define DEFAULT_CAN_BUS_STDBY (&pin_PB17) - -#define DEFAULT_UART_BUS_RX (&pin_PA23) -#define DEFAULT_UART_BUS_TX (&pin_PA22) From 6742579e46d8ef7061baf31a41536f6df5a57a3e Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:19:21 -0700 Subject: [PATCH 07/13] Updated mpconfig.h and pins.c --- .../mpconfigboard.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h index 0188cd9b519ae..673a584585148 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h @@ -5,7 +5,7 @@ #define MICROPY_HW_MCU_NAME "same51j20" #define CIRCUITPY_MCU_FAMILY samd51 -#define MICROPY_HW_LED_STATUS (&pin_PB22) +#define MICROPY_HW_LED_STATUS (&pin_PB23) #define MICROPY_HW_NEOPIXEL (&pin_PB22) #define EXTERNAL_FLASH_QSPI_DUAL @@ -19,9 +19,19 @@ #define DEFAULT_I2C_BUS_SCL (&pin_PB31) #define DEFAULT_I2C_BUS_SDA (&pin_PB30) -#define DEFAULT_SPI_BUS_SCK (&pin_PBA17) -#define DEFAULT_SPI_BUS_MOSI (&pin_PA16) -#define DEFAULT_SPI_BUS_MISO (&pin_PA18) +#define LCD_SPI_BUS_SCK (&pin_PA05) +#define LCD_SPI_BUS_MOSI (&pin_PA04) +#define LCD_SPI_BUS_CS (&pin_PA07) +#define LCD_BACKLIGHT (&pin_PA06) + +#define SDCARD_SPI_BUS_SCK (&pin_PA17) +#define SDCARD_SPI_BUS_MOSI (&pin_PA16) +#define SDCARD_SPI_BUS_MISO (&pin_PA18) +#define SDCARD_SPI_BUS_CS (&pin_PA19) + +#define DEFAULT_CAN_BUS_TX (&pin_PB12) +#define DEFAULT_CAN_BUS_RX (&pin_PB13) +#define DEFAULT_CAN_BUS_STDBY (&pin_PB17) #define DEFAULT_UART_BUS_RX (&pin_PA23) #define DEFAULT_UART_BUS_TX (&pin_PA22) From 0a5ce8d453d480d7fcfcc9800616a1bb38df9785 Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:22:27 -0700 Subject: [PATCH 08/13] Switched to SST26VF064B flash --- .../microchip_curiosity_circuitpython_nano/mpconfigboard.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk index 666cec8ede16b..c6fbb75fe802b 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk @@ -6,9 +6,11 @@ USB_MANUFACTURER = "Microchip Technology Inc" CHIP_VARIANT = SAME51J20A CHIP_FAMILY = same51 -QSPI_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "SST26VF016B" +# QSPI_FLASH_FILESYSTEM = 1 +INTERNAL_FLASH_FILESYSTEM = 1 +EXTERNAL_FLASH_DEVICES = "SST26VF064B" LONGINT_IMPL = MPZ +CIRCUITPY_ULAB = 0 CIRCUITPY__EVE = 1 CIRCUITPY_BITMAPFILTER = 0 From 92aa962bdf53cdfe1737c8730ce3283d99074f7a Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 23 Apr 2025 13:19:36 -0700 Subject: [PATCH 09/13] Added support for flash chips Microchip Quad SPI flash: SST26VF016B, SST26VF016B,SST26VF016B, SST26VF064B --- .../microchip_curiosity_circuitpython_nano/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk index c6fbb75fe802b..1a39d6ac11a4e 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.mk @@ -8,7 +8,7 @@ CHIP_FAMILY = same51 # QSPI_FLASH_FILESYSTEM = 1 INTERNAL_FLASH_FILESYSTEM = 1 -EXTERNAL_FLASH_DEVICES = "SST26VF064B" +EXTERNAL_FLASH_DEVICES = "SST26VF016B,SST26VF032B,SST26VF064B" LONGINT_IMPL = MPZ CIRCUITPY_ULAB = 0 From 6558a85eb9fe8b64f9c7d5e53db9dad06ed312a9 Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:08:13 -0700 Subject: [PATCH 10/13] Removed dual QSPI for flash chips --- .../microchip_curiosity_circuitpython_nano/mpconfigboard.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h index 673a584585148..71cd8829f665e 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h @@ -8,8 +8,6 @@ #define MICROPY_HW_LED_STATUS (&pin_PB23) #define MICROPY_HW_NEOPIXEL (&pin_PB22) -#define EXTERNAL_FLASH_QSPI_DUAL - #define BOARD_HAS_CRYSTAL 1 // USB is always used internally so skip the pin objects for it. From a9c9aa5c360870e9e4a6373196dd82b3c0a5f295 Mon Sep 17 00:00:00 2001 From: ross-satchell <59891338+ross-satchell@users.noreply.github.com> Date: Mon, 28 Apr 2025 15:38:56 -0700 Subject: [PATCH 11/13] Updated pins.c to add SD card CS pin and obj for lcd sd --- .../boards/microchip_curiosity_circuitpython_nano/pins.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c index aae64a8a2f86a..ef8a44f0874d9 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c @@ -19,6 +19,8 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB17) }, { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB22) }, { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) }, + + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PB23) }, { MP_ROM_QSTR(MP_QSTR_NEOPIX), MP_ROM_PTR(&pin_PB22) }, @@ -49,6 +51,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PA16) }, { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_PA18) }, { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA17) }, + { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PA19) }, { MP_ROM_QSTR(MP_QSTR_SPARE_0), MP_ROM_PTR(&pin_PB00) }, { MP_ROM_QSTR(MP_QSTR_SPARE_1), MP_ROM_PTR(&pin_PB01) }, @@ -62,8 +65,14 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_STANDBY), MP_ROM_PTR(&pin_PB17) }, + { MP_ROM_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB13) }, + { MP_ROM_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, + { MP_ROM_QSTR(MP_QSTR_CAN_STANDBY), MP_ROM_PTR(&pin_PB17) }, + { 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_UART), MP_ROM_PTR(&board_uart_obj) }, + { MP_ROM_QSTR(MP_QSTR_SDSPI), MP_ROM_PTR(&board_sdspi_obj) }, + { MP_ROM_QSTR(MP_QSTR_LCDSPI), MP_ROM_PTR(&board_lcdspi_obj) }, }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 992d50a455689aa949f4b5fcc38e29d56c6030de Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 28 Apr 2025 20:53:08 -0400 Subject: [PATCH 12/13] Fix up available SPI buses; swap I2C pins --- .../mpconfigboard.h | 22 +++++++------- .../pins.c | 30 ++++++++++++------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h index 71cd8829f665e..31559f318ada7 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/mpconfigboard.h @@ -14,18 +14,16 @@ #define IGNORE_PIN_PA24 1 #define IGNORE_PIN_PA25 1 -#define DEFAULT_I2C_BUS_SCL (&pin_PB31) -#define DEFAULT_I2C_BUS_SDA (&pin_PB30) - -#define LCD_SPI_BUS_SCK (&pin_PA05) -#define LCD_SPI_BUS_MOSI (&pin_PA04) -#define LCD_SPI_BUS_CS (&pin_PA07) -#define LCD_BACKLIGHT (&pin_PA06) - -#define SDCARD_SPI_BUS_SCK (&pin_PA17) -#define SDCARD_SPI_BUS_MOSI (&pin_PA16) -#define SDCARD_SPI_BUS_MISO (&pin_PA18) -#define SDCARD_SPI_BUS_CS (&pin_PA19) +#define DEFAULT_I2C_BUS_SCL (&pin_PB30) +#define DEFAULT_I2C_BUS_SDA (&pin_PB31) + +#define CIRCUITPY_BOARD_SPI (3) +// These correspond to the CIRCUITPY_BOARD_BUS_SINGLETON definitions in pins.c +#define CIRCUITPY_BOARD_SPI_PIN { \ + {.clock = &pin_PB03, .mosi = &pin_PB02, .miso = &pin_PB00}, /*board.SPI()*/ \ + {.clock = &pin_PA05, .mosi = &pin_PA04, .miso = NULL}, /*board.LCD_SPI()*/ \ + {.clock = &pin_PA17, .mosi = &pin_PA16, .miso = &pin_PA18}, /*board.SD_SPI()*/ \ +} #define DEFAULT_CAN_BUS_TX (&pin_PB12) #define DEFAULT_CAN_BUS_RX (&pin_PB13) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c index ef8a44f0874d9..93e96cb2b1120 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c @@ -6,6 +6,12 @@ #include "shared-bindings/board/__init__.h" +// The singleton for board.SPI() is already defined. +// board.LCD_SPI() +CIRCUITPY_BOARD_BUS_SINGLETON(lcd_spi, spi, 1) +// board.SD_SPI() +CIRCUITPY_BOARD_BUS_SINGLETON(sd_spi, spi, 2) + static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS @@ -19,7 +25,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB17) }, { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB22) }, { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) }, - + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PB23) }, { MP_ROM_QSTR(MP_QSTR_NEOPIX), MP_ROM_PTR(&pin_PB22) }, @@ -41,8 +47,8 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_PA04) }, { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_PA05) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB30) }, - { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB31) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB30) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB31) }, { MP_ROM_QSTR(MP_QSTR_BLE_TX), MP_ROM_PTR(&pin_PA12) }, { MP_ROM_QSTR(MP_QSTR_BLE_RX), MP_ROM_PTR(&pin_PA13) }, @@ -53,9 +59,16 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA17) }, { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PA19) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB00) }, { MP_ROM_QSTR(MP_QSTR_SPARE_0), MP_ROM_PTR(&pin_PB00) }, + + { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_PB01) }, { MP_ROM_QSTR(MP_QSTR_SPARE_1), MP_ROM_PTR(&pin_PB01) }, + + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB02) }, { MP_ROM_QSTR(MP_QSTR_SPARE_2), MP_ROM_PTR(&pin_PB02) }, + + { MP_ROM_QSTR(MP_QSTR_SCK ), MP_ROM_PTR(&pin_PB03) }, { MP_ROM_QSTR(MP_QSTR_SPARE_3), MP_ROM_PTR(&pin_PB03) }, { MP_ROM_QSTR(MP_QSTR_DEBUG_TX), MP_ROM_PTR(&pin_PA22) }, @@ -65,14 +78,11 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, { MP_OBJ_NEW_QSTR(MP_QSTR_CAN_STANDBY), MP_ROM_PTR(&pin_PB17) }, - { MP_ROM_QSTR(MP_QSTR_CAN_RX), MP_ROM_PTR(&pin_PB13) }, - { MP_ROM_QSTR(MP_QSTR_CAN_TX), MP_ROM_PTR(&pin_PB12) }, - { MP_ROM_QSTR(MP_QSTR_CAN_STANDBY), MP_ROM_PTR(&pin_PB17) }, - { 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_UART), MP_ROM_PTR(&board_uart_obj) }, - { MP_ROM_QSTR(MP_QSTR_SDSPI), MP_ROM_PTR(&board_sdspi_obj) }, - { MP_ROM_QSTR(MP_QSTR_LCDSPI), MP_ROM_PTR(&board_lcdspi_obj) }, + + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_LCD_SPI), MP_ROM_PTR(&board_lcd_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_SD_SPI), MP_ROM_PTR(&board_sd_spi_obj) }, }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From a4af1be162842300e627b7f078ea88a195b86c96 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 28 Apr 2025 20:55:33 -0400 Subject: [PATCH 13/13] fix pre-commit formatting complaint --- .../boards/microchip_curiosity_circuitpython_nano/pins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c index 93e96cb2b1120..b4184e3cecd30 100644 --- a/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c +++ b/ports/atmel-samd/boards/microchip_curiosity_circuitpython_nano/pins.c @@ -68,7 +68,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB02) }, { MP_ROM_QSTR(MP_QSTR_SPARE_2), MP_ROM_PTR(&pin_PB02) }, - { MP_ROM_QSTR(MP_QSTR_SCK ), MP_ROM_PTR(&pin_PB03) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB03) }, { MP_ROM_QSTR(MP_QSTR_SPARE_3), MP_ROM_PTR(&pin_PB03) }, { MP_ROM_QSTR(MP_QSTR_DEBUG_TX), MP_ROM_PTR(&pin_PA22) },