From 14a452aa9186c46acbf89de88c9d9f9fb7de1dca Mon Sep 17 00:00:00 2001 From: Andrew Leech Date: Fri, 20 Sep 2024 10:36:43 +1000 Subject: [PATCH] stm32/boards: Add definition for STM32H747I-DISCO. Signed-off-by: Andrew Leech --- drivers/bus/softspi.c | 8 + drivers/bus/spi.h | 2 + drivers/memory/spiflash.c | 6 +- ports/stm32/boards/STM32H747I-DISCO/bdev.c | 44 +++- .../boards/STM32H747I-DISCO/mpconfigboard.h | 174 +++++++------- .../boards/STM32H747I-DISCO/mpconfigboard.mk | 2 +- ports/stm32/boards/STM32H747I-DISCO/pins.csv | 217 ++++++++++++------ .../boards/STM32H747I-DISCO/stm32h747.ld | 4 +- ports/stm32/boards/stm32h747_af.csv | 175 ++++++++++++++ 9 files changed, 476 insertions(+), 156 deletions(-) create mode 100644 ports/stm32/boards/stm32h747_af.csv diff --git a/drivers/bus/softspi.c b/drivers/bus/softspi.c index 7d687a1a2fdf..50025a63e7aa 100644 --- a/drivers/bus/softspi.c +++ b/drivers/bus/softspi.c @@ -35,6 +35,14 @@ int mp_soft_spi_ioctl(void *self_in, uint32_t cmd) { mp_hal_pin_output(self->sck); mp_hal_pin_output(self->mosi); mp_hal_pin_input(self->miso); + if (self->hold) { + mp_hal_pin_write(self->hold, 1); + mp_hal_pin_output(self->hold); + } + if (self->wp) { + mp_hal_pin_write(self->wp, 1); + mp_hal_pin_output(self->wp); + } break; case MP_SPI_IOCTL_DEINIT: diff --git a/drivers/bus/spi.h b/drivers/bus/spi.h index df7f790df80f..b47688a4b0ea 100644 --- a/drivers/bus/spi.h +++ b/drivers/bus/spi.h @@ -46,6 +46,8 @@ typedef struct _mp_soft_spi_obj_t { mp_hal_pin_obj_t sck; mp_hal_pin_obj_t mosi; mp_hal_pin_obj_t miso; + mp_hal_pin_obj_t hold; + mp_hal_pin_obj_t wp; } mp_soft_spi_obj_t; extern const mp_spi_proto_t mp_soft_spi_proto; diff --git a/drivers/memory/spiflash.c b/drivers/memory/spiflash.c index e66153636b1f..d3951266f126 100644 --- a/drivers/memory/spiflash.c +++ b/drivers/memory/spiflash.c @@ -180,16 +180,18 @@ void mp_spiflash_init(mp_spiflash_t *self) { // Ensure SPI flash is out of sleep mode mp_spiflash_deepsleep_internal(self, 0); - #if defined(CHECK_DEVID) // Validate device id uint32_t devid; int ret = mp_spiflash_read_cmd(self, CMD_RD_DEVID, 3, &devid); + #if defined(CHECK_DEVID) if (ret != 0 || devid != CHECK_DEVID) { mp_spiflash_release_bus(self); return; } + #else + printf("DEVID: %d / %lx\n", ret, devid); #endif - + if (self->config->bus_kind == MP_SPIFLASH_BUS_QSPI) { // Set QE bit uint32_t sr = 0, cr = 0; diff --git a/ports/stm32/boards/STM32H747I-DISCO/bdev.c b/ports/stm32/boards/STM32H747I-DISCO/bdev.c index b9dcd81451e5..a5c1aebfec5b 100644 --- a/ports/stm32/boards/STM32H747I-DISCO/bdev.c +++ b/ports/stm32/boards/STM32H747I-DISCO/bdev.c @@ -31,7 +31,7 @@ // Shared cache for first and second SPI block devices static mp_spiflash_cache_t spi_bdev_cache; #endif - +#if 0 // First external SPI flash uses hardware QSPI interface const mp_spiflash_config_t spiflash_config = { .bus_kind = MP_SPIFLASH_BUS_QSPI, @@ -41,5 +41,47 @@ const mp_spiflash_config_t spiflash_config = { .cache = &spi_bdev_cache, #endif }; +#endif +#if 0 +static const mp_soft_qspi_obj_t soft_qspi_bus = { + .cs = pyb_pin_QSPI1_CS, + .clk = pyb_pin_QSPI1_CLK, + .io0 = pyb_pin_QSPI1_D0, + .io1 = pyb_pin_QSPI1_D1, + .io2 = pyb_pin_QSPI1_D2, + .io3 = pyb_pin_QSPI1_D3, +}; + +const mp_spiflash_config_t spiflash_config = { + .bus_kind = MP_SPIFLASH_BUS_QSPI, + .bus.u_qspi.data = (void *)&soft_qspi_bus, + .bus.u_qspi.proto = &mp_soft_qspi_proto, + #if MICROPY_HW_SPIFLASH_ENABLE_CACHE + .cache = &spi_bdev_cache, + #endif +}; +#endif + +#if 1 +static const mp_soft_spi_obj_t soft_spi_bus = { + .delay_half = MICROPY_HW_SOFTSPI_MIN_DELAY, + .polarity = 0, + .phase = 0, + .sck = pyb_pin_QSPI1_CLK, + .mosi = pyb_pin_QSPI1_D0, + .miso = pyb_pin_QSPI1_D1, + .hold = pyb_pin_QSPI1_D2, + .wp = pyb_pin_QSPI1_D3, +}; + + +const mp_spiflash_config_t spiflash_config = { + .bus_kind = MP_SPIFLASH_BUS_SPI, + .bus.u_spi.cs = pyb_pin_QSPI1_CS, + .bus.u_spi.data = (void *)&soft_spi_bus, + .bus.u_spi.proto = &mp_soft_spi_proto, + .cache = &spi_bdev_cache, +}; +#endif spi_bdev_t spi_bdev; diff --git a/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.h b/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.h index 73f0a7639bb5..6ed37cd868e5 100644 --- a/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.h +++ b/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.h @@ -107,8 +107,6 @@ #define MICROPY_HW_RCC_QSPI_CLKSOURCE (RCC_QSPICLKSOURCE_PLL2) // SMPS configuration -// #define MICROPY_HW_PWR_SMPS_CONFIG (PWR_LDO_SUPPLY) -// #define MICROPY_HW_PWR_SMPS_CONFIG (PWR_SMPS_1V8_SUPPLIES_LDO) #define MICROPY_HW_PWR_SMPS_CONFIG (PWR_DIRECT_SMPS_SUPPLY) // Configure the analog switches for dual-pad pins. @@ -125,17 +123,18 @@ // #define MICROPY_HW_RTC_USE_CALOUT (1) #if (MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE == 0) -// QSPI flash #1 for storage -#define MICROPY_HW_QSPI_PRESCALER (2) // 100MHz -#define MICROPY_HW_QSPIFLASH_SIZE_BITS_LOG2 (27) -// Reserve 1MiB at the end for compatibility with alternate firmware that places WiFi blob here. -#define MICROPY_HW_SPIFLASH_SIZE_BITS (120 * 1024 * 1024) +// QSPI flash #1 for storage (mt25ql512ab) +// #define CHECK_DEVID (0xBA20) +#define MICROPY_HW_QSPI_PRESCALER (4) // 50MHz +#define MICROPY_HW_QSPIFLASH_SIZE_BITS_LOG2 (29) // 64MB / 512Mbit +#define MICROPY_HW_SPIFLASH_SIZE_BITS (512 * 1024 * 1024) #define MICROPY_HW_QSPIFLASH_CS (pyb_pin_QSPI1_CS) #define MICROPY_HW_QSPIFLASH_SCK (pyb_pin_QSPI1_CLK) #define MICROPY_HW_QSPIFLASH_IO0 (pyb_pin_QSPI1_D0) #define MICROPY_HW_QSPIFLASH_IO1 (pyb_pin_QSPI1_D1) #define MICROPY_HW_QSPIFLASH_IO2 (pyb_pin_QSPI1_D2) #define MICROPY_HW_QSPIFLASH_IO3 (pyb_pin_QSPI1_D3) +// Technically this is dual-flash chip/load but I'm not sure if that can be used here. Octal? // SPI flash #1, block device config extern const struct _mp_spiflash_config_t spiflash_config; @@ -178,13 +177,13 @@ extern struct _spi_bdev_t spi_bdev; // #define MICROPY_HW_SPI1_MISO (pin_B4) // #define MICROPY_HW_SPI1_MOSI (pin_D7) -// #define MICROPY_HW_SPI2_NSS (pin_I0) -// #define MICROPY_HW_SPI2_SCK (pin_I1) -// #define MICROPY_HW_SPI2_MISO (pin_C2) -// #define MICROPY_HW_SPI2_MOSI (pin_C3) +#define MICROPY_HW_SPI5_NSS (pyb_pin_SPI5_NSS) +#define MICROPY_HW_SPI5_SCK (pyb_pin_SPI5_SCK) +#define MICROPY_HW_SPI5_MISO (pyb_pin_SPI5_MISO) +#define MICROPY_HW_SPI5_MOSI (pyb_pin_SPI5_MOSI) // USRSW is pulled low. Pressing the button makes the input go high. -#define MICROPY_HW_USRSW_PIN (pin_C13) +#define MICROPY_HW_USRSW_PIN (pyb_pin_WAKEUP) #define MICROPY_HW_USRSW_PULL (GPIO_NOPULL) #define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_RISING) #define MICROPY_HW_USRSW_PRESSED (1) @@ -197,14 +196,18 @@ extern struct _spi_bdev_t spi_bdev; #define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_high(pin)) // SD Card SDMMC -// #define MICROPY_HW_SDCARD_SDMMC (2) -// #define MICROPY_HW_SDCARD_CK (pin_D6) -// #define MICROPY_HW_SDCARD_CMD (pin_D7) -// #define MICROPY_HW_SDCARD_D0 (pin_B14) -// #define MICROPY_HW_SDCARD_D1 (pin_B15) -// #define MICROPY_HW_SDCARD_D2 (pin_B3) -// #define MICROPY_HW_SDCARD_D3 (pin_B4) -// #define MICROPY_HW_SDCARD_MOUNT_AT_BOOT (0) +#define MICROPY_HW_SDCARD_SDMMC (1) +#define MICROPY_HW_SDCARD_CK (pyb_pin_SDCARD_CK) +#define MICROPY_HW_SDCARD_CMD (pyb_pin_SDCARD_CMD) +#define MICROPY_HW_SDCARD_D0 (pyb_pin_SDCARD_D0) +#define MICROPY_HW_SDCARD_D1 (pyb_pin_SDCARD_D1) +#define MICROPY_HW_SDCARD_D2 (pyb_pin_SDCARD_D2) +#define MICROPY_HW_SDCARD_D3 (pyb_pin_SDCARD_D3) +#define MICROPY_HW_SDCARD_D4 (pyb_pin_SDCARD_D4) +#define MICROPY_HW_SDCARD_D5 (pyb_pin_SDCARD_D5) +#define MICROPY_HW_SDCARD_D6 (pyb_pin_SDCARD_D6) +#define MICROPY_HW_SDCARD_D7 (pyb_pin_SDCARD_D7) +#define MICROPY_HW_SDCARD_MOUNT_AT_BOOT (0) // FDCAN bus // #define MICROPY_HW_CAN1_NAME "FDCAN1" @@ -213,10 +216,10 @@ extern struct _spi_bdev_t spi_bdev; // USB config #define MICROPY_HW_USB_HS (1) +#define MICROPY_HW_USB_HS_ULPI3320 (1) #define MICROPY_HW_USB_HS_ULPI_NXT (pyb_pin_USB_HS_NXT) #define MICROPY_HW_USB_HS_ULPI_STP (pyb_pin_USB_HS_STP) #define MICROPY_HW_USB_HS_ULPI_DIR (pyb_pin_USB_HS_DIR) -#define MICROPY_HW_USB_HS_ULPI3320 (1) #define MICROPY_HW_USB_CDC_RX_DATA_SIZE (1024) #define MICROPY_HW_USB_CDC_TX_DATA_SIZE (1024) @@ -224,10 +227,12 @@ extern struct _spi_bdev_t spi_bdev; #define GPIO_AF10_OTG_HS (GPIO_AF10_OTG2_HS) -// SDRAM TODO update to: 8M x 32bit SDRAM is connected to SDRAM Bank1 of the STM32H747XIH6 FMC -#define MICROPY_HW_SDRAM_SIZE (256 * 1024 * 1024 / 8) // 256 Mbit +// SDRAM TODO update to: 32MB SDRAM is connected to SDRAM Bank1 of the STM32H747XIH6 FMC +#define MICROPY_HW_SDRAM_SIZE (32 * 8 * 1024 * 1024 / 8) // 256 Mbit #define MICROPY_HW_SDRAM_STARTUP_TEST (1) -#define MICROPY_HW_SDRAM_TEST_FAIL_ON_ERROR (false) +#define MICROPY_HW_SDRAM_TEST_FAIL_ON_ERROR (true) +#define MICROPY_HEAP_START sdram_start() +#define MICROPY_HEAP_END sdram_end() // #define MICROPY_HW_FMC_SWAP_BANKS (1) // Timing configuration for 200MHz/2=100MHz (10ns) @@ -264,68 +269,69 @@ extern struct _spi_bdev_t spi_bdev; #define MICROPY_HW_SDRAM_REFRESH_RATE (64) // ms // SDRAM configuration -#define MICROPY_HW_FMC_SDCKE1 (pin_H7) -#define MICROPY_HW_FMC_SDNE1 (pin_H6) -// #define MICROPY_HW_FMC_SDNBL0 (pin_E0) -// #define MICROPY_HW_FMC_SDNBL1 (pin_E1) -#define MICROPY_HW_FMC_SDCLK (pin_G8) -#define MICROPY_HW_FMC_SDNCAS (pin_G15) -#define MICROPY_HW_FMC_SDNRAS (pin_F11) -#define MICROPY_HW_FMC_SDNWE (pin_H5) -#define MICROPY_HW_FMC_BA0 (pin_G4) -#define MICROPY_HW_FMC_BA1 (pin_G5) -#define MICROPY_HW_FMC_NBL0 (pin_E0) -#define MICROPY_HW_FMC_NBL1 (pin_E1) -#define MICROPY_HW_FMC_A0 (pin_F0) -#define MICROPY_HW_FMC_A1 (pin_F1) -#define MICROPY_HW_FMC_A2 (pin_F2) -#define MICROPY_HW_FMC_A3 (pin_F3) -#define MICROPY_HW_FMC_A4 (pin_F4) -#define MICROPY_HW_FMC_A5 (pin_F5) -#define MICROPY_HW_FMC_A6 (pin_F12) -#define MICROPY_HW_FMC_A7 (pin_F13) -#define MICROPY_HW_FMC_A8 (pin_F14) -#define MICROPY_HW_FMC_A9 (pin_F15) -#define MICROPY_HW_FMC_A10 (pin_G0) -#define MICROPY_HW_FMC_A11 (pin_G1) -#define MICROPY_HW_FMC_A12 (pin_G2) -// #define MICROPY_HW_FMC_A13 (pin_G) -// #define MICROPY_HW_FMC_A14 (pin_G4) -// #define MICROPY_HW_FMC_A15 (pin_G5) -#define MICROPY_HW_FMC_D0 (pin_D14) -#define MICROPY_HW_FMC_D1 (pin_D15) -#define MICROPY_HW_FMC_D2 (pin_D0) -#define MICROPY_HW_FMC_D3 (pin_D1) -#define MICROPY_HW_FMC_D4 (pin_E7) -#define MICROPY_HW_FMC_D5 (pin_E8) -#define MICROPY_HW_FMC_D6 (pin_E9) -#define MICROPY_HW_FMC_D7 (pin_E10) -#define MICROPY_HW_FMC_D8 (pin_E11) -#define MICROPY_HW_FMC_D9 (pin_E12) -#define MICROPY_HW_FMC_D10 (pin_E13) -#define MICROPY_HW_FMC_D11 (pin_E14) -#define MICROPY_HW_FMC_D12 (pin_E15) -#define MICROPY_HW_FMC_D13 (pin_D8) -#define MICROPY_HW_FMC_D14 (pin_D9) -#define MICROPY_HW_FMC_D15 (pin_D10) -#define MICROPY_HW_FMC_D16 (pin_H8) -#define MICROPY_HW_FMC_D17 (pin_H9) -#define MICROPY_HW_FMC_D18 (pin_H10) -#define MICROPY_HW_FMC_D19 (pin_H11) -#define MICROPY_HW_FMC_D20 (pin_H12) -#define MICROPY_HW_FMC_D21 (pin_H13) -#define MICROPY_HW_FMC_D22 (pin_H14) -#define MICROPY_HW_FMC_D23 (pin_H15) -#define MICROPY_HW_FMC_D24 (pin_I0) -#define MICROPY_HW_FMC_D25 (pin_I1) -#define MICROPY_HW_FMC_D26 (pin_I2) -#define MICROPY_HW_FMC_D27 (pin_I3) -#define MICROPY_HW_FMC_D28 (pin_I6) -#define MICROPY_HW_FMC_D29 (pin_I7) -#define MICROPY_HW_FMC_D30 (pin_I9) -#define MICROPY_HW_FMC_D31 (pin_I10) +#define MICROPY_HW_FMC_SDCKE1 (pyb_pin_FMC_SDCKE1) +#define MICROPY_HW_FMC_SDNE1 (pyb_pin_FMC_SDNE1) +#define MICROPY_HW_FMC_SDCLK (pyb_pin_FMC_SDCLK) +#define MICROPY_HW_FMC_SDNCAS (pyb_pin_FMC_SDNCAS) +#define MICROPY_HW_FMC_SDNRAS (pyb_pin_FMC_SDNRAS) +#define MICROPY_HW_FMC_SDNWE (pyb_pin_FMC_SDNWE) +#define MICROPY_HW_FMC_BA0 (pyb_pin_FMC_BA0) +#define MICROPY_HW_FMC_BA1 (pyb_pin_FMC_BA1) +#define MICROPY_HW_FMC_NBL0 (pyb_pin_FMC_NBL0) +#define MICROPY_HW_FMC_NBL1 (pyb_pin_FMC_NBL1) +#define MICROPY_HW_FMC_NBL2 (pyb_pin_FMC_NBL2) +#define MICROPY_HW_FMC_NBL3 (pyb_pin_FMC_NBL3) +#define MICROPY_HW_FMC_A0 (pyb_pin_FMC_A0) +#define MICROPY_HW_FMC_A1 (pyb_pin_FMC_A1) +#define MICROPY_HW_FMC_A2 (pyb_pin_FMC_A2) +#define MICROPY_HW_FMC_A3 (pyb_pin_FMC_A3) +#define MICROPY_HW_FMC_A4 (pyb_pin_FMC_A4) +#define MICROPY_HW_FMC_A5 (pyb_pin_FMC_A5) +#define MICROPY_HW_FMC_A6 (pyb_pin_FMC_A6) +#define MICROPY_HW_FMC_A7 (pyb_pin_FMC_A7) +#define MICROPY_HW_FMC_A8 (pyb_pin_FMC_A8) +#define MICROPY_HW_FMC_A9 (pyb_pin_FMC_A9) +#define MICROPY_HW_FMC_A10 (pyb_pin_FMC_A10) +#define MICROPY_HW_FMC_A11 (pyb_pin_FMC_A11) +#define MICROPY_HW_FMC_A12 (pyb_pin_FMC_A12) +#define MICROPY_HW_FMC_D0 (pyb_pin_FMC_D0) +#define MICROPY_HW_FMC_D1 (pyb_pin_FMC_D1) +#define MICROPY_HW_FMC_D2 (pyb_pin_FMC_D2) +#define MICROPY_HW_FMC_D3 (pyb_pin_FMC_D3) +#define MICROPY_HW_FMC_D4 (pyb_pin_FMC_D4) +#define MICROPY_HW_FMC_D5 (pyb_pin_FMC_D5) +#define MICROPY_HW_FMC_D6 (pyb_pin_FMC_D6) +#define MICROPY_HW_FMC_D7 (pyb_pin_FMC_D7) +#define MICROPY_HW_FMC_D8 (pyb_pin_FMC_D8) +#define MICROPY_HW_FMC_D9 (pyb_pin_FMC_D9) +#define MICROPY_HW_FMC_D10 (pyb_pin_FMC_D10) +#define MICROPY_HW_FMC_D11 (pyb_pin_FMC_D11) +#define MICROPY_HW_FMC_D12 (pyb_pin_FMC_D12) +#define MICROPY_HW_FMC_D13 (pyb_pin_FMC_D13) +#define MICROPY_HW_FMC_D14 (pyb_pin_FMC_D14) +#define MICROPY_HW_FMC_D15 (pyb_pin_FMC_D15) +#define MICROPY_HW_FMC_D16 (pyb_pin_FMC_D16) +#define MICROPY_HW_FMC_D17 (pyb_pin_FMC_D17) +#define MICROPY_HW_FMC_D18 (pyb_pin_FMC_D18) +#define MICROPY_HW_FMC_D19 (pyb_pin_FMC_D19) +#define MICROPY_HW_FMC_D20 (pyb_pin_FMC_D20) +#define MICROPY_HW_FMC_D21 (pyb_pin_FMC_D21) +#define MICROPY_HW_FMC_D22 (pyb_pin_FMC_D22) +#define MICROPY_HW_FMC_D23 (pyb_pin_FMC_D23) +#define MICROPY_HW_FMC_D24 (pyb_pin_FMC_D24) +#define MICROPY_HW_FMC_D25 (pyb_pin_FMC_D25) +#define MICROPY_HW_FMC_D26 (pyb_pin_FMC_D26) +#define MICROPY_HW_FMC_D27 (pyb_pin_FMC_D27) +#define MICROPY_HW_FMC_D28 (pyb_pin_FMC_D28) +#define MICROPY_HW_FMC_D29 (pyb_pin_FMC_D29) +#define MICROPY_HW_FMC_D30 (pyb_pin_FMC_D30) +#define MICROPY_HW_FMC_D31 (pyb_pin_FMC_D31) // Ethernet via RMII +// By default Ethernet is not enabled due to pin conflict +// between ETH_MDC and SAI4_D1 of the MEMs digital microphone. +// See UM2411 Rev 4 Ethernet section in board documentation for more +// information on the hw jumper modification needed to enable it. #define MICROPY_HW_ETH_MDC (pyb_pin_ETH_MDC) #define MICROPY_HW_ETH_MDIO (pyb_pin_ETH_MDIO) #define MICROPY_HW_ETH_RMII_REF_CLK (pyb_pin_ETH_RMII_REF_CLK) diff --git a/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.mk b/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.mk index 1b3fb6941755..09422a3c5728 100644 --- a/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.mk +++ b/ports/stm32/boards/STM32H747I-DISCO/mpconfigboard.mk @@ -7,7 +7,7 @@ USE_MBOOT ?= 0 MCU_SERIES = h7 CMSIS_MCU = STM32H747xx MICROPY_FLOAT_IMPL = double -AF_FILE = boards/stm32h743_af.csv +AF_FILE = boards/stm32h747_af.csv ifeq ($(USE_MBOOT),1) # When using Mboot all the text goes together after the filesystem diff --git a/ports/stm32/boards/STM32H747I-DISCO/pins.csv b/ports/stm32/boards/STM32H747I-DISCO/pins.csv index 580c0883667a..c1b03e1686bc 100644 --- a/ports/stm32/boards/STM32H747I-DISCO/pins.csv +++ b/ports/stm32/boards/STM32H747I-DISCO/pins.csv @@ -1,11 +1,11 @@ PA0,PA0 PA1,PA1 -PA2,-PA2 -PA3,-PA3 +PA2,PA2 +PA3,PA3 PA4,PA4 -PA5,-PA5 -PA6,-PA6 -PA7,-PA7 +PA5,PA5 +PA6,PA6 +PA7,PA7 PA8,PA8 PA9,PA9 PA10,PA10 @@ -14,8 +14,8 @@ PA12,PA12 PA13,PA13 PA14,PA14 PA15,PA15 -PB0,-PB0 -PB1,-PB1 +PB0,PB0 +PB1,PB1 PB2,PB2 PB3,PB3 PB4,PB4 @@ -30,12 +30,12 @@ PB12,PB12 PB13,PB13 PB14,PB14 PB15,PB15 -PC0,-PC0 -PC1,-PC1 +PC0,PC0 +PC1,PC1 PC2,PC2 PC3,PC3 -PC4,-PC4 -PC5,-PC5 +PC4,PC4 +PC5,PC5 PC6,PC6 PC7,PC7 PC8,PC8 @@ -81,18 +81,18 @@ PE15,PE15 PF0,PF0 PF1,PF1 PF2,PF2 -PF3,-PF3 -PF4,-PF4 -PF5,-PF5 -PF6,-PF6 -PF7,-PF7 -PF8,-PF8 -PF9,-PF9 -PF10,-PF10 -PF11,-PF11 +PF3,PF3 +PF4,PF4 +PF5,PF5 +PF6,PF6 +PF7,PF7 +PF8,PF8 +PF9,PF9 +PF10,PF10 +PF11,PF11 PF12,PF12 PF13,PF13 -PF14,-PF14 +PF14,PF14 PF15,PF15 PG0,PG0 PG1,PG1 @@ -102,22 +102,22 @@ PG4,PG4 PG5,PG5 PG6,PG6 PG7,PG7 -PG8,PG8 +-PG8,-PG8 PG9,PG9 PG10,PG10 PG11,PG11 PG12,PG12 PG13,PG13 PG14,PG14 -PG15,PG15 +-PG15,-PG15 PH0,PH0 PH1,PH1 -PH2,-PH2 -PH3,-PH3 -PH4,-PH4 -PH5,-PH5 -PH6,PH6 -PH7,PH7 +PH2,PH2 +PH3,PH3 +PH4,PH4 +PH5,PH5 +-PH6,-PH6 +-PH7,-PH7 PH8,PH8 PH9,PH9 PH10,PH10 @@ -168,54 +168,49 @@ PK6,PK6 PK7,PK7 # Arduino Digital Pins -D0,PH15 -D1,PK1 -D2,PJ11 -D3,PG7 -D4,PC7 -D5,PC6 -D6,PA8 -D7,PI0 -D8,PC3 -D9,PI1 -D10,PC2 -D11,PH8 -D12,PH7 -D13,PA10 -D14,PA9 -D20,PC3 -D21,PA4 +#D0,PH15 +#D1,PK1 +#D2,PJ11 +#D3,PG7 +#D4,PC7 +#D5,PC6 +#D6,PA8 +#D7,PI0 +#D8,PC3 +#D9,PI1 +#D10,PC2 +#D11,PH8 +#D12,PH7 +#D13,PA10 +#D14,PA9 +#D20,PC3 +#D21,PA4 # Arduino Analog Pins -A0,PA0_C -A1,PA1_C -A2,PC2_C -A3,PC3_C -A4,PC2 -A5,PC3 -A6,PA4 -A7,PA6 +#A0,PA0_C +#A1,PA1_C +#A2,PC2_C +#A3,PC3_C +#A4,PC2 +#A5,PC3 +#A6,PA4 +#A7,PA6 UART1_TX,PA9 UART1_RX,PA10 -#UART4_TX,PA0 -#UART4_RX,PI9 -#UART6_TX,PG14 -#UART6_RX,PG9 - UART8_TX,PJ8 UART8_RX,PJ9 -ETH_RMII_REF_CLK,PA1 --ETH_MDIO,-PA2 -ETH_RMII_CRS_DV,-PA7 --ETH_MDC,-PC1 -ETH_RMII_RXD0,-PC4 -ETH_RMII_RXD1,-PC5 -ETH_RMII_TX_EN,PG11 -ETH_RMII_TXD0,PG13 -ETH_RMII_TXD1,PG12 +-ETH_MDIO,-PA2 +-ETH_MDC,-PC1 -USB_HS_CLK,-PA5 -USB_HS_STP,-PC0 @@ -230,18 +225,32 @@ UART8_RX,PJ9 -USB_HS_D6,PB13 -USB_HS_D7,PB5 - -#BOOT0,BOOT0 +-SDCARD_CK,PC12 +-SDCARD_CMD,PD2 +-SDCARD_D0,PC8 +-SDCARD_D1,PC9 +-SDCARD_D2,PC10 +-SDCARD_D3,PC11 +-SDCARD_D4,PB8 +-SDCARD_D5,PB9 +-SDCARD_D6,PC6 +-SDCARD_D7,PC7 # DAC1,PA4 # DAC2,-PA5 + # I2C1_SDA,PB7 # I2C1_SCL,PB6 # I2C3_SDA,PH8 # I2C3_SCL,PH7 --QSPI1_CS,PG6 +SPI5_NSS,PK1 +SPI5_SCK,PK0 +SPI5_MISO,PJ11 +SPI5_MOSI,PJ10 + -QSPI1_CLK,PB2 +-QSPI1_CS,PG6 -QSPI1_D0,PD11 -QSPI1_D1,PF9 -QSPI1_D2,PF7 @@ -253,11 +262,87 @@ UART8_RX,PJ9 -QSPI2_D3,PG14 - LEDR,PI12 LEDG,PI13 LEDB,PI14 LED_RED,PI12 LED_GREEN,PI13 LED_BLUE,PI14 -LED_BUILTIN,PI15 \ No newline at end of file +LED_BUILTIN,PI15 + +WAKEUP,PC13 +JOY_CENT,PK2 +JOY_DOWN,PK3 +JOY_UP,PK6 +JOY_LEFT,PK4 +JOY_RIGHT,PK5 + +-LCD_TOUCH_INIT,PK7 +-LCD_SCLK_MCLK,PE5 +-LCD_LRCLK,PE4 +-LCD_I2S,PE6 +-LCD_I2C4_SDA,PD13 +-LCD_I2C4_SCL,PD12 +-LCD_CEC_CLK,PA8 +-LCD_CEC,PB6 +-LCD_DSI_TE,PJ2 +-LCD_LCD_BL_CTRL,PJ12 +-LCD_DSI_RESET,PG3 + +-FMC_SDCKE1,PH7 +-FMC_SDNE1,PH6 +-FMC_SDCLK,PG8 +-FMC_SDNCAS,PG15 +-FMC_SDNRAS,PF11 +-FMC_SDNWE,PH5 +-FMC_BA0,PG4 +-FMC_BA1,PG5 +-FMC_NBL0,PE0 +-FMC_NBL1,PE1 +-FMC_NBL2,PI4 +-FMC_NBL3,PI5 +-FMC_A0,PF0 +-FMC_A1,PF1 +-FMC_A2,PF2 +-FMC_A3,PF3 +-FMC_A4,PF4 +-FMC_A5,PF5 +-FMC_A6,PF12 +-FMC_A7,PF13 +-FMC_A8,PF14 +-FMC_A9,PF15 +-FMC_A10,PG0 +-FMC_A11,PG1 +-FMC_A12,PG2 +-FMC_D0,PD14 +-FMC_D1,PD15 +-FMC_D2,PD0 +-FMC_D3,PD1 +-FMC_D4,PE7 +-FMC_D5,PE8 +-FMC_D6,PE9 +-FMC_D7,PE10 +-FMC_D8,PE11 +-FMC_D9,PE12 +-FMC_D10,PE13 +-FMC_D11,PE14 +-FMC_D12,PE15 +-FMC_D13,PD8 +-FMC_D14,PD9 +-FMC_D15,PD10 +-FMC_D16,PH8 +-FMC_D17,PH9 +-FMC_D18,PH10 +-FMC_D19,PH11 +-FMC_D20,PH12 +-FMC_D21,PH13 +-FMC_D22,PH14 +-FMC_D23,PH15 +-FMC_D24,PI0 +-FMC_D25,PI1 +-FMC_D26,PI2 +-FMC_D27,PI3 +-FMC_D28,PI6 +-FMC_D29,PI7 +-FMC_D30,PI9 +-FMC_D31,PI10 \ No newline at end of file diff --git a/ports/stm32/boards/STM32H747I-DISCO/stm32h747.ld b/ports/stm32/boards/STM32H747I-DISCO/stm32h747.ld index 99e0caa81388..08980e30e869 100644 --- a/ports/stm32/boards/STM32H747I-DISCO/stm32h747.ld +++ b/ports/stm32/boards/STM32H747I-DISCO/stm32h747.ld @@ -7,10 +7,10 @@ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 2048K /* Total available flash */ FLASH_START (rx) : ORIGIN = 0x08000000, LENGTH = 128K /* bootloader if installed */ - /*FLASH_FS (r) : ORIGIN = 0x08020000, LENGTH = 128K */ /* filesystem */ + FLASH_FS (r) : ORIGIN = 0x08020000, LENGTH = 128K /* filesystem */ FLASH_TEXT (rx) : ORIGIN = 0x08020000, LENGTH = 1408K /* CM7 firmware */ FLASH_CM4 (rx) : ORIGIN = 0x08180000, LENGTH = 512K /* CM4 firmware */ - FLASH_FS (rx) : ORIGIN = 0x90000000, LENGTH = 16384K /* 16MBs external QSPI flash */ + FLASH_EXT (rx) : ORIGIN = 0x90000000, LENGTH = 16384K /* 16MBs external QSPI flash */ ITCM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K DTCM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K diff --git a/ports/stm32/boards/stm32h747_af.csv b/ports/stm32/boards/stm32h747_af.csv new file mode 100644 index 000000000000..82eceba6c1ee --- /dev/null +++ b/ports/stm32/boards/stm32h747_af.csv @@ -0,0 +1,175 @@ +# This was auto-generated by make-af.csv.py +Port ,Pin ,AF0 ,AF1 ,AF2 ,AF3 ,AF4 ,AF5 ,AF6 ,AF7 ,AF8 ,AF9 ,AF10 ,AF11 ,AF12 ,AF13 ,AF14 ,AF15,ADC + , ,DEBUG/RCC/RTC/SYS ,HRTIM/LPTIM1/TIM1/2/16/17,HRTIM/SAI1/TIM3/4/5/12,DFSDM1/HRTIM/LPTIM2/3/4/5/LPUART1/TIM8,CEC/DFSDM1/I2C1/2/3/4/LPTIM2/TIM15/USART1,CEC/I2S1/2/3/SPI1/2/3/4/5/6,DFSDM1/I2C4/I2S3/SAI1/3/SPI3/UART4,I2S2/3/SDMMC1/SPI2/3/6/UART7/USART1/2/3/6,LPUART1/SAI2/4/SDMMC1/SPDIFRX1/SPI6/UART4/5/8,FDCAN1/2/FMC/LTDC/QUADSPI/SAI4/SDMMC2/SPDIFRX1/TIM13/14,CRS/LTDC/QUADSPI/SAI2/4/SDMMC2/TIM8/USB,DFSDM1/ETH/I2C4/MDIOS/SDMMC2/SWPMI1/TIM1/8/UART7,FMC/LTDC/MDIOS/SDMMC1/TIM1/8/USB ,COMP1/2/DCMI/DSIHOST/LTDC/TIM1 ,LTDC/UART5, ,ADC +PortA,PA0 , ,TIM2_CH1/TIM2_ETR ,TIM5_CH1 ,TIM8_ETR ,TIM15_BKIN , , ,USART2_CTS/USART2_NSS ,UART4_TX ,SDMMC2_CMD ,SAI2_SD_B ,ETH_MII_CRS , , , , ,ADC1_INP16 +PortA,PA0_C, , , , , , , , , , , , , , , , ,ADC12_INN1/ADC12_INP0 +PortA,PA1 , ,TIM2_CH2 ,TIM5_CH2 ,LPTIM3_OUT ,TIM15_CH1N , , ,USART2_DE/USART2_RTS ,UART4_RX ,QUADSPI_BK1_IO3 ,SAI2_MCLK_B ,ETH_RMII_REF_CLK/ETH_MII_RX_CLK , , ,LTDC_R2 , ,ADC1_INN16/ADC1_INP17 +PortA,PA1_C, , , , , , , , , , , , , , , , ,ADC12_INP1 +PortA,PA2 , ,TIM2_CH3 ,TIM5_CH3 ,LPTIM4_OUT ,TIM15_CH1 , , ,USART2_TX ,SAI2_SCK_B , , ,ETH_MDIO ,MDIOS_MDIO , ,LTDC_R1 , ,ADC12_INP14 +PortA,PA3 , ,TIM2_CH4 ,TIM5_CH4 ,LPTIM5_OUT ,TIM15_CH2 , , ,USART2_RX , ,LTDC_B2 ,USB_OTG_HS_ULPI_D0 ,ETH_MII_COL , , ,LTDC_B5 , ,ADC12_INP15 +PortA,PA4 , , ,TIM5_ETR , , ,I2S1_WS/SPI1_NSS ,I2S3_WS/SPI3_NSS ,USART2_CK ,SPI6_NSS , , , ,USB_OTG_HS_SOF ,DCMI_HSYNC ,LTDC_VSYNC, ,ADC12_INP18 +PortA,PA5 , ,TIM2_CH1/TIM2_ETR , ,TIM8_CH1N , ,I2S1_CK/SPI1_SCK , , ,SPI6_SCK , ,USB_OTG_HS_ULPI_CK , , , ,LTDC_R4 , ,ADC12_INN18/ADC12_INP19 +PortA,PA6 , ,TIM1_BKIN ,TIM3_CH1 ,TIM8_BKIN , ,I2S1_SDI/SPI1_MISO , , ,SPI6_MISO ,TIM13_CH1 ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,MDIOS_MDC ,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2 ,DCMI_PIXCLK ,LTDC_G2 , ,ADC12_INP3 +PortA,PA7 , ,TIM1_CH1N ,TIM3_CH2 ,TIM8_CH1N , ,I2S1_SDO/SPI1_MOSI , , ,SPI6_MOSI ,TIM14_CH1 , ,ETH_RMII_CRS_DV/ETH_MII_RX_DV ,FMC_SDNWE , , , ,ADC12_INN3/ADC12_INP7 +PortA,PA8 ,RCC_MCO_1 ,TIM1_CH1 ,HRTIM_CHB2 ,TIM8_BKIN2 ,I2C3_SCL , , ,USART1_CK , , ,USB_OTG_FS_SOF ,UART7_RX ,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2,LTDC_B3 ,LTDC_R6 , , +PortA,PA9 , ,TIM1_CH2 ,HRTIM_CHC1 ,LPUART1_TX ,I2C3_SMBA ,I2S2_CK/SPI2_SCK , ,USART1_TX , , , ,ETH_MII_TX_ER , ,DCMI_D0 ,LTDC_R5 , , +PortA,PA10, ,TIM1_CH3 ,HRTIM_CHC2 ,LPUART1_RX , , , ,USART1_RX , , ,USB_OTG_FS_ID ,MDIOS_MDIO ,LTDC_B4 ,DCMI_D1 ,LTDC_B1 , , +PortA,PA11, ,TIM1_CH4 ,HRTIM_CHD1 ,LPUART1_CTS , ,I2S2_WS/SPI2_NSS ,UART4_RX ,USART1_CTS/USART1_NSS , ,FDCAN1_RX ,USB_OTG_FS_DM , , , ,LTDC_R4 , , +PortA,PA12, ,TIM1_ETR ,HRTIM_CHD2 ,LPUART1_DE/LPUART1_RTS , ,I2S2_CK/SPI2_SCK ,UART4_TX ,USART1_DE/USART1_RTS ,SAI2_FS_B ,FDCAN1_TX ,USB_OTG_FS_DP , , , ,LTDC_R5 , , +PortA,PA13,DEBUG_JTMS/SWDIO , , , , , , , , , , , , , , , , +PortA,PA14,DEBUG_JTCK/SWCLK , , , , , , , , , , , , , , , , +PortA,PA15,DEBUG_JTDI ,TIM2_CH1/TIM2_ETR ,HRTIM_FLT1 , ,CEC ,I2S1_WS/SPI1_NSS ,I2S3_WS/SPI3_NSS ,SPI6_NSS ,UART4_DE/UART4_RTS , , ,UART7_TX , ,DSIHOST_TE , , , +PortB,PB0 , ,TIM1_CH2N ,TIM3_CH3 ,TIM8_CH2N , , ,DFSDM1_CKOUT , ,UART4_CTS ,LTDC_R3 ,USB_OTG_HS_ULPI_D1 ,ETH_MII_RXD2 , , ,LTDC_G1 , ,ADC12_INN5/ADC12_INP9 +PortB,PB1 , ,TIM1_CH3N ,TIM3_CH4 ,TIM8_CH3N , , ,DFSDM1_DATIN1 , , ,LTDC_R6 ,USB_OTG_HS_ULPI_D2 ,ETH_MII_RXD3 , , ,LTDC_G0 , ,ADC12_INP5 +PortB,PB2 ,RTC_OUT_ALARM/RTC_OUT_CALIB, ,SAI1_D1 , ,DFSDM1_CKIN1 , ,SAI1_SD_A ,I2S3_SDO/SPI3_MOSI ,SAI4_SD_A ,QUADSPI_CLK ,SAI4_D1 ,ETH_MII_TX_ER , , , , , +PortB,PB3 ,DEBUG_JTDO/SWO ,TIM2_CH2 ,HRTIM_FLT4 , , ,I2S1_CK/SPI1_SCK ,I2S3_CK/SPI3_SCK , ,SPI6_SCK ,SDMMC2_D2 ,CRS_SYNC ,UART7_RX , , , , , +PortB,PB4 ,JTRST ,TIM16_BKIN ,TIM3_CH1 ,HRTIM_EEV6 , ,I2S1_SDI/SPI1_MISO ,I2S3_SDI/SPI3_MISO ,I2S2_WS/SPI2_NSS ,SPI6_MISO ,SDMMC2_D3 , ,UART7_TX , , , , , +PortB,PB5 , ,TIM17_BKIN ,TIM3_CH2 ,HRTIM_EEV7 ,I2C1_SMBA ,I2S1_SDO/SPI1_MOSI ,I2C4_SMBA ,I2S3_SDO/SPI3_MOSI ,SPI6_MOSI ,FDCAN2_RX ,USB_OTG_HS_ULPI_D7 ,ETH_PPS_OUT ,FMC_SDCKE1 ,DCMI_D10 ,UART5_RX , , +PortB,PB6 , ,TIM16_CH1N ,TIM4_CH1 ,HRTIM_EEV8 ,I2C1_SCL ,CEC ,I2C4_SCL ,USART1_TX ,LPUART1_TX ,FDCAN2_TX ,QUADSPI_BK1_NCS ,DFSDM1_DATIN5 ,FMC_SDNE1 ,DCMI_D5 ,UART5_TX , , +PortB,PB7 , ,TIM17_CH1N ,TIM4_CH2 ,HRTIM_EEV9 ,I2C1_SDA , ,I2C4_SDA ,USART1_RX ,LPUART1_RX , , ,DFSDM1_CKIN5 ,FMC_NL ,DCMI_VSYNC , , , +PortB,PB8 , ,TIM16_CH1 ,TIM4_CH3 ,DFSDM1_CKIN7 ,I2C1_SCL , ,I2C4_SCL ,SDMMC1_CKIN ,UART4_RX ,FDCAN1_RX ,SDMMC2_D4 ,ETH_MII_TXD3 ,SDMMC1_D4 ,DCMI_D6 ,LTDC_B6 , , +PortB,PB9 , ,TIM17_CH1 ,TIM4_CH4 ,DFSDM1_DATIN7 ,I2C1_SDA ,I2S2_WS/SPI2_NSS ,I2C4_SDA ,SDMMC1_CDIR ,UART4_TX ,FDCAN1_TX ,SDMMC2_D5 ,I2C4_SMBA ,SDMMC1_D5 ,DCMI_D7 ,LTDC_B7 , , +PortB,PB10, ,TIM2_CH3 ,HRTIM_SCOUT ,LPTIM2_IN1 ,I2C2_SCL ,I2S2_CK/SPI2_SCK ,DFSDM1_DATIN7 ,USART3_TX , ,QUADSPI_BK1_NCS ,USB_OTG_HS_ULPI_D3 ,ETH_MII_RX_ER , , ,LTDC_G4 , , +PortB,PB11, ,TIM2_CH4 ,HRTIM_SCIN ,LPTIM2_ETR ,I2C2_SDA , ,DFSDM1_CKIN7 ,USART3_RX , , ,USB_OTG_HS_ULPI_D4 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DSIHOST_TE ,LTDC_G5 , , +PortB,PB12, ,TIM1_BKIN , , ,I2C2_SMBA ,I2S2_WS/SPI2_NSS ,DFSDM1_DATIN1 ,USART3_CK , ,FDCAN2_RX ,USB_OTG_HS_ULPI_D5 ,ETH_MII_TXD0/ETH_RMII_TXD0 ,USB_OTG_HS_ID ,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2 ,UART5_RX , , +PortB,PB13, ,TIM1_CH1N , ,LPTIM2_OUT , ,I2S2_CK/SPI2_SCK ,DFSDM1_CKIN1 ,USART3_CTS/USART3_NSS , ,FDCAN2_TX ,USB_OTG_HS_ULPI_D6 ,ETH_MII_TXD1/ETH_RMII_TXD1 , , ,UART5_TX , , +PortB,PB14, ,TIM1_CH2N ,TIM12_CH1 ,TIM8_CH2N ,USART1_TX ,I2S2_SDI/SPI2_MISO ,DFSDM1_DATIN2 ,USART3_DE/USART3_RTS ,UART4_DE/UART4_RTS ,SDMMC2_D0 , , ,USB_OTG_HS_DM , , , , +PortB,PB15,RTC_REFIN ,TIM1_CH3N ,TIM12_CH2 ,TIM8_CH3N ,USART1_RX ,I2S2_SDO/SPI2_MOSI ,DFSDM1_CKIN2 , ,UART4_CTS ,SDMMC2_D1 , , ,USB_OTG_HS_DP , , , , +PortC,PC0 , , , ,DFSDM1_CKIN0 , , ,DFSDM1_DATIN4 , ,SAI2_FS_B , ,USB_OTG_HS_ULPI_STP , ,FMC_SDNWE , ,LTDC_R5 , ,ADC123_INP10 +PortC,PC1 ,DEBUG_TRACED0 , ,SAI1_D1 ,DFSDM1_DATIN0 ,DFSDM1_CKIN4 ,I2S2_SDO/SPI2_MOSI ,SAI1_SD_A , ,SAI4_SD_A ,SDMMC2_CK ,SAI4_D1 ,ETH_MDC ,MDIOS_MDC , , , ,ADC123_INN10/ADC123_INP11 +PortC,PC2 , , , ,DFSDM1_CKIN1 , ,I2S2_SDI/SPI2_MISO ,DFSDM1_CKOUT , , , ,USB_OTG_HS_ULPI_DIR ,ETH_MII_TXD2 ,FMC_SDNE0 , , , ,ADC123_INN11/ADC123_INP12 +PortC,PC2_C, , , , , , , , , , , , , , , , ,ADC3_INN1/ADC3_INP0 +PortC,PC3 , , , ,DFSDM1_DATIN1 , ,I2S2_SDO/SPI2_MOSI , , , , ,USB_OTG_HS_ULPI_NXT ,ETH_MII_TX_CLK ,FMC_SDCKE0 , , , ,ADC12_INN12/ADC12_INP13 +PortC,PC3_C, , , , , , , , , , , , , , , , ,ADC3_INP1 +PortC,PC4 , , , ,DFSDM1_CKIN2 , ,I2S1_MCK , , , ,SPDIFRX1_IN2 , ,ETH_MII_RXD0/ETH_RMII_RXD0 ,FMC_SDNE0 , , , ,ADC12_INP4 +PortC,PC5 , , ,SAI1_D3 ,DFSDM1_DATIN2 , , , , , ,SPDIFRX1_IN3 ,SAI4_D3 ,ETH_MII_RXD1/ETH_RMII_RXD1 ,FMC_SDCKE0 ,COMP1_OUT , , ,ADC12_INN4/ADC12_INP8 +PortC,PC6 , ,HRTIM_CHA1 ,TIM3_CH1 ,TIM8_CH1 ,DFSDM1_CKIN3 ,I2S2_MCK , ,USART6_TX ,SDMMC1_D0DIR ,FMC_NWAIT ,SDMMC2_D6 , ,SDMMC1_D6 ,DCMI_D0 ,LTDC_HSYNC, , +PortC,PC7 ,DEBUG_TRGIO ,HRTIM_CHA2 ,TIM3_CH2 ,TIM8_CH2 ,DFSDM1_DATIN3 , ,I2S3_MCK ,USART6_RX ,SDMMC1_D123DIR ,FMC_NE1 ,SDMMC2_D7 ,SWPMI1_TX ,SDMMC1_D7 ,DCMI_D1 ,LTDC_G6 , , +PortC,PC8 ,DEBUG_TRACED1 ,HRTIM_CHB1 ,TIM3_CH3 ,TIM8_CH3 , , , ,USART6_CK ,UART5_DE/UART5_RTS ,FMC_NCE/FMC_NE2 , ,SWPMI1_RX ,SDMMC1_D0 ,DCMI_D2 , , , +PortC,PC9 ,RCC_MCO_2 , ,TIM3_CH4 ,TIM8_CH4 ,I2C3_SDA ,I2S1_CKIN , , ,UART5_CTS ,QUADSPI_BK1_IO0 ,LTDC_G3 ,SWPMI1_SUSPEND ,SDMMC1_D1 ,DCMI_D3 ,LTDC_B2 , , +PortC,PC10, , ,HRTIM_EEV1 ,DFSDM1_CKIN5 , , ,I2S3_CK/SPI3_SCK ,USART3_TX ,UART4_TX ,QUADSPI_BK1_IO1 , , ,SDMMC1_D2 ,DCMI_D8 ,LTDC_R2 , , +PortC,PC11, , ,HRTIM_FLT2 ,DFSDM1_DATIN5 , , ,I2S3_SDI/SPI3_MISO ,USART3_RX ,UART4_RX ,QUADSPI_BK2_NCS , , ,SDMMC1_D3 ,DCMI_D4 , , , +PortC,PC12,DEBUG_TRACED3 , ,HRTIM_EEV2 , , , ,I2S3_SDO/SPI3_MOSI ,USART3_CK ,UART5_TX , , , ,SDMMC1_CK ,DCMI_D9 , , , +PortC,PC13, , , , , , , , , , , , , , , , , +PortC,PC14, , , , , , , , , , , , , , , , , +PortC,PC15, , , , , , , , , , , , , , , , , +PortD,PD0 , , , ,DFSDM1_CKIN6 , , ,SAI3_SCK_A , ,UART4_RX ,FDCAN1_RX , , ,FMC_D2/FMC_DA2 , , , , +PortD,PD1 , , , ,DFSDM1_DATIN6 , , ,SAI3_SD_A , ,UART4_TX ,FDCAN1_TX , , ,FMC_D3/FMC_DA3 , , , , +PortD,PD2 ,DEBUG_TRACED2 , ,TIM3_ETR , , , , , ,UART5_RX , , , ,SDMMC1_CMD ,DCMI_D11 , , , +PortD,PD3 , , , ,DFSDM1_CKOUT , ,I2S2_CK/SPI2_SCK , ,USART2_CTS/USART2_NSS , , , , ,FMC_CLK ,DCMI_D5 ,LTDC_G7 , , +PortD,PD4 , , ,HRTIM_FLT3 , , , ,SAI3_FS_A ,USART2_DE/USART2_RTS , , , , ,FMC_NOE , , , , +PortD,PD5 , , ,HRTIM_EEV3 , , , , ,USART2_TX , , , , ,FMC_NWE , , , , +PortD,PD6 , , ,SAI1_D1 ,DFSDM1_CKIN4 ,DFSDM1_DATIN1 ,I2S3_SDO/SPI3_MOSI ,SAI1_SD_A ,USART2_RX ,SAI4_SD_A , ,SAI4_D1 ,SDMMC2_CK ,FMC_NWAIT ,DCMI_D10 ,LTDC_B2 , , +PortD,PD7 , , , ,DFSDM1_DATIN4 , ,I2S1_SDO/SPI1_MOSI ,DFSDM1_CKIN1 ,USART2_CK , ,SPDIFRX1_IN0 , ,SDMMC2_CMD ,FMC_NE1 , , , , +PortD,PD8 , , , ,DFSDM1_CKIN3 , , ,SAI3_SCK_B ,USART3_TX , ,SPDIFRX1_IN1 , , ,FMC_D13/FMC_DA13 , , , , +PortD,PD9 , , , ,DFSDM1_DATIN3 , , ,SAI3_SD_B ,USART3_RX , , , , ,FMC_D14/FMC_DA14 , , , , +PortD,PD10, , , ,DFSDM1_CKOUT , , ,SAI3_FS_B ,USART3_CK , , , , ,FMC_D15/FMC_DA15 , ,LTDC_B3 , , +PortD,PD11, , , ,LPTIM2_IN2 ,I2C4_SMBA , , ,USART3_CTS/USART3_NSS , ,QUADSPI_BK1_IO0 ,SAI2_SD_A , ,FMC_A16 , , , , +PortD,PD12, ,LPTIM1_IN1 ,TIM4_CH1 ,LPTIM2_IN1 ,I2C4_SCL , , ,USART3_DE/USART3_RTS , ,QUADSPI_BK1_IO1 ,SAI2_FS_A , ,FMC_A17 , , , , +PortD,PD13, ,LPTIM1_OUT ,TIM4_CH2 , ,I2C4_SDA , , , , ,QUADSPI_BK1_IO3 ,SAI2_SCK_A , ,FMC_A18 , , , , +PortD,PD14, , ,TIM4_CH3 , , , ,SAI3_MCLK_B , ,UART8_CTS , , , ,FMC_D0/FMC_DA0 , , , , +PortD,PD15, , ,TIM4_CH4 , , , ,SAI3_MCLK_A , ,UART8_DE/UART8_RTS , , , ,FMC_D1/FMC_DA1 , , , , +PortE,PE0 , ,LPTIM1_ETR ,TIM4_ETR ,HRTIM_SCIN ,LPTIM2_ETR , , , ,UART8_RX , ,SAI2_MCLK_A , ,FMC_NBL0 ,DCMI_D2 , , , +PortE,PE1 , ,LPTIM1_IN2 , ,HRTIM_SCOUT , , , , ,UART8_TX , , , ,FMC_NBL1 ,DCMI_D3 , , , +PortE,PE2 ,DEBUG_TRACECLK , ,SAI1_CK1 , , ,SPI4_SCK ,SAI1_MCLK_A , ,SAI4_MCLK_A ,QUADSPI_BK1_IO2 ,SAI4_CK1 ,ETH_MII_TXD3 ,FMC_A23 , , , , +PortE,PE3 ,DEBUG_TRACED0 , , , ,TIM15_BKIN , ,SAI1_SD_B , ,SAI4_SD_B , , , ,FMC_A19 , , , , +PortE,PE4 ,DEBUG_TRACED1 , ,SAI1_D2 ,DFSDM1_DATIN3 ,TIM15_CH1N ,SPI4_NSS ,SAI1_FS_A , ,SAI4_FS_A , ,SAI4_D2 , ,FMC_A20 ,DCMI_D4 ,LTDC_B0 , , +PortE,PE5 ,DEBUG_TRACED2 , ,SAI1_CK2 ,DFSDM1_CKIN3 ,TIM15_CH1 ,SPI4_MISO ,SAI1_SCK_A , ,SAI4_SCK_A , ,SAI4_CK2 , ,FMC_A21 ,DCMI_D6 ,LTDC_G0 , , +PortE,PE6 ,DEBUG_TRACED3 ,TIM1_BKIN2 ,SAI1_D1 , ,TIM15_CH2 ,SPI4_MOSI ,SAI1_SD_A , ,SAI4_SD_A ,SAI4_D1 ,SAI2_MCLK_B ,TIM1_BKIN2_COMP1/TIM1_BKIN2_COMP2 ,FMC_A22 ,DCMI_D7 ,LTDC_G1 , , +PortE,PE7 , ,TIM1_ETR , ,DFSDM1_DATIN2 , , , ,UART7_RX , , ,QUADSPI_BK2_IO0 , ,FMC_D4/FMC_DA4 , , , , +PortE,PE8 , ,TIM1_CH1N , ,DFSDM1_CKIN2 , , , ,UART7_TX , , ,QUADSPI_BK2_IO1 , ,FMC_D5/FMC_DA5 ,COMP2_OUT , , , +PortE,PE9 , ,TIM1_CH1 , ,DFSDM1_CKOUT , , , ,UART7_DE/UART7_RTS , , ,QUADSPI_BK2_IO2 , ,FMC_D6/FMC_DA6 , , , , +PortE,PE10, ,TIM1_CH2N , ,DFSDM1_DATIN4 , , , ,UART7_CTS , , ,QUADSPI_BK2_IO3 , ,FMC_D7/FMC_DA7 , , , , +PortE,PE11, ,TIM1_CH2 , ,DFSDM1_CKIN4 , ,SPI4_NSS , , , , ,SAI2_SD_B , ,FMC_D8/FMC_DA8 , ,LTDC_G3 , , +PortE,PE12, ,TIM1_CH3N , ,DFSDM1_DATIN5 , ,SPI4_SCK , , , , ,SAI2_SCK_B , ,FMC_D9/FMC_DA9 ,COMP1_OUT ,LTDC_B4 , , +PortE,PE13, ,TIM1_CH3 , ,DFSDM1_CKIN5 , ,SPI4_MISO , , , , ,SAI2_FS_B , ,FMC_D10/FMC_DA10 ,COMP2_OUT ,LTDC_DE , , +PortE,PE14, ,TIM1_CH4 , , , ,SPI4_MOSI , , , , ,SAI2_MCLK_B , ,FMC_D11/FMC_DA11 , ,LTDC_CLK , , +PortE,PE15, ,TIM1_BKIN , , , , , , , , , , ,FMC_D12/FMC_DA12 ,COMP_TIM1_BKIN/TIM1_BKIN_COMP1/TIM1_BKIN_COMP2,LTDC_R7 , , +PortF,PF0 , , , , ,I2C2_SDA , , , , , , , ,FMC_A0 , , , , +PortF,PF1 , , , , ,I2C2_SCL , , , , , , , ,FMC_A1 , , , , +PortF,PF2 , , , , ,I2C2_SMBA , , , , , , , ,FMC_A2 , , , , +PortF,PF3 , , , , , , , , , , , , ,FMC_A3 , , , ,ADC3_INP5 +PortF,PF4 , , , , , , , , , , , , ,FMC_A4 , , , ,ADC3_INN5/ADC3_INP9 +PortF,PF5 , , , , , , , , , , , , ,FMC_A5 , , , ,ADC3_INP4 +PortF,PF6 , ,TIM16_CH1 , , , ,SPI5_NSS ,SAI1_SD_B ,UART7_RX ,SAI4_SD_B ,QUADSPI_BK1_IO3 , , , , , , ,ADC3_INN4/ADC3_INP8 +PortF,PF7 , ,TIM17_CH1 , , , ,SPI5_SCK ,SAI1_MCLK_B ,UART7_TX ,SAI4_MCLK_B ,QUADSPI_BK1_IO2 , , , , , , ,ADC3_INP3 +PortF,PF8 , ,TIM16_CH1N , , , ,SPI5_MISO ,SAI1_SCK_B ,UART7_DE/UART7_RTS ,SAI4_SCK_B ,TIM13_CH1 ,QUADSPI_BK1_IO0 , , , , , ,ADC3_INN3/ADC3_INP7 +PortF,PF9 , ,TIM17_CH1N , , , ,SPI5_MOSI ,SAI1_FS_B ,UART7_CTS ,SAI4_FS_B ,TIM14_CH1 ,QUADSPI_BK1_IO1 , , , , , ,ADC3_INP2 +PortF,PF10, ,TIM16_BKIN ,SAI1_D3 , , , , , , ,QUADSPI_CLK ,SAI4_D3 , , ,DCMI_D11 ,LTDC_DE , ,ADC3_INN2/ADC3_INP6 +PortF,PF11, , , , , ,SPI5_MOSI , , , , ,SAI2_SD_B , ,FMC_SDNRAS ,DCMI_D12 , , ,ADC1_INP2 +PortF,PF12, , , , , , , , , , , , ,FMC_A6 , , , ,ADC1_INN2/ADC1_INP6 +PortF,PF13, , , ,DFSDM1_DATIN6 ,I2C4_SMBA , , , , , , , ,FMC_A7 , , , ,ADC2_INP2 +PortF,PF14, , , ,DFSDM1_CKIN6 ,I2C4_SCL , , , , , , , ,FMC_A8 , , , ,ADC2_INN2/ADC2_INP6 +PortF,PF15, , , , ,I2C4_SDA , , , , , , , ,FMC_A9 , , , , +PortG,PG0 , , , , , , , , , , , , ,FMC_A10 , , , , +PortG,PG1 , , , , , , , , , , , , ,FMC_A11 , , , , +PortG,PG2 , , , ,TIM8_BKIN , , , , , , , ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,FMC_A12 , , , , +PortG,PG3 , , , ,TIM8_BKIN2 , , , , , , , ,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2 ,FMC_A13 , , , , +PortG,PG4 , ,TIM1_BKIN2 , , , , , , , , , ,TIM1_BKIN2_COMP1/TIM1_BKIN2_COMP2 ,FMC_A14/FMC_BA0 , , , , +PortG,PG5 , ,TIM1_ETR , , , , , , , , , , ,FMC_A15/FMC_BA1 , , , , +PortG,PG6 , ,TIM17_BKIN ,HRTIM_CHE1 , , , , , , , ,QUADSPI_BK1_NCS , ,FMC_NE3 ,DCMI_D12 ,LTDC_R7 , , +PortG,PG7 , , ,HRTIM_CHE2 , , , ,SAI1_MCLK_A ,USART6_CK , , , , ,FMC_INT ,DCMI_D13 ,LTDC_CLK , , +PortG,PG8 , , , ,TIM8_ETR , ,SPI6_NSS , ,USART6_DE/USART6_RTS ,SPDIFRX1_IN2 , , ,ETH_PPS_OUT ,FMC_SDCLK , ,LTDC_G7 , , +PortG,PG9 , , , , , ,I2S1_SDI/SPI1_MISO , ,USART6_RX ,SPDIFRX1_IN3 ,QUADSPI_BK2_IO2 ,SAI2_FS_B , ,FMC_NCE/FMC_NE2 ,DCMI_VSYNC , , , +PortG,PG10, , ,HRTIM_FLT5 , , ,I2S1_WS/SPI1_NSS , , , ,LTDC_G3 ,SAI2_SD_B , ,FMC_NE3 ,DCMI_D2 ,LTDC_B2 , , +PortG,PG11, ,LPTIM1_IN2 ,HRTIM_EEV4 , , ,I2S1_CK/SPI1_SCK , , ,SPDIFRX1_IN0 , ,SDMMC2_D2 ,ETH_MII_TX_EN/ETH_RMII_TX_EN , ,DCMI_D3 ,LTDC_B3 , , +PortG,PG12, ,LPTIM1_IN1 ,HRTIM_EEV5 , , ,SPI6_MISO , ,USART6_DE/USART6_RTS ,SPDIFRX1_IN1 ,LTDC_B4 , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_NE4 , ,LTDC_B1 , , +PortG,PG13,DEBUG_TRACED0 ,LPTIM1_OUT ,HRTIM_EEV10 , , ,SPI6_SCK , ,USART6_CTS/USART6_NSS , , , ,ETH_MII_TXD0/ETH_RMII_TXD0 ,FMC_A24 , ,LTDC_R0 , , +PortG,PG14,DEBUG_TRACED1 ,LPTIM1_ETR , , , ,SPI6_MOSI , ,USART6_TX , ,QUADSPI_BK2_IO3 , ,ETH_MII_TXD1/ETH_RMII_TXD1 ,FMC_A25 , ,LTDC_B0 , , +PortG,PG15, , , , , , , ,USART6_CTS/USART6_NSS , , , , ,FMC_SDNCAS ,DCMI_D13 , , , +PortH,PH0 , , , , , , , , , , , , , , , , , +PortH,PH1 , , , , , , , , , , , , , , , , , +PortH,PH2 , ,LPTIM1_IN2 , , , , , , , ,QUADSPI_BK2_IO0 ,SAI2_SCK_B ,ETH_MII_CRS ,FMC_SDCKE0 , ,LTDC_R0 , ,ADC3_INP13 +PortH,PH3 , , , , , , , , , ,QUADSPI_BK2_IO1 ,SAI2_MCLK_B ,ETH_MII_COL ,FMC_SDNE0 , ,LTDC_R1 , ,ADC3_INN13/ADC3_INP14 +PortH,PH4 , , , , ,I2C2_SCL , , , , ,LTDC_G5 ,USB_OTG_HS_ULPI_NXT , , , ,LTDC_G4 , ,ADC3_INN14/ADC3_INP15 +PortH,PH5 , , , , ,I2C2_SDA ,SPI5_NSS , , , , , , ,FMC_SDNWE , , , ,ADC3_INN15/ADC3_INP16 +PortH,PH6 , , ,TIM12_CH1 , ,I2C2_SMBA ,SPI5_SCK , , , , , ,ETH_MII_RXD2 ,FMC_SDNE1 ,DCMI_D8 , , , +PortH,PH7 , , , , ,I2C3_SCL ,SPI5_MISO , , , , , ,ETH_MII_RXD3 ,FMC_SDCKE1 ,DCMI_D9 , , , +PortH,PH8 , , ,TIM5_ETR , ,I2C3_SDA , , , , , , , ,FMC_D16 ,DCMI_HSYNC ,LTDC_R2 , , +PortH,PH9 , , ,TIM12_CH2 , ,I2C3_SMBA , , , , , , , ,FMC_D17 ,DCMI_D0 ,LTDC_R3 , , +PortH,PH10, , ,TIM5_CH1 , ,I2C4_SMBA , , , , , , , ,FMC_D18 ,DCMI_D1 ,LTDC_R4 , , +PortH,PH11, , ,TIM5_CH2 , ,I2C4_SCL , , , , , , , ,FMC_D19 ,DCMI_D2 ,LTDC_R5 , , +PortH,PH12, , ,TIM5_CH3 , ,I2C4_SDA , , , , , , , ,FMC_D20 ,DCMI_D3 ,LTDC_R6 , , +PortH,PH13, , , ,TIM8_CH1N , , , , ,UART4_TX ,FDCAN1_TX , , ,FMC_D21 , ,LTDC_G2 , , +PortH,PH14, , , ,TIM8_CH2N , , , , ,UART4_RX ,FDCAN1_RX , , ,FMC_D22 ,DCMI_D4 ,LTDC_G3 , , +PortH,PH15, , , ,TIM8_CH3N , , , , , , , , ,FMC_D23 ,DCMI_D11 ,LTDC_G4 , , +PortI,PI0 , , ,TIM5_CH4 , , ,I2S2_WS/SPI2_NSS , , , , , , ,FMC_D24 ,DCMI_D13 ,LTDC_G5 , , +PortI,PI1 , , , ,TIM8_BKIN2 , ,I2S2_CK/SPI2_SCK , , , , , ,TIM8_BKIN2_COMP1/TIM8_BKIN2_COMP2 ,FMC_D25 ,DCMI_D8 ,LTDC_G6 , , +PortI,PI2 , , , ,TIM8_CH4 , ,I2S2_SDI/SPI2_MISO , , , , , , ,FMC_D26 ,DCMI_D9 ,LTDC_G7 , , +PortI,PI3 , , , ,TIM8_ETR , ,I2S2_SDO/SPI2_MOSI , , , , , , ,FMC_D27 ,DCMI_D10 , , , +PortI,PI4 , , , ,TIM8_BKIN , , , , , , ,SAI2_MCLK_A ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,FMC_NBL2 ,DCMI_D5 ,LTDC_B4 , , +PortI,PI5 , , , ,TIM8_CH1 , , , , , , ,SAI2_SCK_A , ,FMC_NBL3 ,DCMI_VSYNC ,LTDC_B5 , , +PortI,PI6 , , , ,TIM8_CH2 , , , , , , ,SAI2_SD_A , ,FMC_D28 ,DCMI_D6 ,LTDC_B6 , , +PortI,PI7 , , , ,TIM8_CH3 , , , , , , ,SAI2_FS_A , ,FMC_D29 ,DCMI_D7 ,LTDC_B7 , , +PortI,PI8 , , , , , , , , , , , , , , , , , +PortI,PI9 , , , , , , , , ,UART4_RX ,FDCAN1_RX , , ,FMC_D30 , ,LTDC_VSYNC, , +PortI,PI10, , , , , , , , , , , ,ETH_MII_RX_ER ,FMC_D31 , ,LTDC_HSYNC, , +PortI,PI11, , , , , , , , , ,LTDC_G6 ,USB_OTG_HS_ULPI_DIR , , , , , , +PortI,PI12, , , , , , , , , , , ,ETH_MII_TX_ER , , ,LTDC_HSYNC, , +PortI,PI13, , , , , , , , , , , , , , ,LTDC_VSYNC, , +PortI,PI14, , , , , , , , , , , , , , ,LTDC_CLK , , +PortI,PI15, , , , , , , , , ,LTDC_G2 , , , , ,LTDC_R0 , , +PortJ,PJ0 , , , , , , , , , ,LTDC_R7 , , , , ,LTDC_R1 , , +PortJ,PJ1 , , , , , , , , , , , , , , ,LTDC_R2 , , +PortJ,PJ2 , , , , , , , , , , , , , ,DSIHOST_TE ,LTDC_R3 , , +PortJ,PJ3 , , , , , , , , , , , , , , ,LTDC_R4 , , +PortJ,PJ4 , , , , , , , , , , , , , , ,LTDC_R5 , , +PortJ,PJ5 , , , , , , , , , , , , , , ,LTDC_R6 , , +PortJ,PJ6 , , , ,TIM8_CH2 , , , , , , , , , , ,LTDC_R7 , , +PortJ,PJ7 ,DEBUG_TRGIN , , ,TIM8_CH2N , , , , , , , , , , ,LTDC_G0 , , +PortJ,PJ8 , ,TIM1_CH3N , ,TIM8_CH1 , , , , ,UART8_TX , , , , , ,LTDC_G1 , , +PortJ,PJ9 , ,TIM1_CH3 , ,TIM8_CH1N , , , , ,UART8_RX , , , , , ,LTDC_G2 , , +PortJ,PJ10, ,TIM1_CH2N , ,TIM8_CH2 , ,SPI5_MOSI , , , , , , , , ,LTDC_G3 , , +PortJ,PJ11, ,TIM1_CH2 , ,TIM8_CH2N , ,SPI5_MISO , , , , , , , , ,LTDC_G4 , , +PortJ,PJ12,DEBUG_TRGOUT , , , , , , , , ,LTDC_G3 , , , , ,LTDC_B0 , , +PortJ,PJ13, , , , , , , , , ,LTDC_B4 , , , , ,LTDC_B1 , , +PortJ,PJ14, , , , , , , , , , , , , , ,LTDC_B2 , , +PortJ,PJ15, , , , , , , , , , , , , , ,LTDC_B3 , , +PortK,PK0 , ,TIM1_CH1N , ,TIM8_CH3 , ,SPI5_SCK , , , , , , , , ,LTDC_G5 , , +PortK,PK1 , ,TIM1_CH1 , ,TIM8_CH3N , ,SPI5_NSS , , , , , , , , ,LTDC_G6 , , +PortK,PK2 , ,TIM1_BKIN , ,TIM8_BKIN , , , , , , ,TIM8_BKIN_COMP1/TIM8_BKIN_COMP2 ,TIM1_BKIN_COMP1/TIM1_BKIN_COMP2 , , ,LTDC_G7 , , +PortK,PK3 , , , , , , , , , , , , , , ,LTDC_B4 , , +PortK,PK4 , , , , , , , , , , , , , , ,LTDC_B5 , , +PortK,PK5 , , , , , , , , , , , , , , ,LTDC_B6 , , +PortK,PK6 , , , , , , , , , , , , , , ,LTDC_B7 , , +PortK,PK7 , , , , , , , , , , , , , , ,LTDC_DE , ,