diff --git a/arch/arm/include/stm32h5/chip.h b/arch/arm/include/stm32h5/chip.h index 6e91b7d4e93..a3f2aa69072 100644 --- a/arch/arm/include/stm32h5/chip.h +++ b/arch/arm/include/stm32h5/chip.h @@ -33,38 +33,69 @@ * Pre-processor Prototypes ****************************************************************************/ -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) +#if defined(CONFIG_STM32_STM32H50XXX) +# define STM32_SRAM1_SIZE (16*1024) /* 16Kb SRAM1 on AHB bus Matrix */ +# define STM32_SRAM2_SIZE (16*1024) /* 16Kb SRAM2 on AHB bus Matrix */ +# define STM32_SRAM3_SIZE (0) /* No SRAM3 */ +#elif defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) # define STM32_SRAM1_SIZE (128*1024) /* 128Kb SRAM1 on AHB bus Matrix */ # define STM32_SRAM2_SIZE (80*1024) /* 80Kb SRAM2 on AHB bus Matrix */ # define STM32_SRAM3_SIZE (64*1024) /* 64Kb SRAM3 on AHB bus Matrix */ #elif defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) -# define STM32_SRAM1_SIZE (256*1024) /* 192Kb SRAM1 on AHB bus Matrix */ +# define STM32_SRAM1_SIZE (256*1024) /* 256Kb SRAM1 on AHB bus Matrix */ # define STM32_SRAM2_SIZE (64*1024) /* 64Kb SRAM2 on AHB bus Matrix */ # define STM32_SRAM3_SIZE (320*1024) /* 320Kb SRAM3 on AHB bus Matrix */ #else # error "Unsupported STM32H5 chip" #endif -#define STM32_NFSMC (1) /* Have FSMC memory controller */ -#define STM32_NATIM (2) /* Two advanced timers TIM1 and TIM8 */ -#define STM32_NGTIM32 (2) /* 32-bit general timers TIM2 and 5 with DMA */ -#define STM32_NGTIM16 (2) /* 16-bit general timers TIM3 and 4 with DMA */ -#define STM32_NGTIMNDMA (3) /* 16-bit general timers TIM15-17 without DMA */ -#define STM32_NBTIM (2) /* Two basic timers, TIM6-7 */ -#define STM32_NLPTIM (6) /* Six low-power timers, LPTIM1-LPTIM6. */ #define STM32_NRNG (1) /* Random number generator (RNG) */ +#if defined(CONFIG_STM32_STM32H50XXX) +# define STM32_NFSMC (0) /* No FSMC memory controller */ +# define STM32_NATIM (1) /* One advanced timer TIM1 */ +# define STM32_NGTIM32 (1) /* 32-bit general timer TIM2 with DMA */ +# define STM32_NGTIM16 (1) /* 16-bit general timer TIM3 with DMA */ +# define STM32_NGTIMNDMA (0) /* No 16-bit general timers without DMA */ +# define STM32_NBTIM (2) /* Two basic timers, TIM6-7 */ +# define STM32_NLPTIM (2) /* Two low-power timers, LPTIM1-LPTIM2 */ +#elif defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) +# define STM32_NFSMC (1) /* Have FSMC memory controller */ +# define STM32_NATIM (2) /* Two advanced timers TIM1 and TIM8 */ +# define STM32_NGTIM32 (2) /* 32-bit general timers TIM2 and 5 with DMA */ +# define STM32_NGTIM16 (2) /* 16-bit general timers TIM3 and 4 with DMA */ +# define STM32_NGTIMNDMA (2) /* 16-bit general timers TIM12, 15 without DMA */ +# define STM32_NBTIM (2) /* Two basic timers, TIM6-7 */ +# define STM32_NLPTIM (2) /* Two low-power timers, LPTIM1-LPTIM2 */ +#else +# define STM32_NFSMC (1) /* Have FSMC memory controller */ +# define STM32_NATIM (2) /* Two advanced timers TIM1 and TIM8 */ +# define STM32_NGTIM32 (2) /* 32-bit general timers TIM2 and 5 with DMA */ +# define STM32_NGTIM16 (2) /* 16-bit general timers TIM3 and 4 with DMA */ +# define STM32_NGTIMNDMA (3) /* 16-bit general timers TIM15-17 without DMA */ +# define STM32_NBTIM (2) /* Two basic timers, TIM6-7 */ +# define STM32_NLPTIM (6) /* Six low-power timers, LPTIM1-LPTIM6. */ +#endif + #if defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) # define STM32_NUART (6) /* UART 4-5, 7-8, 9, 12 */ # define STM32_NUSART (5) /* USART 1-3, 6, 10-11 */ #elif defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) # define STM32_NUART (2) /* UART 4-5 */ # define STM32_NUSART (4) /* USART 1-3, 6*/ +#elif defined(CONFIG_STM32_STM32H50XXX) +# define STM32_NUART (0) /* No UARTs */ +# define STM32_NUSART (3) /* USART 1-3 */ #endif #define STM32_NLPUART (1) /* LPUART 1 */ #define STM32_QSPI (0) /* No QuadSPI1 */ -#define STM32_OCTOSPI (1) /* OCTOSPI1*/ + +#if defined(CONFIG_STM32_STM32H50XXX) +# define STM32_OCTOSPI (0) /* No OCTOSPI */ +#else +# define STM32_OCTOSPI (1) /* OCTOSPI1*/ +#endif #if defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) # define STM32_NSPI (6) /* SPI1-SPI6 */ @@ -72,23 +103,40 @@ #elif defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) # define STM32_NSPI (4) /* SPI1-SPI4 */ # define STM32_NI2C (3) /* I2C1-3 */ +#elif defined(CONFIG_STM32_STM32H50XXX) +# define STM32_NSPI (3) /* SPI1-SPI3 */ +# define STM32_NI2C (2) /* I2C1-2 */ #endif #define STM32_NSWPMI (0) /* No SWPMI1 */ #define STM32_NUSBOTGFS (0) /* USB OTG FS */ -#define STM32_NUSBFS (1) /* No USB FS */ -#define STM32_NCAN (2) /* CAN1 */ -#define STM32_NSAI (2) /* SAI1-2 */ +#define STM32_NUSBFS (1) /* USB FS */ + +#if defined(CONFIG_STM32_STM32H50XXX) +# define STM32_NCAN (1) /* FDCAN1 */ +# define STM32_NSAI (0) /* No SAI */ +#else +# define STM32_NCAN (2) /* FDCAN1-2 */ +# define STM32_NSAI (2) /* SAI1-2 */ +#endif #if defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) # define STM32_NSDMMC (2) /* SDMMC interface */ #elif defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) # define STM32_NSDMMC (1) /* SDMMC interface */ +#elif defined(CONFIG_STM32_STM32H50XXX) +# define STM32_NSDMMC (0) /* No SDMMC interface */ #endif #define STM32_NDMA (2) /* DMA1-2 */ -#define STM32_NPORTS (9) /* 9 GPIO ports, GPIOA-GPIOI */ -#define STM32_NADC (2) /* 12-bit ADC1, up to 20 channels */ + +#if defined(CONFIG_STM32_STM32H50XXX) +# define STM32_NPORTS (8) /* 5 GPIO ports, GPIOA-GPIOD, GPIOH */ +# define STM32_NADC (1) /* 12-bit ADC1 */ +#else +# define STM32_NPORTS (9) /* 9 GPIO ports, GPIOA-GPIOI */ +# define STM32_NADC (2) /* 12-bit ADC1, up to 20 channels */ +#endif #define STM32_NDAC (1) /* 12-bit DAC1 */ #define STM32_NCRC (1) /* CRC */ #define STM32_NCOMP (0) /* Comparators */ diff --git a/arch/arm/include/stm32h5/irq.h b/arch/arm/include/stm32h5/irq.h index 68c53b2704e..c5aa9d3f686 100644 --- a/arch/arm/include/stm32h5/irq.h +++ b/arch/arm/include/stm32h5/irq.h @@ -65,8 +65,11 @@ #define STM32_IRQ_FIRST (16) /* Vector number of the first external interrupt */ -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ - defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || \ + defined(CONFIG_STM32_STM32H56XXX) || \ + defined(CONFIG_STM32_STM32H57XXX) # include #else # error "Unsupported STM32 H5 chip" diff --git a/arch/arm/include/stm32h5/stm32h5xx_irq.h b/arch/arm/include/stm32h5/stm32h5xx_irq.h index b6582c3ec07..b1fc1a6c13c 100644 --- a/arch/arm/include/stm32h5/stm32h5xx_irq.h +++ b/arch/arm/include/stm32h5/stm32h5xx_irq.h @@ -194,15 +194,21 @@ # define STM32_IRQ_LPTIM5 (STM32_IRQ_FIRST + 129) /* 129: LPTIM5 global interrupt */ # define STM32_IRQ_LPTIM6 (STM32_IRQ_FIRST + 130) /* 130: LPTIM6 global interrupt */ #endif -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) # define STM32_IRQ_I3C2_EV (STM32_IRQ_FIRST + 131) /* 131: I3C2_EV global interrupt */ # define STM32_IRQ_I3C2_ER (STM32_IRQ_FIRST + 132) /* 132: I3C2_ER global interrupt */ #endif +#if defined(CONFIG_STM32_STM32H50XXX) +# define STM32_IRQ_COMP1 (STM32_IRQ_FIRST + 133) /* 133: COMP1 global interrupt */ +#endif #if defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) # define STM32_IRQ_NEXTINTS 131 #elif defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) # define STM32_IRQ_NEXTINTS 133 +#elif defined(CONFIG_STM32_STM32H50XXX) +# define STM32_IRQ_NEXTINTS 134 #endif #define NR_IRQS (STM32_IRQ_FIRST + STM32_IRQ_NEXTINTS) diff --git a/arch/arm/src/stm32h5/Kconfig b/arch/arm/src/stm32h5/Kconfig index 34ac1d26d19..0000cb2df6d 100644 --- a/arch/arm/src/stm32h5/Kconfig +++ b/arch/arm/src/stm32h5/Kconfig @@ -14,14 +14,12 @@ config STM32_H5_PERIPHERALS select STM32_HAVE_DMA2 select STM32_HAVE_I2C1 select STM32_HAVE_I2C2 - select STM32_HAVE_I2C3 select STM32_HAVE_RNG select STM32_HAVE_SPI1 select STM32_HAVE_SPI2 select STM32_HAVE_SPI3 select STM32_HAVE_SYSCFG select STM32_HAVE_DTS - select STM32_HAVE_QSPI1 select STM32_HAVE_USBFS_MODE select STM32_HAVE_USBDRD_HOST select STM32_HAVE_ADC_H5 @@ -34,6 +32,16 @@ choice default ARCH_CHIP_STM32H563ZI depends on ARCH_CHIP_STM32H5 +config ARCH_CHIP_STM32H503RB + bool "STM32H503RB" + select ARCH_CORTEXM33 + select STM32_STM32H5XXXX + select STM32_STM32H50XXX + select STM32_FLASH_CONFIG_B + select STM32H5_IO_CONFIG_R + ---help--- + STM32 H5 Cortex M33, 128 Kb FLASH, 32 Kb SRAM + config ARCH_CHIP_STM32H533RE bool "STM32H533RE" select ARCH_CORTEXM33 @@ -65,9 +73,27 @@ config STM32_STM32H5XXXX select ARCH_HAVE_FPU select STM32_HAVE_ICACHE +config STM32_STM32H50XXX + bool + default n + select STM32_HAVE_FDCAN1 + select STM32_HAVE_TIM1 + select STM32_HAVE_TIM2 + select STM32_HAVE_TIM3 + select STM32_HAVE_TIM6 + select STM32_HAVE_TIM7 + select STM32_HAVE_LPUART1 + select STM32_HAVE_USART1 + select STM32_HAVE_USART2 + select STM32_HAVE_USART3 + select STM32_HAVE_USBFS + select STM32_HAVE_HSI48 + config STM32_STM32H53XXX bool default n + select STM32_HAVE_I2C3 + select STM32_HAVE_QSPI1 select STM32_HAVE_FDCAN1 select STM32_HAVE_FDCAN2 select STM32_HAVE_TIM1 @@ -95,6 +121,8 @@ config STM32_STM32H53XXX config STM32_STM32H56XXX bool default n + select STM32_HAVE_I2C3 + select STM32_HAVE_QSPI1 select STM32_HAVE_CORDIC select STM32_HAVE_FDCAN1 select STM32_HAVE_FDCAN2 diff --git a/arch/arm/src/stm32h5/hardware/stm32_flash.h b/arch/arm/src/stm32h5/hardware/stm32_flash.h index ae4432e16aa..ff91e8f84c7 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_flash.h +++ b/arch/arm/src/stm32h5/hardware/stm32_flash.h @@ -30,7 +30,8 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H53XXX) || defined(CONFIG_STM32_STM32H56XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || defined(CONFIG_STM32_STM32H56XXX) # include "hardware/stm32h5xxx_flash.h" #else # error "Unsupported STM32 H5 flash" diff --git a/arch/arm/src/stm32h5/hardware/stm32_gpdma.h b/arch/arm/src/stm32h5/hardware/stm32_gpdma.h index 4f5ec1fe16f..52ce92f6f81 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_gpdma.h +++ b/arch/arm/src/stm32h5/hardware/stm32_gpdma.h @@ -30,7 +30,7 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H53XXX) || \ +#if defined(CONFIG_STM32_STM32H50XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) # include "stm32h56x_dmasigmap.h" #else diff --git a/arch/arm/src/stm32h5/hardware/stm32_gpio.h b/arch/arm/src/stm32h5/hardware/stm32_gpio.h index 8ff9b98ab84..a024da347a0 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_gpio.h +++ b/arch/arm/src/stm32h5/hardware/stm32_gpio.h @@ -30,8 +30,11 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ - defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || \ + defined(CONFIG_STM32_STM32H56XXX) || \ + defined(CONFIG_STM32_STM32H57XXX) # include "hardware/stm32h5xxx_gpio.h" #else # error "Unsupported STM32 H5 PWR" diff --git a/arch/arm/src/stm32h5/hardware/stm32_i2c.h b/arch/arm/src/stm32h5/hardware/stm32_i2c.h index d564ba5f1ec..d0481396153 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_i2c.h +++ b/arch/arm/src/stm32h5/hardware/stm32_i2c.h @@ -30,8 +30,11 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ - defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || \ + defined(CONFIG_STM32_STM32H56XXX) || \ + defined(CONFIG_STM32_STM32H57XXX) # include "hardware/stm32h5xxx_i2c.h" #else # error "Unsupported STM32 H5 I2C" diff --git a/arch/arm/src/stm32h5/hardware/stm32_memorymap.h b/arch/arm/src/stm32h5/hardware/stm32_memorymap.h index ff9b80be0fe..94373867444 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_memorymap.h +++ b/arch/arm/src/stm32h5/hardware/stm32_memorymap.h @@ -30,8 +30,11 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ - defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || \ + defined(CONFIG_STM32_STM32H56XXX) || \ + defined(CONFIG_STM32_STM32H57XXX) # include "hardware/stm32h5xxx_memorymap.h" #else # error "Unsupported STM32 H5 memory map" diff --git a/arch/arm/src/stm32h5/hardware/stm32_pinmap.h b/arch/arm/src/stm32h5/hardware/stm32_pinmap.h index 852c7c540c5..085b0a63982 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_pinmap.h +++ b/arch/arm/src/stm32h5/hardware/stm32_pinmap.h @@ -30,7 +30,9 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H53XXX) || defined(CONFIG_STM32_STM32H56XXX) +#if defined(CONFIG_STM32_STM32H50XXX) +# include "hardware/stm32h50xxx_pinmap.h" +#elif defined(CONFIG_STM32_STM32H53XXX) || defined(CONFIG_STM32_STM32H56XXX) # include "hardware/stm32h56xxx_pinmap.h" #else # error "Unsupported STM32 H5 pin map" diff --git a/arch/arm/src/stm32h5/hardware/stm32_pwr.h b/arch/arm/src/stm32h5/hardware/stm32_pwr.h index 24cddd0b400..1c694aac043 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_pwr.h +++ b/arch/arm/src/stm32h5/hardware/stm32_pwr.h @@ -30,8 +30,11 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ - defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || \ + defined(CONFIG_STM32_STM32H56XXX) || \ + defined(CONFIG_STM32_STM32H57XXX) # include "hardware/stm32h5xxx_pwr.h" #else # error "Unsupported STM32 H5 PWR" diff --git a/arch/arm/src/stm32h5/hardware/stm32_rcc.h b/arch/arm/src/stm32h5/hardware/stm32_rcc.h index ecfa04f7d52..45b93e6d384 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_rcc.h +++ b/arch/arm/src/stm32h5/hardware/stm32_rcc.h @@ -30,8 +30,11 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ - defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || \ + defined(CONFIG_STM32_STM32H56XXX) || \ + defined(CONFIG_STM32_STM32H57XXX) # include "hardware/stm32h5xxx_rcc.h" #else # error "Unsupported STM32 H5 rcc" diff --git a/arch/arm/src/stm32h5/hardware/stm32_sbs.h b/arch/arm/src/stm32h5/hardware/stm32_sbs.h index 06c8a9fb6cf..32b7b2942b3 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_sbs.h +++ b/arch/arm/src/stm32h5/hardware/stm32_sbs.h @@ -30,7 +30,8 @@ #include #include "chip.h" -#if !defined(CONFIG_STM32_STM32H52XXX) && \ +#if !defined(CONFIG_STM32_STM32H50XXX) && \ + !defined(CONFIG_STM32_STM32H52XXX) && \ !defined(CONFIG_STM32_STM32H53XXX) && \ !defined(CONFIG_STM32_STM32H56XXX) && \ !defined(CONFIG_STM32_STM32H57XXX) diff --git a/arch/arm/src/stm32h5/hardware/stm32_uart.h b/arch/arm/src/stm32h5/hardware/stm32_uart.h index 1b974188d5d..80e42a844a9 100644 --- a/arch/arm/src/stm32h5/hardware/stm32_uart.h +++ b/arch/arm/src/stm32h5/hardware/stm32_uart.h @@ -30,8 +30,11 @@ #include #include "chip.h" -#if defined(CONFIG_STM32_STM32H52XXX) || defined(CONFIG_STM32_STM32H53XXX) || \ - defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX) +#if defined(CONFIG_STM32_STM32H50XXX) || \ + defined(CONFIG_STM32_STM32H52XXX) || \ + defined(CONFIG_STM32_STM32H53XXX) || \ + defined(CONFIG_STM32_STM32H56XXX) || \ + defined(CONFIG_STM32_STM32H57XXX) # include "hardware/stm32h5xxx_uart.h" #else # error "Unsupported STM32 H5 uart" diff --git a/arch/arm/src/stm32h5/hardware/stm32h50xxx_pinmap.h b/arch/arm/src/stm32h5/hardware/stm32h50xxx_pinmap.h new file mode 100644 index 00000000000..bc8d3ecbca2 --- /dev/null +++ b/arch/arm/src/stm32h5/hardware/stm32h50xxx_pinmap.h @@ -0,0 +1,370 @@ +/**************************************************************************** + * arch/arm/src/stm32h5/hardware/stm32h50xxx_pinmap.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_ARM_SRC_STM32H5_HARDWARE_STM32H50XXX_PINMAP_H +#define __ARCH_ARM_SRC_STM32H5_HARDWARE_STM32H50XXX_PINMAP_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#if defined(CONFIG_STM32_STM32H50XXX) +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Alternate Pin Functions for the STM32H503 family. See DS14127, Table 12 + * "Alternate Function AF0 to AF7" and Table 13 "Alternate Function AF8 to + * AF15". + * + * Alternative pin selections are provided with a numeric suffix like _1, _2, + * etc. Drivers, however, will use the pin selection without the numeric + * suffix. Additional definitions are required in the board.h file. For + * example, if FDCAN1_RX connects via PA11 on some board, then the following + * definitions should appear in the board.h header file for that board: + * + * #define GPIO_FDCAN1_RX GPIO_FDCAN1_RX_2 + * + * The driver will then automatically configure PA11 as the FDCAN1 RX pin. + */ + +/* FDCAN */ + +#define GPIO_FDCAN1_RX_1 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN8) +#define GPIO_FDCAN1_RX_2 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN11) +#define GPIO_FDCAN1_RX_3 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN3) +#define GPIO_FDCAN1_RX_4 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN5) +#define GPIO_FDCAN1_RX_5 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN8) +#define GPIO_FDCAN1_RX_6 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN12) +#define GPIO_FDCAN1_RX_7 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN6) +#define GPIO_FDCAN1_RX_8 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN8) +#define GPIO_FDCAN1_RX_9 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN10) +#define GPIO_FDCAN1_TX_1 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN12) +#define GPIO_FDCAN1_TX_2 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN4) +#define GPIO_FDCAN1_TX_3 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN6) +#define GPIO_FDCAN1_TX_4 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN7) +#define GPIO_FDCAN1_TX_5 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN10) +#define GPIO_FDCAN1_TX_6 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN13) +#define GPIO_FDCAN1_TX_7 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN15) +#define GPIO_FDCAN1_TX_8 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN7) +#define GPIO_FDCAN1_TX_9 (GPIO_ALT|GPIO_AF9|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN9) + +/* I2C */ + +#define GPIO_I2C1_SCL_1 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN6) +#define GPIO_I2C1_SCL_2 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN8) +#define GPIO_I2C1_SCL_3 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTC|GPIO_PIN8) +#define GPIO_I2C1_SDA_1 (GPIO_ALT|GPIO_AF11|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN5) +#define GPIO_I2C1_SDA_2 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN7) +#define GPIO_I2C1_SDA_3 (GPIO_ALT|GPIO_AF11|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN10) +#define GPIO_I2C1_SDA_4 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTC|GPIO_PIN9) + +#define GPIO_I2C2_SCL_1 (GPIO_ALT|GPIO_AF8|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN3) +#define GPIO_I2C2_SCL_2 (GPIO_ALT|GPIO_AF8|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN5) +#define GPIO_I2C2_SCL_3 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN10) +#define GPIO_I2C2_SCL_4 (GPIO_ALT|GPIO_AF8|GPIO_OPENDRAIN|GPIO_PORTC|GPIO_PIN6) +#define GPIO_I2C2_SDA_1 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN3) +#define GPIO_I2C2_SDA_2 (GPIO_ALT|GPIO_AF8|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN4) +#define GPIO_I2C2_SDA_3 (GPIO_ALT|GPIO_AF8|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN8) +#define GPIO_I2C2_SDA_4 (GPIO_ALT|GPIO_AF4|GPIO_OPENDRAIN|GPIO_PORTB|GPIO_PIN13) +#define GPIO_I2C2_SDA_5 (GPIO_ALT|GPIO_AF8|GPIO_OPENDRAIN|GPIO_PORTC|GPIO_PIN7) +#define GPIO_I2C2_SDA_6 (GPIO_ALT|GPIO_AF8|GPIO_OPENDRAIN|GPIO_PORTC|GPIO_PIN11) + +/* SPI */ + +#define GPIO_SPI1_SCK_1 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN2) +#define GPIO_SPI1_SCK_2 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN5) +#define GPIO_SPI1_SCK_3 (GPIO_ALT|GPIO_AF12|GPIO_PORTA|GPIO_PIN8) +#define GPIO_SPI1_SCK_4 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN3) +#define GPIO_SPI1_SCK_5 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN0) +#define GPIO_SPI1_SCK_6 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN5) +#define GPIO_SPI1_MISO_1 (GPIO_ALT|GPIO_AF12|GPIO_PORTA|GPIO_PIN0) +#define GPIO_SPI1_MISO_2 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN3) +#define GPIO_SPI1_MISO_3 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN6) +#define GPIO_SPI1_MISO_4 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN9) +#define GPIO_SPI1_MISO_5 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN4) +#define GPIO_SPI1_MISO_6 (GPIO_ALT|GPIO_AF4|GPIO_PORTC|GPIO_PIN2) +#define GPIO_SPI1_MISO_7 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN10) +#define GPIO_SPI1_MOSI_1 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN4) +#define GPIO_SPI1_MOSI_2 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN7) +#define GPIO_SPI1_MOSI_3 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN5) +#define GPIO_SPI1_MOSI_4 (GPIO_ALT|GPIO_AF4|GPIO_PORTC|GPIO_PIN3) +#define GPIO_SPI1_MOSI_5 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN7) +#define GPIO_SPI1_NSS_1 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN1) +#define GPIO_SPI1_NSS_2 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN4) +#define GPIO_SPI1_NSS_3 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN15) +#define GPIO_SPI1_NSS_4 (GPIO_ALT|GPIO_AF12|GPIO_PORTB|GPIO_PIN8) +#define GPIO_SPI1_NSS_5 (GPIO_ALT|GPIO_AF4|GPIO_PORTC|GPIO_PIN1) +#define GPIO_SPI1_NSS_6 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN8) + +#define GPIO_SPI2_SCK_1 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN5) +#define GPIO_SPI2_SCK_2 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN9) +#define GPIO_SPI2_SCK_3 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN12) +#define GPIO_SPI2_SCK_4 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN2) +#define GPIO_SPI2_SCK_5 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN10) +#define GPIO_SPI2_SCK_6 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN13) +#define GPIO_SPI2_MISO_1 (GPIO_ALT|GPIO_AF11|GPIO_PORTA|GPIO_PIN7) +#define GPIO_SPI2_MISO_2 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN15) +#define GPIO_SPI2_MISO_3 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN5) +#define GPIO_SPI2_MISO_4 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN14) +#define GPIO_SPI2_MISO_5 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN2) +#define GPIO_SPI2_MOSI_1 (GPIO_ALT|GPIO_AF6|GPIO_PORTA|GPIO_PIN8) +#define GPIO_SPI2_MOSI_2 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN1) +#define GPIO_SPI2_MOSI_3 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN15) +#define GPIO_SPI2_MOSI_4 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN1) +#define GPIO_SPI2_MOSI_5 (GPIO_ALT|GPIO_AF5|GPIO_PORTC|GPIO_PIN3) +#define GPIO_SPI2_NSS_1 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN3) +#define GPIO_SPI2_NSS_2 (GPIO_ALT|GPIO_AF11|GPIO_PORTA|GPIO_PIN8) +#define GPIO_SPI2_NSS_3 (GPIO_ALT|GPIO_AF5|GPIO_PORTA|GPIO_PIN11) +#define GPIO_SPI2_NSS_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN4) +#define GPIO_SPI2_NSS_5 (GPIO_ALT|GPIO_AF5|GPIO_PORTB|GPIO_PIN12) + +#define GPIO_SPI3_SCK_1 (GPIO_ALT|GPIO_AF6|GPIO_PORTA|GPIO_PIN1) +#define GPIO_SPI3_SCK_2 (GPIO_ALT|GPIO_AF10|GPIO_PORTA|GPIO_PIN15) +#define GPIO_SPI3_SCK_3 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN3) +#define GPIO_SPI3_SCK_4 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN7) +#define GPIO_SPI3_SCK_5 (GPIO_ALT|GPIO_AF6|GPIO_PORTC|GPIO_PIN10) +#define GPIO_SPI3_MISO_1 (GPIO_ALT|GPIO_AF6|GPIO_PORTA|GPIO_PIN2) +#define GPIO_SPI3_MISO_2 (GPIO_ALT|GPIO_AF10|GPIO_PORTA|GPIO_PIN4) +#define GPIO_SPI3_MISO_3 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN4) +#define GPIO_SPI3_MISO_4 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN15) +#define GPIO_SPI3_MISO_5 (GPIO_ALT|GPIO_AF6|GPIO_PORTC|GPIO_PIN11) +#define GPIO_SPI3_MOSI_1 (GPIO_ALT|GPIO_AF6|GPIO_PORTA|GPIO_PIN3) +#define GPIO_SPI3_MOSI_2 (GPIO_ALT|GPIO_AF10|GPIO_PORTA|GPIO_PIN5) +#define GPIO_SPI3_MOSI_3 (GPIO_ALT|GPIO_AF10|GPIO_PORTA|GPIO_PIN9) +#define GPIO_SPI3_MOSI_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN2) +#define GPIO_SPI3_MOSI_5 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN5) +#define GPIO_SPI3_MOSI_6 (GPIO_ALT|GPIO_AF6|GPIO_PORTC|GPIO_PIN12) +#define GPIO_SPI3_NSS_1 (GPIO_ALT|GPIO_AF10|GPIO_PORTA|GPIO_PIN0) +#define GPIO_SPI3_NSS_2 (GPIO_ALT|GPIO_AF6|GPIO_PORTA|GPIO_PIN4) +#define GPIO_SPI3_NSS_3 (GPIO_ALT|GPIO_AF6|GPIO_PORTA|GPIO_PIN15) +#define GPIO_SPI3_NSS_4 (GPIO_ALT|GPIO_AF6|GPIO_PORTB|GPIO_PIN10) +#define GPIO_SPI3_NSS_5 (GPIO_ALT|GPIO_AF6|GPIO_PORTD|GPIO_PIN2) + +/* Timers */ + +#define GPIO_TIM1_CH1OUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN8) /* PA8 */ +#define GPIO_TIM1_CH1OUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN13) /* PA13 */ +#define GPIO_TIM1_CH1OUT_3 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN7) /* PB7 */ +#define GPIO_TIM1_CH1OUT_4 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN6) /* PC6 */ + +#define GPIO_TIM1_CH1NOUT_1 (GPIO_ALT|GPIO_AF14|GPIO_PORTA|GPIO_PIN3) /* PA3 */ +#define GPIO_TIM1_CH1NOUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PORTA|GPIO_PIN7) /* PA7 */ +#define GPIO_TIM1_CH1NOUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN13) /* PB13 */ + +#define GPIO_TIM1_CH2OUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN9) /* PA9 */ +#define GPIO_TIM1_CH2OUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN14) /* PA14 */ +#define GPIO_TIM1_CH2OUT_3 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN4) /* PB4 */ +#define GPIO_TIM1_CH2OUT_4 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN6) /* PB6 */ + +#define GPIO_TIM1_CH2NOUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PORTA|GPIO_PIN4) /* PA4 */ +#define GPIO_TIM1_CH2NOUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN0) /* PB0 */ +#define GPIO_TIM1_CH2NOUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN2) /* PB2 */ +#define GPIO_TIM1_CH2NOUT_4 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN7) /* PB7 */ +#define GPIO_TIM1_CH2NOUT_5 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN14) /* PB14 */ + +#define GPIO_TIM1_CH3OUT_1 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN1) /* PA1 */ +#define GPIO_TIM1_CH3OUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN10) /* PA10 */ +#define GPIO_TIM1_CH3OUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN5) /* PB5 */ +#define GPIO_TIM1_CH3OUT_4 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN8) /* PC8 */ + +#define GPIO_TIM1_CH3NOUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN1) /* PB1 */ +#define GPIO_TIM1_CH3NOUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN6) /* PB6 */ +#define GPIO_TIM1_CH3NOUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN15) /* PB15 */ + +#define GPIO_TIM1_CH4OUT_1 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN2) /* PA2 */ +#define GPIO_TIM1_CH4OUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN11) /* PA11 */ +#define GPIO_TIM1_CH4OUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN9) /* PC9 */ +#define GPIO_TIM1_CH4OUT_4 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN12) /* PC12 */ + +#define GPIO_TIM1_CH4NOUT_1 (GPIO_ALT|GPIO_AF14|GPIO_PORTA|GPIO_PIN8) /* PA8 */ +#define GPIO_TIM1_CH4NOUT_2 (GPIO_ALT|GPIO_AF14|GPIO_PORTA|GPIO_PIN14) /* PA14 */ +#define GPIO_TIM1_CH4NOUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PORTB|GPIO_PIN4) /* PB4 */ +#define GPIO_TIM1_CH4NOUT_4 (GPIO_ALT|GPIO_AF1|GPIO_PORTC|GPIO_PIN5) /* PC5 */ + +#define GPIO_TIM2_CH1OUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN0) /* PA0 */ +#define GPIO_TIM2_CH1OUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN5) /* PA5 */ +#define GPIO_TIM2_CH1OUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN15) /* PA15 */ +#define GPIO_TIM2_CH1OUT_4 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN2) /* PB2 */ + +#define GPIO_TIM2_CH2OUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN1) /* PA1 */ +#define GPIO_TIM2_CH2OUT_2 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN3) /* PB3 */ +#define GPIO_TIM2_CH2OUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN11) /* PC11 */ + +#define GPIO_TIM2_CH3OUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN2) /* PA2 */ +#define GPIO_TIM2_CH3OUT_2 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN7) /* PA7 */ +#define GPIO_TIM2_CH3OUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN10) /* PB10 */ +#define GPIO_TIM2_CH3OUT_4 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTD|GPIO_PIN2) /* PD2 */ + +#define GPIO_TIM2_CH4OUT_1 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN3) /* PA3 */ +#define GPIO_TIM2_CH4OUT_2 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN12) /* PA12 */ +#define GPIO_TIM2_CH4OUT_3 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN4) /* PC4 */ +#define GPIO_TIM2_CH4OUT_4 (GPIO_ALT|GPIO_AF1|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN12) /* PC12 */ + +#define GPIO_TIM3_CH1OUT_1 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN0) /* PA0 */ +#define GPIO_TIM3_CH1OUT_2 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN6) /* PA6 */ +#define GPIO_TIM3_CH1OUT_3 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN14) /* PA14 */ +#define GPIO_TIM3_CH1OUT_4 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN4) /* PB4 */ +#define GPIO_TIM3_CH1OUT_5 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN6) /* PC6 */ + +#define GPIO_TIM3_CH2OUT_1 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN7) /* PA7 */ +#define GPIO_TIM3_CH2OUT_2 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN11) /* PA11 */ +#define GPIO_TIM3_CH2OUT_3 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN5) /* PB5 */ +#define GPIO_TIM3_CH2OUT_4 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN7) /* PC7 */ + +#define GPIO_TIM3_CH3OUT_1 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN8) /* PA8 */ +#define GPIO_TIM3_CH3OUT_2 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN0) /* PB0 */ +#define GPIO_TIM3_CH3OUT_3 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN6) /* PB6 */ +#define GPIO_TIM3_CH3OUT_4 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN8) /* PC8 */ + +#define GPIO_TIM3_CH4OUT_1 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN12) /* PA12 */ +#define GPIO_TIM3_CH4OUT_2 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN1) /* PB1 */ +#define GPIO_TIM3_CH4OUT_3 (GPIO_ALT|GPIO_AF14|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN15) /* PB15 */ +#define GPIO_TIM3_CH4OUT_4 (GPIO_ALT|GPIO_AF2|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN9) /* PC9 */ + +/* USART/UART/LPUART */ + +#define GPIO_USART1_TX_1 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN2) +#define GPIO_USART1_TX_2 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN9) +#define GPIO_USART1_TX_3 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN12) +#define GPIO_USART1_TX_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN14) +#define GPIO_USART1_TX_5 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN6) +#define GPIO_USART1_TX_6 (GPIO_ALT|GPIO_AF4|GPIO_PORTB|GPIO_PIN14) +#define GPIO_USART1_RX_1 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN1) +#define GPIO_USART1_RX_2 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN10) +#define GPIO_USART1_RX_3 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN11) +#define GPIO_USART1_RX_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN13) +#define GPIO_USART1_RX_5 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN7) +#define GPIO_USART1_RX_6 (GPIO_ALT|GPIO_AF4|GPIO_PORTB|GPIO_PIN15) +#define GPIO_USART1_CTS_1 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN0) +#define GPIO_USART1_CTS_2 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN11) +#define GPIO_USART1_CTS_3 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN15) +#define GPIO_USART1_CTS_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTC|GPIO_PIN1) +#define GPIO_USART1_RTS_DE_1 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN4) +#define GPIO_USART1_RTS_DE_2 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN7) +#define GPIO_USART1_RTS_DE_3 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN12) +#define GPIO_USART1_RTS_DE_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTC|GPIO_PIN2) + +#define GPIO_USART2_TX_1 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN2) +#define GPIO_USART2_TX_2 (GPIO_ALT|GPIO_AF9|GPIO_PORTA|GPIO_PIN5) +#define GPIO_USART2_TX_3 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN8) +#define GPIO_USART2_TX_4 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN12) +#define GPIO_USART2_TX_5 (GPIO_ALT|GPIO_AF9|GPIO_PORTA|GPIO_PIN14) +#define GPIO_USART2_TX_6 (GPIO_ALT|GPIO_AF9|GPIO_PORTB|GPIO_PIN0) +#define GPIO_USART2_TX_7 (GPIO_ALT|GPIO_AF13|GPIO_PORTB|GPIO_PIN4) +#define GPIO_USART2_TX_8 (GPIO_ALT|GPIO_AF13|GPIO_PORTC|GPIO_PIN6) +#define GPIO_USART2_RX_1 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN3) +#define GPIO_USART2_RX_2 (GPIO_ALT|GPIO_AF4|GPIO_PORTA|GPIO_PIN11) +#define GPIO_USART2_RX_3 (GPIO_ALT|GPIO_AF9|GPIO_PORTA|GPIO_PIN13) +#define GPIO_USART2_RX_4 (GPIO_ALT|GPIO_AF9|GPIO_PORTA|GPIO_PIN15) +#define GPIO_USART2_RX_5 (GPIO_ALT|GPIO_AF9|GPIO_PORTB|GPIO_PIN1) +#define GPIO_USART2_RX_6 (GPIO_ALT|GPIO_AF13|GPIO_PORTB|GPIO_PIN5) +#define GPIO_USART2_RX_7 (GPIO_ALT|GPIO_AF13|GPIO_PORTB|GPIO_PIN15) +#define GPIO_USART2_RX_8 (GPIO_ALT|GPIO_AF13|GPIO_PORTC|GPIO_PIN7) +#define GPIO_USART2_CTS_1 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN0) +#define GPIO_USART2_CTS_2 (GPIO_ALT|GPIO_AF11|GPIO_PORTA|GPIO_PIN5) +#define GPIO_USART2_CTS_3 (GPIO_ALT|GPIO_AF11|GPIO_PORTB|GPIO_PIN6) +#define GPIO_USART2_CTS_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTC|GPIO_PIN3) +#define GPIO_USART2_CTS_5 (GPIO_ALT|GPIO_AF13|GPIO_PORTC|GPIO_PIN9) +#define GPIO_USART2_RTS_DE_1 (GPIO_ALT|GPIO_AF7|GPIO_PORTA|GPIO_PIN1) +#define GPIO_USART2_RTS_DE_2 (GPIO_ALT|GPIO_AF11|GPIO_PORTA|GPIO_PIN15) +#define GPIO_USART2_RTS_DE_3 (GPIO_ALT|GPIO_AF11|GPIO_PORTB|GPIO_PIN15) +#define GPIO_USART2_RTS_DE_4 (GPIO_ALT|GPIO_AF13|GPIO_PORTC|GPIO_PIN10) +#define GPIO_USART2_RTS_DE_5 (GPIO_ALT|GPIO_AF9|GPIO_PORTD|GPIO_PIN2) + +#define GPIO_USART3_TX_1 (GPIO_ALT|GPIO_AF13|GPIO_PORTA|GPIO_PIN4) +#define GPIO_USART3_TX_2 (GPIO_ALT|GPIO_AF13|GPIO_PORTA|GPIO_PIN8) +#define GPIO_USART3_TX_3 (GPIO_ALT|GPIO_AF13|GPIO_PORTB|GPIO_PIN3) +#define GPIO_USART3_TX_4 (GPIO_ALT|GPIO_AF13|GPIO_PORTB|GPIO_PIN7) +#define GPIO_USART3_TX_5 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN10) +#define GPIO_USART3_TX_6 (GPIO_ALT|GPIO_AF7|GPIO_PORTC|GPIO_PIN10) +#define GPIO_USART3_RX_1 (GPIO_ALT|GPIO_AF13|GPIO_PORTA|GPIO_PIN3) +#define GPIO_USART3_RX_2 (GPIO_ALT|GPIO_AF13|GPIO_PORTA|GPIO_PIN5) +#define GPIO_USART3_RX_3 (GPIO_ALT|GPIO_AF13|GPIO_PORTA|GPIO_PIN12) +#define GPIO_USART3_RX_4 (GPIO_ALT|GPIO_AF13|GPIO_PORTA|GPIO_PIN15) +#define GPIO_USART3_RX_5 (GPIO_ALT|GPIO_AF13|GPIO_PORTB|GPIO_PIN8) +#define GPIO_USART3_RX_6 (GPIO_ALT|GPIO_AF7|GPIO_PORTC|GPIO_PIN4) +#define GPIO_USART3_RX_7 (GPIO_ALT|GPIO_AF7|GPIO_PORTC|GPIO_PIN11) +#define GPIO_USART3_CTS_1 (GPIO_ALT|GPIO_AF9|GPIO_PORTA|GPIO_PIN0) +#define GPIO_USART3_CTS_2 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN13) +#define GPIO_USART3_CTS_3 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN15) +#define GPIO_USART3_CTS_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTD|GPIO_PIN2) +#define GPIO_USART3_RTS_DE_1 (GPIO_ALT|GPIO_AF9|GPIO_PORTA|GPIO_PIN7) +#define GPIO_USART3_RTS_DE_2 (GPIO_ALT|GPIO_AF13|GPIO_PORTA|GPIO_PIN11) +#define GPIO_USART3_RTS_DE_3 (GPIO_ALT|GPIO_AF7|GPIO_PORTB|GPIO_PIN14) +#define GPIO_USART3_RTS_DE_4 (GPIO_ALT|GPIO_AF7|GPIO_PORTC|GPIO_PIN9) + +#define GPIO_LPUART1_TX_1 (GPIO_ALT|GPIO_AF3|GPIO_PORTA|GPIO_PIN3) +#define GPIO_LPUART1_TX_2 (GPIO_ALT|GPIO_AF3|GPIO_PORTA|GPIO_PIN9) +#define GPIO_LPUART1_TX_3 (GPIO_ALT|GPIO_AF8|GPIO_PORTB|GPIO_PIN6) +#define GPIO_LPUART1_TX_4 (GPIO_ALT|GPIO_AF3|GPIO_PORTC|GPIO_PIN3) +#define GPIO_LPUART1_RX_1 (GPIO_ALT|GPIO_AF3|GPIO_PORTA|GPIO_PIN2) +#define GPIO_LPUART1_RX_2 (GPIO_ALT|GPIO_AF3|GPIO_PORTA|GPIO_PIN10) +#define GPIO_LPUART1_RX_3 (GPIO_ALT|GPIO_AF8|GPIO_PORTB|GPIO_PIN7) +#define GPIO_LPUART1_RX_4 (GPIO_ALT|GPIO_AF8|GPIO_PORTB|GPIO_PIN15) +#define GPIO_LPUART1_CTS_1 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN8) +#define GPIO_LPUART1_CTS_2 (GPIO_ALT|GPIO_AF3|GPIO_PORTA|GPIO_PIN11) +#define GPIO_LPUART1_CTS_3 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN13) +#define GPIO_LPUART1_CTS_4 (GPIO_ALT|GPIO_AF8|GPIO_PORTB|GPIO_PIN13) +#define GPIO_LPUART1_CTS_5 (GPIO_ALT|GPIO_AF8|GPIO_PORTC|GPIO_PIN1) +#define GPIO_LPUART1_RTS_DE_1 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN5) +#define GPIO_LPUART1_RTS_DE_2 (GPIO_ALT|GPIO_AF3|GPIO_PORTA|GPIO_PIN12) +#define GPIO_LPUART1_RTS_DE_3 (GPIO_ALT|GPIO_AF8|GPIO_PORTA|GPIO_PIN14) +#define GPIO_LPUART1_RTS_DE_4 (GPIO_ALT|GPIO_AF8|GPIO_PORTB|GPIO_PIN14) +#define GPIO_LPUART1_RTS_DE_5 (GPIO_ALT|GPIO_AF8|GPIO_PORTC|GPIO_PIN2) + +/* ADC1 */ + +#define GPIO_ADC1_INP0_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN0) +#define GPIO_ADC1_INN1_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN0) +#define GPIO_ADC1_INP1_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN1) +#define GPIO_ADC1_INP3_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN6) +#define GPIO_ADC1_INN3_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN7) +#define GPIO_ADC1_INP4_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN4) +#define GPIO_ADC1_INN4_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN5) +#define GPIO_ADC1_INP5_0 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) +#define GPIO_ADC1_INN5_0 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) +#define GPIO_ADC1_INP7_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN7) +#define GPIO_ADC1_INP8_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN5) +#define GPIO_ADC1_INP9_0 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) +#define GPIO_ADC1_INP10_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN0) +#define GPIO_ADC1_INN10_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN1) +#define GPIO_ADC1_INP11_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN1) +#define GPIO_ADC1_INN11_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) +#define GPIO_ADC1_INP12_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) +#define GPIO_ADC1_INN12_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN3) +#define GPIO_ADC1_INP13_0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN3) +#define GPIO_ADC1_INP14_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN2) +#define GPIO_ADC1_INP15_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN3) +#define GPIO_ADC1_INP18_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN4) +#define GPIO_ADC1_INN18_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN5) +#define GPIO_ADC1_INP19_0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN5) + +/* USB */ + +#define GPIO_USB_DM (GPIO_ALT|GPIO_AF10|GPIO_PUSHPULL|GPIO_FLOAT|GPIO_PORTA|GPIO_PIN11) +#define GPIO_USB_DP (GPIO_ALT|GPIO_AF10|GPIO_PUSHPULL|GPIO_FLOAT|GPIO_PORTA|GPIO_PIN12) +#define GPIO_USB_SOF (GPIO_ALT|GPIO_AF10|GPIO_PUSHPULL|GPIO_FLOAT|GPIO_PORTA|GPIO_PIN8) +#endif /* CONFIG_STM32_STM32H50XXX */ +#endif /* __ARCH_ARM_SRC_STM32H5_HARDWARE_STM32H50XXX_PINMAP_H */ diff --git a/arch/arm/src/stm32h5/stm32h5xx_rcc.c b/arch/arm/src/stm32h5/stm32h5xx_rcc.c index 07a60f5a68c..3368164243e 100644 --- a/arch/arm/src/stm32h5/stm32h5xx_rcc.c +++ b/arch/arm/src/stm32h5/stm32h5xx_rcc.c @@ -214,13 +214,13 @@ static inline void rcc_enableahb2(void) #if STM32_NPORTS > 3 | RCC_AHB2ENR_GPIODEN #endif -#if STM32_NPORTS > 4 +#if STM32_NPORTS > 4 && !defined(CONFIG_STM32_STM32H50XXX) | RCC_AHB2ENR_GPIOEEN #endif -#if STM32_NPORTS > 5 +#if STM32_NPORTS > 5 && !defined(CONFIG_STM32_STM32H50XXX) | RCC_AHB2ENR_GPIOFEN #endif -#if STM32_NPORTS > 6 +#if STM32_NPORTS > 6 && !defined(CONFIG_STM32_STM32H50XXX) | RCC_AHB2ENR_GPIOGEN #endif #if STM32_NPORTS > 7