From 540e873781fa0abbd93921d1409b97df32fb71d6 Mon Sep 17 00:00:00 2001 From: Andrew Teta Date: Sat, 7 Oct 2023 09:40:54 -0600 Subject: [PATCH] samd: Add board definition for Sparkfun SAMD51 MicroMod. Signed-off-by: Andrew Teta --- .../SPARKFUN_SAMD51_MICROMOD/board.json | 19 ++++++ .../SPARKFUN_SAMD51_MICROMOD/mpconfigboard.h | 15 +++++ .../SPARKFUN_SAMD51_MICROMOD/mpconfigboard.mk | 8 +++ .../boards/SPARKFUN_SAMD51_MICROMOD/pins.csv | 60 +++++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/board.json create mode 100644 ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.h create mode 100644 ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.mk create mode 100644 ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/pins.csv diff --git a/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/board.json b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/board.json new file mode 100644 index 0000000000..7cf60f72e0 --- /dev/null +++ b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/board.json @@ -0,0 +1,19 @@ +{ + "deploy": [ + "../deploy.md" + ], + "docs": "", + "features": [ + "External Flash", + "JST-SH", + "USB" + ], + "images": [ + "sparkfun_micromod_samd51.jpg" + ], + "mcu": "samd51", + "product": "Sparkfun SAMD51 MicroMod", + "thumbnail": "", + "url": "https://www.sparkfun.com/products/16791", + "vendor": "Sparkfun" +} diff --git a/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.h b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.h new file mode 100644 index 0000000000..75f647a9b9 --- /dev/null +++ b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.h @@ -0,0 +1,15 @@ +#define MICROPY_HW_BOARD_NAME "Sparkfun SAMD51 MicroMod" +#define MICROPY_HW_MCU_NAME "SAMD51J20A" + +#define MICROPY_HW_XOSC32K (1) + +// There seems to be an inconsistency in the SAMD51 Thing bootloader in that +// the bootloader magic address is at the end of a 192k RAM area, instead of +// 256k. Since the SAMD51x20A has 256k RAM, the loader symbol is at that address +// and so there is a fix here using the previous definition. +#define DBL_TAP_ADDR_ALT ((volatile uint32_t *)(HSRAM_ADDR + HSRAM_SIZE - 0x10000 - 4)) + +// Enabling both two lines below will set the boot file system to +// the board's external flash. +#define MICROPY_HW_SPIFLASH (1) +#define MICROPY_HW_SPIFLASH_ID (0) diff --git a/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.mk b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.mk new file mode 100644 index 0000000000..263e582694 --- /dev/null +++ b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/mpconfigboard.mk @@ -0,0 +1,8 @@ +MCU_SERIES = SAMD51 +CMSIS_MCU = SAMD51J20A +LD_FILES = boards/samd51x20a.ld sections.ld +TEXT0 = 0x4000 + +# The ?='s allow overriding in mpconfigboard.mk. +# MicroPython settings +MICROPY_HW_CODESIZE ?= 1008K diff --git a/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/pins.csv b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/pins.csv new file mode 100644 index 0000000000..5b12607a15 --- /dev/null +++ b/ports/samd/boards/SPARKFUN_SAMD51_MICROMOD/pins.csv @@ -0,0 +1,60 @@ +# 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_DAC +PIN_PA04,MOSI +PIN_PA05,SCK +PIN_PA06,MISO +PIN_PA07,CS + +PIN_PA08,FLASH_SCK +PIN_PA09,FLASH_MOSI +PIN_PA10,FLASH_MISO +PIN_PA11,FLASH_CS +PIN_PA12,SCL1_TX2 +PIN_PA13,SDA1_RX2 +PIN_PA14,D10 +PIN_PA15,D11 + +PIN_PA16,SCL +PIN_PA17,SDA +PIN_PA18,I2C_INT +PIN_PA19,3V3_EN +PIN_PA20,I2S_FS +PIN_PA21,I2S_SDO +PIN_PA22,I2S_SDI +PIN_PA23,D13 + +PIN_PA24,USB_DM +PIN_PA25,USB_DP +PIN_PA27,HOST_ENABLE + +PIN_PB00,A1 +PIN_PB01,A2_PWM0 +PIN_PB02,A3_PWM1 +PIN_PB03,A4 +PIN_PB04,D0 +PIN_PB05,D1 +PIN_PB06,D2_G0 +PIN_PB07,D3_G1 + +PIN_PB08,D4_G2 +PIN_PB09,D5_G3 +PIN_PB10,D6_G4 +PIN_PB11,D7_G5 +PIN_PB12,D8_G6 +PIN_PB13,D9_G7 +PIN_PB14,CAN_TX +PIN_PB15,CAN_RX + +PIN_PB16,I2S_CLK +PIN_PB17,I2S_MCLK +PIN_PB22,WP +PIN_PB23,HOLD +PIN_PB30,RXI +PIN_PB31,TXO + +PIN_PA30,SWCLK +PIN_PA31,SWDIO