diff --git a/ports/samd/Makefile b/ports/samd/Makefile index 6dd71bd93f4c5..ea0e4cd7bd537 100644 --- a/ports/samd/Makefile +++ b/ports/samd/Makefile @@ -56,7 +56,7 @@ INC += -I$(TOP)/lib/asf4/$(MCU_SERIES_LOWER)/include INC += -I$(TOP)/lib/asf4/$(MCU_SERIES_LOWER)/include/pio INC += -I$(TOP)/lib/tinyusb/src -MAKE_PIN_AF = boards/make-pin-table.py +MAKE_PIN_AF = boards/make-pins.py PIN_AF_TABLE_CSV = mcu/$(MCU_SERIES_LOWER)/pin-af-table.csv BOARD_PINS = $(BOARD_DIR)/pins.csv GEN_PIN_AF = pin_af_table.c @@ -210,6 +210,6 @@ pin_af.c: $(BUILD)/$(GEN_PIN_AF) | $(HEADER_BUILD) $(BUILD)/$(GEN_PIN_AF): $(PIN_AF_TABLE_CSV) $(BOARD_PINS) | $(HEADER_BUILD) $(ECHO) "Create $@" - $(Q)$(PYTHON) $(MAKE_PIN_AF) --csv $(PIN_AF_TABLE_CSV) --board $(BOARD_PINS) --table $(BUILD)/$(GEN_PIN_AF) --mcu $(MCU_SERIES) + $(Q)$(PYTHON) $(MAKE_PIN_AF) --af-csv $(PIN_AF_TABLE_CSV) --board-csv $(BOARD_PINS) --output-source $(BUILD)/$(GEN_PIN_AF) --mcu $(MCU_SERIES) include $(TOP)/py/mkrules.mk diff --git a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv index 65362770624de..9ee1c256d9032 100644 --- a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv @@ -1,43 +1,43 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines starting with # are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PA27,LED_TX -PIN_PB03,LED_RX +LED_TX,PIN_PA27 +LED_RX,PIN_PB03 -PIN_PA11,D0 -PIN_PA10,D1 -PIN_PA08,FLASH_MOSI -PIN_PA14,FLASH_MISO -PIN_PA09,FLASH_SCK -PIN_PA15,D5 -PIN_PA20,D6 -PIN_PA21,D7 -PIN_PA06,D8 -PIN_PA07,D9 -PIN_PA18,D10 -PIN_PA16,D11 -PIN_PA19,D12 -PIN_PA17,D13 -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PB02,A5 -PIN_PB22,TX -PIN_PB23,RX -PIN_PA23,SCL -PIN_PA22,SDA -PIN_PB10,MOSI -PIN_PA12,MISO -PIN_PB11,SCK -PIN_PA06,NEOPIXEL -PIN_PA13,FLASH_CS +D0,PIN_PA11 +D1,PIN_PA10 +FLASH_MOSI,PIN_PA08 +FLASH_MISO,PIN_PA14 +FLASH_SCK,PIN_PA09 +D5,PIN_PA15 +D6,PIN_PA20 +D7,PIN_PA21 +D8,PIN_PA06 +D9,PIN_PA07 +D10,PIN_PA18 +D11,PIN_PA16 +D12,PIN_PA19 +D13,PIN_PA17 +A0,PIN_PA02 +A1,PIN_PB08 +A2,PIN_PB09 +A3,PIN_PA04 +A4,PIN_PA05 +A5,PIN_PB02 +TX,PIN_PB22 +RX,PIN_PB23 +SCL,PIN_PA23 +SDA,PIN_PA22 +MOSI,PIN_PB10 +MISO,PIN_PA12 +SCK,PIN_PB11 +NEOPIXEL,PIN_PA06 +FLASH_CS,PIN_PA13 -PIN_PA24,USB_DM -PIN_PA25,USB_DP +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv index df3373f246a84..27e42f072e720 100644 --- a/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_FEATHER_M4_EXPRESS/pins.csv @@ -1,44 +1,44 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PB17,D0 -PIN_PB16,D1 -PIN_PA14,D4 -PIN_PA16,D5 -PIN_PA18,D6 -PIN_PB03,D8 -PIN_PA19,D9 -PIN_PA20,D10 -PIN_PA21,D11 -PIN_PA22,D12 -PIN_PA23,D13 -PIN_PA02,A0 -PIN_PA05,A1 -PIN_PB08,A2 -PIN_PB09,A3 -PIN_PA04,A4 -PIN_PB06,A5 -PIN_PA13,SCL -PIN_PA12,SDA -PIN_PB23,MOSI -PIN_PB22,MISO -PIN_PA17,SCK -PIN_PB01,VDIV -PIN_PA03,AREF -PIN_PB03,NEOPIXEL +D0,PIN_PB17 +D1,PIN_PB16 +D4,PIN_PA14 +D5,PIN_PA16 +D6,PIN_PA18 +D8,PIN_PB03 +D9,PIN_PA19 +D10,PIN_PA20 +D11,PIN_PA21 +D12,PIN_PA22 +D13,PIN_PA23 +A0,PIN_PA02 +A1,PIN_PA05 +A2,PIN_PB08 +A3,PIN_PB09 +A4,PIN_PA04 +A5,PIN_PB06 +SCL,PIN_PA13 +SDA,PIN_PA12 +MOSI,PIN_PB23 +MISO,PIN_PB22 +SCK,PIN_PA17 +VDIV,PIN_PB01 +AREF,PIN_PA03 +NEOPIXEL,PIN_PB03 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +QSPI_CS,PIN_PB11 +QSPI_SCK,PIN_PB10 +QSPI_D0,PIN_PA08 +QSPI_D1,PIN_PA09 +QSPI_D2,PIN_PA10 +QSPI_D3,PIN_PA11 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 +USB_SOF,PIN_PA26 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv index 04b1a717bd2cd..d5fc6cf697be4 100644 --- a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M0_EXPRESS/pins.csv @@ -1,40 +1,40 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PA11,D0 -PIN_PA10,D1 -PIN_PA14,D2 -PIN_PA09,D3 -PIN_PA08,D4 -PIN_PA15,D5 -PIN_PA21,D7 -PIN_PA07,D9 -PIN_PA18,D10 -PIN_PA16,D11 -PIN_PA19,D12 -PIN_PA17,D13 -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PB02,A5 -PIN_PA22,SDA -PIN_PA23,SCL -PIN_PB10,MOSI -PIN_PA12,MISO -PIN_PB11,SCK -PIN_PA00,DOTSTAR_CLK -PIN_PA01,DOTSTAR_DATA -PIN_PB22,FLASH_MOSI -PIN_PB03,FLASH_MISO -PIN_PB23,FLASH_SCK -PIN_PA27,FLASH_CS +D0,PIN_PA11 +D1,PIN_PA10 +D2,PIN_PA14 +D3,PIN_PA09 +D4,PIN_PA08 +D5,PIN_PA15 +D7,PIN_PA21 +D9,PIN_PA07 +D10,PIN_PA18 +D11,PIN_PA16 +D12,PIN_PA19 +D13,PIN_PA17 +A0,PIN_PA02 +A1,PIN_PB08 +A2,PIN_PB09 +A3,PIN_PA04 +A4,PIN_PA05 +A5,PIN_PB02 +SDA,PIN_PA22 +SCL,PIN_PA23 +MOSI,PIN_PB10 +MISO,PIN_PA12 +SCK,PIN_PB11 +DOTSTAR_CLK,PIN_PA00 +DOTSTAR_DATA,PIN_PA01 +FLASH_MOSI,PIN_PB22 +FLASH_MISO,PIN_PB03 +FLASH_SCK,PIN_PB23 +FLASH_CS,PIN_PA27 -PIN_PA24,USB_DM -PIN_PA25,USB_DP +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv index b63a1f4b13554..0f24d578e0889 100644 --- a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv @@ -1,44 +1,44 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PA16,D0 -PIN_PA17,D1 -PIN_PA07,D2 -PIN_PB22,D3 -PIN_PA14,D4 -PIN_PA15,D5 -PIN_PA18,D7 -PIN_PA19,D9 -PIN_PA20,D10 -PIN_PA21,D11 -PIN_PA23,D12 -PIN_PA22,D13 -PIN_PA02,A0 -PIN_PA05,A1 -PIN_PB08,A2 -PIN_PB09,A3 -PIN_PA04,A4 -PIN_PA06,A5 -PIN_PA12,SDA -PIN_PA13,SCL -PIN_PA00,MOSI -PIN_PB23,MISO -PIN_PA01,SCK -PIN_PB02,DOTSTAR_CLK -PIN_PB03,DOTSTAR_DATA +D0,PIN_PA16 +D1,PIN_PA17 +D2,PIN_PA07 +D3,PIN_PB22 +D4,PIN_PA14 +D5,PIN_PA15 +D7,PIN_PA18 +D9,PIN_PA19 +D10,PIN_PA20 +D11,PIN_PA21 +D12,PIN_PA23 +D13,PIN_PA22 +A0,PIN_PA02 +A1,PIN_PA05 +A2,PIN_PB08 +A3,PIN_PB09 +A4,PIN_PA04 +A5,PIN_PA06 +SDA,PIN_PA12 +SCL,PIN_PA13 +MOSI,PIN_PA00 +MISO,PIN_PB23 +SCK,PIN_PA01 +DOTSTAR_CLK,PIN_PB02 +DOTSTAR_DATA,PIN_PB03 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +QSPI_CS,PIN_PB11 +QSPI_SCK,PIN_PB10 +QSPI_D0,PIN_PA08 +QSPI_D1,PIN_PA09 +QSPI_D2,PIN_PA10 +QSPI_D3,PIN_PA11 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 +USB_SOF,PIN_PA26 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv index 0bda767600e12..0cdb39e57cee7 100644 --- a/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv +++ b/ports/samd/boards/ADAFRUIT_METRO_M4_EXPRESS/pins.csv @@ -1,66 +1,62 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored - -PIN_PA02,A0 -PIN_PA05,A1 -PIN_PA06,A2 -PIN_PB00,A3 -PIN_PB08,A4 -PIN_PB09,A5 -PIN_PA03,AREF - -PIN_PA23,D0 -PIN_PA22,D1 -PIN_PB17,D2 -PIN_PB16,D3 -PIN_PB13,D4 -PIN_PB14,D5 -PIN_PB15,D6 -PIN_PB12,D7 -PIN_PA21,D8 -PIN_PA20,D9 -PIN_PA18,D10 -PIN_PA19,D11 -PIN_PA17,D12 -PIN_PA16,D13 - -PIN_PB02,SDA -PIN_PB03,SCL - -PIN_PA13,SCK -PIN_PA12,MOSI -PIN_PA14,MISO - -PIN_PB22,NEOPIXEL -PIN_PB06,RXLED -PIN_PB07,TXLED - -# Airlift -PIN_PB05,ESP_RESET -PIN_PB04,ESP_BUSY -PIN_PA15,ESP_CS -PIN_PB01,ESP_GPIO0 -PIN_PA07,ESP_RX -PIN_PA04,ESP_TX -PIN_PB23,ESP_RTS - -# QSPI flash -PIN_PA08,FLASH_MOSI -PIN_PA09,FLASH_MISO -PIN_PA10,FLASH_WP -PIN_PA11,FLASH_HOLD -PIN_PB10,FLASH_SCK -PIN_PB11,FLASH_CS - -# USB -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF -PIN_PA17,USB_HOSTEN - -# JLink -PIN_PA30,SWCLK -PIN_PA31,SWDIO -PIN_PB30,SWO +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. + +A0,PIN_PA02 +A1,PIN_PA05 +A2,PIN_PA06 +A3,PIN_PB00 +A4,PIN_PB08 +A5,PIN_PB09 +AREF,PIN_PA03 + +D0,PIN_PA23 +D1,PIN_PA22 +D2,PIN_PB17 +D3,PIN_PB16 +D4,PIN_PB13 +D5,PIN_PB14 +D6,PIN_PB15 +D7,PIN_PB12 +D8,PIN_PA21 +D9,PIN_PA20 +D10,PIN_PA18 +D11,PIN_PA19 +D12,PIN_PA17 +D13,PIN_PA16 + +SDA,PIN_PB02 +SCL,PIN_PB03 + +SCK,PIN_PA13 +MOSI,PIN_PA12 +MISO,PIN_PA14 + +NEOPIXEL,PIN_PB22 +RXLED,PIN_PB06 +TXLED,PIN_PB07 + +ESP_RESET,PIN_PB05 +ESP_BUSY,PIN_PB04 +ESP_CS,PIN_PA15 +ESP_GPIO0,PIN_PB01 +ESP_RX,PIN_PA07 +ESP_TX,PIN_PA04 +ESP_RTS,PIN_PB23 + +FLASH_MOSI,PIN_PA08 +FLASH_MISO,PIN_PA09 +FLASH_WP,PIN_PA10 +FLASH_HOLD,PIN_PA11 +FLASH_SCK,PIN_PB10 +FLASH_CS,PIN_PB11 + +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 +USB_SOF,PIN_PA26 +USB_HOSTEN,PIN_PA17 + +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 +SWO,PIN_PB30 diff --git a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv index b5f1c9801b154..25d730870608a 100644 --- a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv +++ b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv @@ -1,20 +1,20 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PA08,D0 -PIN_PA02,D1 -PIN_PA09,D2 -PIN_PA07,D3 -PIN_PA06,D4 -PIN_PA00,DOTSTAR_DATA -PIN_PA01,DOTSTAR_CLK +D0,PIN_PA08 +D1,PIN_PA02 +D2,PIN_PA09 +D3,PIN_PA07 +D4,PIN_PA06 +DOTSTAR_DATA,PIN_PA00 +DOTSTAR_CLK,PIN_PA01 -PIN_PA10,LED +LED,PIN_PA10 -PIN_PA24,USB_DM -PIN_PA25,USB_DP +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/MINISAM_M4/pins.csv b/ports/samd/boards/MINISAM_M4/pins.csv index 3ea5f85cbacb9..dcb856edc6f3c 100644 --- a/ports/samd/boards/MINISAM_M4/pins.csv +++ b/ports/samd/boards/MINISAM_M4/pins.csv @@ -1,43 +1,43 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PA06,A5 -PIN_PA07,A6 -PIN_PA16,RX -PIN_PA17,TX -PIN_PA19,D3 -PIN_PA20,D4 -PIN_PA21,D5 -PIN_PA15,LED -PIN_PA00,BUTTON -PIN_PA03,AREF -PIN_PA12,SDA -PIN_PA13,SCL -PIN_PB22,MOSI -PIN_PB23,MISO -PIN_PA01,SCK -PIN_PB03,DOTSTAR_DATA -PIN_PB02,DOTSTAR_CLK +A0,PIN_PA02 +A1,PIN_PB08 +A2,PIN_PB09 +A3,PIN_PA04 +A4,PIN_PA05 +A5,PIN_PA06 +A6,PIN_PA07 +RX,PIN_PA16 +TX,PIN_PA17 +D3,PIN_PA19 +D4,PIN_PA20 +D5,PIN_PA21 +LED,PIN_PA15 +BUTTON,PIN_PA00 +AREF,PIN_PA03 +SDA,PIN_PA12 +SCL,PIN_PA13 +MOSI,PIN_PB22 +MISO,PIN_PB23 +SCK,PIN_PA01 +DOTSTAR_DATA,PIN_PB03 +DOTSTAR_CLK,PIN_PB02 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +QSPI_CS,PIN_PB11 +QSPI_SCK,PIN_PB10 +QSPI_D0,PIN_PA08 +QSPI_D1,PIN_PA09 +QSPI_D2,PIN_PA10 +QSPI_D3,PIN_PA11 -PIN_PA15,LED +LED,PIN_PA15 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 +USB_SOF,PIN_PA26 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv index 5990c373bf934..b1cb10ed8f717 100644 --- a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv +++ b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv @@ -1,60 +1,57 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -# EXT1 -PIN_PB00,EXT1_PIN3 -PIN_PB01,EXT1_PIN4 -PIN_PB06,EXT1_PIN5 -PIN_PB07,EXT1_PIN6 -PIN_PB02,EXT1_PIN7 -PIN_PB03,EXT1_PIN8 -PIN_PB04,EXT1_PIN9 -PIN_PB05,EXT1_PIN10 -PIN_PA08,EXT1_PIN11 -PIN_PA09,EXT1_PIN12 -PIN_PB09,EXT1_PIN13 -PIN_PB08,EXT1_PIN14 -PIN_PA05,EXT1_PIN15 -PIN_PA06,EXT1_PIN16 -PIN_PA04,EXT1_PIN17 -PIN_PA07,EXT1_PIN18 +EXT1_PIN3,PIN_PB00 +EXT1_PIN4,PIN_PB01 +EXT1_PIN5,PIN_PB06 +EXT1_PIN6,PIN_PB07 +EXT1_PIN7,PIN_PB02 +EXT1_PIN8,PIN_PB03 +EXT1_PIN9,PIN_PB04 +EXT1_PIN10,PIN_PB05 +EXT1_PIN11,PIN_PA08 +EXT1_PIN12,PIN_PA09 +EXT1_PIN13,PIN_PB09 +EXT1_PIN14,PIN_PB08 +EXT1_PIN15,PIN_PA05 +EXT1_PIN16,PIN_PA06 +EXT1_PIN17,PIN_PA04 +EXT1_PIN18,PIN_PA07 -# EXT2 -PIN_PA10,EXT2_PIN3 -PIN_PA11,EXT2_PIN4 -PIN_PA20,EXT2_PIN5 -PIN_PA21,EXT2_PIN6 -PIN_PB12,EXT2_PIN7 -PIN_PB13,EXT2_PIN8 -PIN_PB14,EXT2_PIN9 -PIN_PB15,EXT2_PIN10 -PIN_PB11,EXT2_PIN13 -PIN_PB10,EXT2_PIN14 -PIN_PA17,EXT2_PIN15 -PIN_PA18,EXT2_PIN16 -PIN_PA16,EXT2_PIN17 -PIN_PA19,EXT2_PIN18 +EXT2_PIN3,PIN_PA10 +EXT2_PIN4,PIN_PA11 +EXT2_PIN5,PIN_PA20 +EXT2_PIN6,PIN_PA21 +EXT2_PIN7,PIN_PB12 +EXT2_PIN8,PIN_PB13 +EXT2_PIN9,PIN_PB14 +EXT2_PIN10,PIN_PB15 +EXT2_PIN13,PIN_PB11 +EXT2_PIN14,PIN_PB10 +EXT2_PIN15,PIN_PA17 +EXT2_PIN16,PIN_PA18 +EXT2_PIN17,PIN_PA16 +EXT2_PIN18,PIN_PA19 -# EXT3 -PIN_PA02,EXT3_PIN3 -PIN_PA03,EXT3_PIN4 -PIN_PA15,EXT3_PIN6 -PIN_PA12,EXT3_PIN7 -PIN_PA13,EXT3_PIN8 -PIN_PA28,EXT3_PIN9 -PIN_PA27,EXT3_PIN10 -PIN_PB17,EXT3_PIN15 -PIN_PB22,EXT3_PIN16 -PIN_PB16,EXT3_PIN17 -PIN_PB23,EXT3_PIN18 +EXT3_PIN3,PIN_PA02 +EXT3_PIN4,PIN_PA03 +EXT3_PIN6,PIN_PA15 +EXT3_PIN7,PIN_PA12 +EXT3_PIN8,PIN_PA13 +EXT3_PIN9,PIN_PA28 +EXT3_PIN10,PIN_PA27 +EXT3_PIN15,PIN_PB17 +EXT3_PIN16,PIN_PB22 +EXT3_PIN17,PIN_PB16 +EXT3_PIN18,PIN_PB23 -PIN_PB30,LED +LED,PIN_PB30 -PIN_PA24,USB_DM -PIN_PA25,USB_DP +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv index c32108b9f72a0..ead445c760541 100644 --- a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv +++ b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv @@ -1,76 +1,76 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PB08,A0_D0 -PIN_PB09,A1_D1 -PIN_PA07,A2_D2 -PIN_PB04,A3_D3 -PIN_PB05,A4_D4 -PIN_PB06,A5_D5 -PIN_PA04,A6_D6 -PIN_PB07,A7_D7 -PIN_PA06,A8_D8 -PIN_PD08,SWITCH_X -PIN_PD09,SWITCH_Y -PIN_PD10,SWITCH_Z -PIN_PD12,SWITCH_B -PIN_PD20,SWITCH_U -PIN_PC26,BUTTON_1 -PIN_PC27,BUTTON_2 -PIN_PC28,BUTTON_3 -PIN_PC14,ENABLE_5V -PIN_PC15,ENABLE_3V3 -PIN_PB26,TX -PIN_PB27,RX -PIN_PA13,SDA0 -PIN_PA12,SCL0 -PIN_PA17,SDA1 -PIN_PA16,SCL1 -PIN_PB02,MOSI -PIN_PB00,MISO -PIN_PB03,SCK -PIN_PB01,CS -PIN_PB15,GPCLK0 -PIN_PB12,GPCLK1 -PIN_PB13,GPCLK2 -PIN_PC16,SD_MOSI -PIN_PC18,SD_MISO -PIN_PC17,SD_SCK -PIN_PC19,SD_CS -PIN_PD21,SD_DET -PIN_PA20,I2S_LRCLK -PIN_PA21,I2S_SDIN -PIN_PA22,I2S_SDOUT -PIN_PB16,I2C_BCLK -PIN_PB18,LCD_MISO -PIN_PB19,LCD_MOSI -PIN_PB20,LCD_SCK -PIN_PB21,LCD_CS -PIN_PC05,LCD_BACKLIGHT -PIN_PC06,LCD_D_C -PIN_PC07,LCD_RESET -PIN_PC10,LCD_XL -PIN_PC11,LCD_YU -PIN_PC12,LCD_XR -PIN_PC13,LCD_YD -PIN_PC30,MIC -PIN_PD11,BUZZER +A0_D0,PIN_PB08 +A1_D1,PIN_PB09 +A2_D2,PIN_PA07 +A3_D3,PIN_PB04 +A4_D4,PIN_PB05 +A5_D5,PIN_PB06 +A6_D6,PIN_PA04 +A7_D7,PIN_PB07 +A8_D8,PIN_PA06 +SWITCH_X,PIN_PD08 +SWITCH_Y,PIN_PD09 +SWITCH_Z,PIN_PD10 +SWITCH_B,PIN_PD12 +SWITCH_U,PIN_PD20 +BUTTON_1,PIN_PC26 +BUTTON_2,PIN_PC27 +BUTTON_3,PIN_PC28 +ENABLE_5V,PIN_PC14 +ENABLE_3V3,PIN_PC15 +TX,PIN_PB26 +RX,PIN_PB27 +SDA0,PIN_PA13 +SCL0,PIN_PA12 +SDA1,PIN_PA17 +SCL1,PIN_PA16 +MOSI,PIN_PB02 +MISO,PIN_PB00 +SCK,PIN_PB03 +CS,PIN_PB01 +GPCLK0,PIN_PB15 +GPCLK1,PIN_PB12 +GPCLK2,PIN_PB13 +SD_MOSI,PIN_PC16 +SD_MISO,PIN_PC18 +SD_SCK,PIN_PC17 +SD_CS,PIN_PC19 +SD_DET,PIN_PD21 +I2S_LRCLK,PIN_PA20 +I2S_SDIN,PIN_PA21 +I2S_SDOUT,PIN_PA22 +I2C_BCLK,PIN_PB16 +LCD_MISO,PIN_PB18 +LCD_MOSI,PIN_PB19 +LCD_SCK,PIN_PB20 +LCD_CS,PIN_PB21 +LCD_BACKLIGHT,PIN_PC05 +LCD_D_C,PIN_PC06 +LCD_RESET,PIN_PC07 +LCD_XL,PIN_PC10 +LCD_YU,PIN_PC11 +LCD_XR,PIN_PC12 +LCD_YD,PIN_PC13 +MIC,PIN_PC30 +BUZZER,PIN_PD11 -PIN_PB11,QSPI_CS -PIN_PB10,QSPI_SCK -PIN_PA08,QSPI_D0 -PIN_PA09,QSPI_D1 -PIN_PA10,QSPI_D2 -PIN_PA11,QSPI_D3 +QSPI_CS,PIN_PB11 +QSPI_SCK,PIN_PB10 +QSPI_D0,PIN_PA08 +QSPI_D1,PIN_PA09 +QSPI_D2,PIN_PA10 +QSPI_D3,PIN_PA11 -PIN_PA15,LED_BLUE -PIN_PC05,LED_LCD +LED_BLUE,PIN_PA15 +LED_LCD,PIN_PC05 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 +USB_SOF,PIN_PA26 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv b/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv index 2f1c180e8ac6a..a067df72972fe 100644 --- a/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv +++ b/ports/samd/boards/SEEED_XIAO_SAMD21/pins.csv @@ -1,26 +1,26 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PA02,A0_D0 -PIN_PA04,A1_D1 -PIN_PA10,A2_D2 -PIN_PA11,A3_D3 -PIN_PA08,A4_D4 -PIN_PA09,A5_D5 -PIN_PB08,A6_D6 -PIN_PB09,A7_D7 -PIN_PA07,A8_D8 -PIN_PA05,A9_D9 -PIN_PA06,A10_D10 +A0_D0,PIN_PA02 +A1_D1,PIN_PA04 +A2_D2,PIN_PA10 +A3_D3,PIN_PA11 +A4_D4,PIN_PA08 +A5_D5,PIN_PA09 +A6_D6,PIN_PB08 +A7_D7,PIN_PB09 +A8_D8,PIN_PA07 +A9_D9,PIN_PA05 +A10_D10,PIN_PA06 -PIN_PA17,USER_LED -PIN_PA18,RX_LED -PIN_PA19,TX_LED +USER_LED,PIN_PA17 +RX_LED,PIN_PA18 +TX_LED,PIN_PA19 -PIN_PA24,USB_DM -PIN_PA25,USB_DP +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv b/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv index d807b505a7044..d8a4ee0468a33 100644 --- a/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv +++ b/ports/samd/boards/SPARKFUN_SAMD51_THING_PLUS/pins.csv @@ -1,41 +1,41 @@ -# Pin rows contain Pin number and pin name. -# Pin rows start with PIN_ -# If the pin name is omitted, the pin number is added as name. -# Empty lines and lines not starting with PIN_ are ignored +# The lines contain pairs of Pin name and Pin number. +# Pin names must be valid Python identifiers. +# Pin numbers have the form PIN_Pxnn, with x being A, B, C or D. +# Lines starting with # or empty lines are ignored. -PIN_PA13,D0 -PIN_PA12,D1 -PIN_PA06,D4 -PIN_PA15,D5 -PIN_PA20,D6 -PIN_PA21,D7 -PIN_PA07,D9 -PIN_PA18,D10 -PIN_PA16,D11 -PIN_PA19,D12 -PIN_PA17,D13 -PIN_PA02,A0 -PIN_PB08,A1 -PIN_PB09,A2 -PIN_PA04,A3 -PIN_PA05,A4 -PIN_PB02,A5 -PIN_PA22,SDA -PIN_PA23,SCL -PIN_PB12,MOSI -PIN_PB11,MISO -PIN_PB13,SCK -PIN_PA08,FLASH_MOSI -PIN_PA09,FLASH_SCK -PIN_PA10,FLASH_CS -PIN_PA11,FLASH_MISO +D0,PIN_PA13 +D1,PIN_PA12 +D4,PIN_PA06 +D5,PIN_PA15 +D6,PIN_PA20 +D7,PIN_PA21 +D9,PIN_PA07 +D10,PIN_PA18 +D11,PIN_PA16 +D12,PIN_PA19 +D13,PIN_PA17 +A0,PIN_PA02 +A1,PIN_PB08 +A2,PIN_PB09 +A3,PIN_PA04 +A4,PIN_PA05 +A5,PIN_PB02 +SDA,PIN_PA22 +SCL,PIN_PA23 +MOSI,PIN_PB12 +MISO,PIN_PB11 +SCK,PIN_PB13 +FLASH_MOSI,PIN_PA08 +FLASH_SCK,PIN_PA09 +FLASH_CS,PIN_PA10 +FLASH_MISO,PIN_PA11 -PIN_PB03,RXLED -PIN_PA27,TXLED +RXLED,PIN_PB03 +TXLED,PIN_PA27 -PIN_PA24,USB_DM -PIN_PA25,USB_DP -PIN_PA26,USB_SOF +USB_DM,PIN_PA24 +USB_DP,PIN_PA25 +USB_SOF,PIN_PA26 -PIN_PA30,SWCLK -PIN_PA31,SWDIO +SWCLK,PIN_PA30 +SWDIO,PIN_PA31 diff --git a/ports/samd/boards/make-pin-table.py b/ports/samd/boards/make-pins.py similarity index 57% rename from ports/samd/boards/make-pin-table.py rename to ports/samd/boards/make-pins.py index a187f2a711aaa..676e61e09429b 100644 --- a/ports/samd/boards/make-pin-table.py +++ b/ports/samd/boards/make-pins.py @@ -20,7 +20,7 @@ def __init__(self): self.board_pins = [] # list of pin objects self.pin_names = {} - def parse_csv_file(self, filename): + def parse_af_csv_file(self, filename): with open(filename, "r") as csvfile: rows = csv.reader(csvfile) for row in rows: @@ -28,33 +28,25 @@ def parse_csv_file(self, filename): if len(row) > 0 and row[0].strip().upper()[:2] in ("PA", "PB", "PC", "PD"): self.board_pins.append(row) - def parse_pin_file(self, filename): + def parse_board_csv_file(self, filename): with open(filename, "r") as csvfile: rows = csv.reader(csvfile, skipinitialspace=True) for row in rows: # Pin numbers must start with "PIN_" - # LED numbers must start with "LED_" - if len(row) > 0: - # for compatibility, map LED_ to PIN_ - if row[0].startswith("LED_"): - row[0] = "PIN_" + row[0][4:] - if row[0].startswith("PIN_"): - if len(row) == 1: - self.pin_names[row[0]] = (row[0][4:], "{&machine_pin_type}") - else: - self.pin_names[row[0]] = (row[1], "{&machine_pin_type}") + if len(row) > 1 and row[1].startswith("PIN_"): + self.pin_names[row[1]] = (row[0], "{&machine_pin_type}") - def print_table(self, table_filename, mcu_name): - with open(table_filename, "wt") as table_file: - table_file.write(table_header) + def gen_output_source(self, output_source_filename, mcu_name): + with open(output_source_filename, "wt") as output_source_file: + output_source_file.write(table_header) # Create the Pin objects if mcu_name == "SAMD21": for row in self.board_pins: pin = "PIN_" + row[0].upper() - table_file.write("#ifdef " + pin + "\n") - table_file.write("static const machine_pin_obj_t %s_obj = " % pin) + output_source_file.write("#ifdef " + pin + "\n") + output_source_file.write("static const machine_pin_obj_t %s_obj = " % pin) eic = row[1] if row[1] else "0xff" adc = row[2] if row[2] else "0xff" if pin in self.pin_names: @@ -63,21 +55,21 @@ def print_table(self, table_filename, mcu_name): else: name = "MP_QSTR_" type = "{&machine_pin_type}" - table_file.write("{%s, %s, %s, %s, %s" % (type, pin, name, eic, adc)) + output_source_file.write("{%s, %s, %s, %s, %s" % (type, pin, name, eic, adc)) for cell in row[3:]: if cell: - table_file.write( + output_source_file.write( ", 0x%s" % cell if len(cell) == 2 else ", 0x0%s" % cell ) else: - table_file.write(", 0xff") - table_file.write("};\n") - table_file.write("#endif\n") + output_source_file.write(", 0xff") + output_source_file.write("};\n") + output_source_file.write("#endif\n") else: for row in self.board_pins: pin = "PIN_" + row[0].upper() - table_file.write("#ifdef " + pin + "\n") - table_file.write("const machine_pin_obj_t %s_obj = " % pin) + output_source_file.write("#ifdef " + pin + "\n") + output_source_file.write("const machine_pin_obj_t %s_obj = " % pin) eic = row[1] if row[1] else "0xff" adc0 = row[2] if row[2] else "0xff" adc1 = row[3] if row[3] else "0xff" @@ -87,70 +79,72 @@ def print_table(self, table_filename, mcu_name): else: name = "MP_QSTR_" type = "{&machine_pin_type}" - table_file.write( + output_source_file.write( "{%s, %s, %s, %s, %s, %s" % (type, pin, name, eic, adc0, adc1) ) for cell in row[4:]: if cell: - table_file.write( + output_source_file.write( ", 0x%s" % cell if len(cell) == 2 else ", 0x0%s" % cell ) else: - table_file.write(", 0xff") - table_file.write("};\n") - table_file.write("#endif\n") + output_source_file.write(", 0xff") + output_source_file.write("};\n") + output_source_file.write("#endif\n") # Create the Pin table - table_file.write("\n// The table of references to the pin objects.\n\n") - table_file.write("static const machine_pin_obj_t *pin_af_table[] = {\n") + output_source_file.write("\n// The table of references to the pin objects.\n\n") + output_source_file.write("static const machine_pin_obj_t *pin_af_table[] = {\n") for row in self.board_pins: pin = "PIN_" + row[0].upper() - table_file.write(" #ifdef " + pin + "\n") - table_file.write(" &%s_obj,\n" % pin) - table_file.write(" #endif\n") - table_file.write("};\n") + output_source_file.write(" #ifdef " + pin + "\n") + output_source_file.write(" &%s_obj,\n" % pin) + output_source_file.write(" #endif\n") + output_source_file.write("};\n") # Create the CPU pins dictionary table - table_file.write("\n#if MICROPY_PY_MACHINE_PIN_BOARD_CPU\n") - table_file.write("\n// The cpu pins dictionary\n\n") - table_file.write( + output_source_file.write("\n#if MICROPY_PY_MACHINE_PIN_CPU\n") + output_source_file.write("\n// The cpu pins dictionary\n\n") + output_source_file.write( "STATIC const mp_rom_map_elem_t pin_cpu_pins_locals_dict_table[] = {\n" ) for row in self.board_pins: pin = "PIN_" + row[0].upper() - table_file.write(" #ifdef " + pin + "\n") - table_file.write( + output_source_file.write(" #ifdef " + pin + "\n") + output_source_file.write( " { MP_ROM_QSTR(MP_QSTR_%s), MP_ROM_PTR(&%s_obj) },\n" % (row[0].upper(), pin) ) - table_file.write(" #endif\n") - table_file.write("};\n") - table_file.write( + output_source_file.write(" #endif\n") + output_source_file.write("};\n") + output_source_file.write( "MP_DEFINE_CONST_DICT(machine_pin_cpu_pins_locals_dict, pin_cpu_pins_locals_dict_table);\n" ) + output_source_file.write("#endif\n") # Create the board pins dictionary table - table_file.write("\n// The board pins dictionary\n\n") - table_file.write( + output_source_file.write("\n#if MICROPY_PY_MACHINE_PIN_BOARD\n") + output_source_file.write("\n// The board pins dictionary\n\n") + output_source_file.write( "STATIC const mp_rom_map_elem_t pin_board_pins_locals_dict_table[] = {\n" ) for row in self.board_pins: pin = "PIN_" + row[0].upper() if pin in self.pin_names: - table_file.write(" #ifdef " + pin + "\n") - table_file.write( + output_source_file.write(" #ifdef " + pin + "\n") + output_source_file.write( " { MP_ROM_QSTR(MP_QSTR_%s), MP_ROM_PTR(&%s_obj) },\n" % (self.pin_names[pin][0], pin) ) - table_file.write(" #endif\n") - table_file.write("};\n") - table_file.write( + output_source_file.write(" #endif\n") + output_source_file.write("};\n") + output_source_file.write( "MP_DEFINE_CONST_DICT(machine_pin_board_pins_locals_dict, pin_board_pins_locals_dict_table);\n" ) - table_file.write("#endif\n") + output_source_file.write("#endif\n") def main(): @@ -160,22 +154,22 @@ def main(): description="Generate MCU-specific pin cap table file", ) parser.add_argument( - "-c", - "--csv", - dest="csv_filename", + "-a", + "--af-csv", + dest="af_csv_filename", help="Specifies the pin-af-table.csv filename", ) parser.add_argument( "-b", - "--board", - dest="pin_filename", + "--board-csv", + dest="board_csv_filename", help="Specifies the pins.csv filename", ) parser.add_argument( - "-t", - "--table", - dest="table_filename", - help="Specifies the name of the generated pin cap table file", + "-o", + "--output-source", + dest="output_source_filename", + help="Specifies the name of the generated pin table file", ) parser.add_argument( "-m", @@ -187,14 +181,14 @@ def main(): pins = Pins() - if args.csv_filename: - pins.parse_csv_file(args.csv_filename) + if args.af_csv_filename: + pins.parse_af_csv_file(args.af_csv_filename) - if args.pin_filename: - pins.parse_pin_file(args.pin_filename) + if args.board_csv_filename: + pins.parse_board_csv_file(args.board_csv_filename) - if args.table_filename: - pins.print_table(args.table_filename, args.mcu_name) + if args.output_source_filename: + pins.gen_output_source(args.output_source_filename, args.mcu_name) if __name__ == "__main__": diff --git a/ports/samd/machine_pin.c b/ports/samd/machine_pin.c index f8e1b962804c0..ccf897e06691b 100644 --- a/ports/samd/machine_pin.c +++ b/ports/samd/machine_pin.c @@ -54,7 +54,7 @@ typedef struct _machine_pin_irq_obj_t { uint8_t pin_id; } machine_pin_irq_obj_t; -#if MICROPY_PY_MACHINE_PIN_BOARD_CPU +#if MICROPY_PY_MACHINE_PIN_CPU // Pin mapping dictionaries MP_DEFINE_CONST_OBJ_TYPE( machine_pin_cpu_pins_obj_type, @@ -63,13 +63,15 @@ MP_DEFINE_CONST_OBJ_TYPE( locals_dict, &machine_pin_cpu_pins_locals_dict ); +#endif // MICROPY_PY_MACHINE_PIN_CPU +#if MICROPY_PY_MACHINE_PIN_BOARD MP_DEFINE_CONST_OBJ_TYPE( machine_pin_board_pins_obj_type, MP_QSTR_board, MP_TYPE_FLAG_NONE, locals_dict, &machine_pin_board_pins_locals_dict ); -#endif // MICROPY_PY_MACHINE_PIN_BOARD_CPU +#endif // MICROPY_PY_MACHINE_PIN_BOARD STATIC const mp_irq_methods_t machine_pin_irq_methods; @@ -428,11 +430,13 @@ STATIC const mp_rom_map_elem_t machine_pin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_drive), MP_ROM_PTR(&machine_pin_drive_obj) }, { MP_ROM_QSTR(MP_QSTR_irq), MP_ROM_PTR(&machine_pin_irq_obj) }, - #if MICROPY_PY_MACHINE_PIN_BOARD_CPU + #if MICROPY_PY_MACHINE_PIN_CPU // class attributes - { MP_ROM_QSTR(MP_QSTR_board), MP_ROM_PTR(&machine_pin_board_pins_obj_type) }, { MP_ROM_QSTR(MP_QSTR_cpu), MP_ROM_PTR(&machine_pin_cpu_pins_obj_type) }, - #endif // MICROPY_PY_MACHINE_PIN_BOARD_CPU + #endif // MICROPY_PY_MACHINE_PIN_CPU + #if MICROPY_PY_MACHINE_PIN_BOARD + { MP_ROM_QSTR(MP_QSTR_board), MP_ROM_PTR(&machine_pin_board_pins_obj_type) }, + #endif // MICROPY_PY_MACHINE_PIN_BOARD // class constants { MP_ROM_QSTR(MP_QSTR_IN), MP_ROM_INT(GPIO_MODE_IN) }, diff --git a/ports/samd/mcu/samd21/mpconfigmcu.h b/ports/samd/mcu/samd21/mpconfigmcu.h index f70981acd53c1..3b2040f3157e9 100644 --- a/ports/samd/mcu/samd21/mpconfigmcu.h +++ b/ports/samd/mcu/samd21/mpconfigmcu.h @@ -37,8 +37,11 @@ unsigned long trng_random_u32(int delay); #define MICROPY_PY_OS_URANDOM (1) -#ifndef MICROPY_PY_MACHINE_PIN_BOARD_CPU -#define MICROPY_PY_MACHINE_PIN_BOARD_CPU (1) +#ifndef MICROPY_PY_MACHINE_PIN_CPU +#define MICROPY_PY_MACHINE_PIN_CPU (0) +#endif +#ifndef MICROPY_PY_MACHINE_PIN_BOARD +#define MICROPY_PY_MACHINE_PIN_BOARD (1) #endif #define CPU_FREQ (48000000) diff --git a/ports/samd/mcu/samd51/mpconfigmcu.h b/ports/samd/mcu/samd51/mpconfigmcu.h index 399b48c040d69..0dd11b15033e4 100644 --- a/ports/samd/mcu/samd51/mpconfigmcu.h +++ b/ports/samd/mcu/samd51/mpconfigmcu.h @@ -30,8 +30,11 @@ #define MICROPY_PY_RANDOM_SEED_INIT_FUNC (trng_random_u32()) unsigned long trng_random_u32(void); -#ifndef MICROPY_PY_MACHINE_PIN_BOARD_CPU -#define MICROPY_PY_MACHINE_PIN_BOARD_CPU (1) +#ifndef MICROPY_PY_MACHINE_PIN_CPU +#define MICROPY_PY_MACHINE_PIN_CPU (1) +#endif +#ifndef MICROPY_PY_MACHINE_PIN_BOARD +#define MICROPY_PY_MACHINE_PIN_BOARD (1) #endif // fatfs configuration used in ffconf.h diff --git a/ports/samd/pin_af.c b/ports/samd/pin_af.c index 419b81477601c..e5098c1c23170 100644 --- a/ports/samd/pin_af.c +++ b/ports/samd/pin_af.c @@ -54,7 +54,7 @@ const machine_pin_obj_t *get_pin_obj_ptr(int pin_id) { mp_raise_ValueError(MP_ERROR_TEXT("not a Pin")); } -#if MICROPY_PY_MACHINE_PIN_BOARD_CPU +#if MICROPY_PY_MACHINE_PIN_BOARD || MICROPY_PY_MACHINE_PIN_CPU STATIC const machine_pin_obj_t *pin_find_named_pin(const mp_obj_dict_t *named_pins, mp_obj_t name) { mp_map_t *named_map = mp_obj_dict_get_map((mp_obj_t)named_pins); mp_map_elem_t *named_elem = mp_map_lookup(named_map, name, MP_MAP_LOOKUP); @@ -75,39 +75,21 @@ const machine_pin_obj_t *pin_find(mp_obj_t pin) { return get_pin_obj_ptr(mp_obj_get_int(pin)); } - #if MICROPY_PY_MACHINE_PIN_BOARD_CPU + #if MICROPY_PY_MACHINE_PIN_BOARD const machine_pin_obj_t *self = NULL; // See if the pin name matches a board pin self = pin_find_named_pin(&machine_pin_board_pins_locals_dict, pin); if (self != NULL) { return self; } + #endif + #if MICROPY_PY_MACHINE_PIN_CPU // See if the pin name matches a cpu pin self = pin_find_named_pin(&machine_pin_cpu_pins_locals_dict, pin); if (self != NULL) { return self; } - #else - if (mp_obj_is_str(pin)) { - // Search by name - size_t slen; - const char *s = mp_obj_str_get_data(pin, &slen); - // Check for a string like PA02 or PD12 - if (slen == 4 && s[0] == 'P' && strchr("ABCD", s[1]) != NULL && - strchr("0123456789", s[2]) != NULL && strchr("0123456789", s[2]) != NULL) { - int num = (s[1] - 'A') * 32 + (s[2] - '0') * 10 + (s[3] - '0'); - return get_pin_obj_ptr(num); - } else { - for (int i = 0; i < MP_ARRAY_SIZE(pin_af_table); i++) { - size_t len; - const char *name = (char *)qstr_data(pin_af_table[i]->name, &len); - if (slen == len && strncmp(s, name, slen) == 0) { - return pin_af_table[i]; - } - } - } - } - #endif // MICROPY_PY_MACHINE_PIN_BOARD_CPU + #endif // MICROPY_PY_MACHINE_PIN_CPU mp_raise_ValueError(MP_ERROR_TEXT("not a Pin")); } diff --git a/ports/samd/pin_af.h b/ports/samd/pin_af.h index 3a15ae7f356a9..54e9f653e5193 100644 --- a/ports/samd/pin_af.h +++ b/ports/samd/pin_af.h @@ -92,8 +92,10 @@ typedef struct _pwm_config_t { #define ALT_FCT_SERCOM1 2 #define ALT_FCT_SERCOM2 3 -#if MICROPY_PY_MACHINE_PIN_BOARD_CPU +#if MICROPY_PY_MACHINE_PIN_CPU extern const mp_obj_dict_t machine_pin_cpu_pins_locals_dict; +#endif +#if MICROPY_PY_MACHINE_PIN_BOARD extern const mp_obj_dict_t machine_pin_board_pins_locals_dict; #endif
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: