This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 407896ba020d402af4a2f0b649ad3419d32f6567
Author: raiden00pl <[email protected]>
AuthorDate: Tue Sep 22 13:25:46 2026 +0200

    arm/stm32h5: add STM32H573II support
    
    add STM32H573II support
    
    Assisted-by: Codex:GPT-6
    Signed-off-by: raiden00pl <[email protected]>
---
 arch/arm/src/common/stm32/Kconfig.uart             | 16 +++++++--------
 arch/arm/src/stm32h5/Kconfig                       | 24 ++++++++++++++++++++++
 arch/arm/src/stm32h5/hardware/stm32_ethernet.h     |  4 ++--
 arch/arm/src/stm32h5/hardware/stm32_flash.h        |  3 ++-
 arch/arm/src/stm32h5/hardware/stm32_pinmap.h       |  3 ++-
 arch/arm/src/stm32h5/hardware/stm32h56xxx_pinmap.h |  9 ++++----
 arch/arm/src/stm32h5/stm32_flash.c                 |  2 +-
 arch/arm/src/stm32h5/stm32h5xx_rcc.c               |  7 +++++++
 8 files changed, 51 insertions(+), 17 deletions(-)

diff --git a/arch/arm/src/common/stm32/Kconfig.uart 
b/arch/arm/src/common/stm32/Kconfig.uart
index 679b076ec2b..4398afedebf 100644
--- a/arch/arm/src/common/stm32/Kconfig.uart
+++ b/arch/arm/src/common/stm32/Kconfig.uart
@@ -13,7 +13,7 @@ config STM32_USART1_HAVE_RXDMA
        default y if STM32_STM32F779AX && (STM32_DMA2)
        default y if STM32_STM32G0 && (STM32_DMA2)
        default y if STM32_STM32G4XXX && (STM32_DMA1 || STM32_DMA2)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA2)
        default y if STM32_STM32L15XX && (STM32_DMA1)
@@ -48,7 +48,7 @@ config STM32_USART2_HAVE_RXDMA
        default y if STM32_STM32F779AX && (STM32_DMA1)
        default y if STM32_STM32G0 && (STM32_DMA1)
        default y if STM32_STM32G4XXX && (STM32_DMA1)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA1)
        default y if STM32_STM32L15XX && (STM32_DMA1)
@@ -82,7 +82,7 @@ config STM32_USART3_HAVE_RXDMA
        default y if STM32_STM32F779AX && (STM32_DMA1)
        default y if STM32_STM32G0 && (STM32_DMA1)
        default y if STM32_STM32G4XXX && (STM32_DMA1)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA1)
        default y if STM32_STM32L15XX && (STM32_DMA1)
@@ -116,7 +116,7 @@ config STM32_UART4_HAVE_RXDMA
        default y if STM32_STM32F779AX && (STM32_DMA1)
        default y if STM32_STM32G0 && (STM32_DMA1)
        default y if STM32_STM32G4XXX && (STM32_DMA1)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA1)
        default y if STM32_STM32L15XX && (STM32_DMA1)
@@ -150,7 +150,7 @@ config STM32_UART5_HAVE_RXDMA
        default y if STM32_STM32F779AX && (STM32_DMA1)
        default y if STM32_STM32G0 && (STM32_DMA1)
        default y if STM32_STM32G4XXX && (STM32_DMA1)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA1)
        default y if STM32_STM32L15XX && (STM32_DMA1)
@@ -181,7 +181,7 @@ config STM32_USART6_HAVE_RXDMA
        default y if STM32_STM32F4XXX && (STM32_DMA2)
        default y if STM32_STM32F779AX && (STM32_DMA2)
        default y if STM32_STM32G0 && (STM32_DMA2)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA2)
 
@@ -202,7 +202,7 @@ config STM32_UART7_HAVE_RXDMA
        default y if STM32_STM32F0 && (STM32_DMA1)
        default y if STM32_STM32F779AX && (STM32_DMA1)
        default y if STM32_STM32G0 && (STM32_DMA1)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA1)
 
@@ -221,7 +221,7 @@ config STM32_UART8_HAVE_RXDMA
        default y if STM32_STM32F0 && (STM32_DMA1)
        default y if STM32_STM32F779AX && (STM32_DMA1)
        default y if STM32_STM32G0 && (STM32_DMA1)
-       default y if STM32_STM32H56XXX && (STM32_DMA1 || STM32_DMA2)
+       default y if (STM32_STM32H56XXX || STM32_STM32H57XXX) && (STM32_DMA1 || 
STM32_DMA2)
        default y if ARCH_CHIP_STM32H755XI && (STM32_DMA1 || STM32_DMA2)
        default y if STM32_STM32L0 && (STM32_DMA1)
 
diff --git a/arch/arm/src/stm32h5/Kconfig b/arch/arm/src/stm32h5/Kconfig
index ec3780c926f..b0e730ab570 100644
--- a/arch/arm/src/stm32h5/Kconfig
+++ b/arch/arm/src/stm32h5/Kconfig
@@ -70,6 +70,16 @@ config ARCH_CHIP_STM32H563ZI
        ---help---
                STM32 H5 Cortex M33, 2 Mb FLASH, 640 Kb SRAM
 
+config ARCH_CHIP_STM32H573II
+       bool "STM32H573II"
+       select ARCH_CORTEXM33
+       select STM32_STM32H5XXXX
+       select STM32_STM32H57XXX
+       select STM32_FLASH_CONFIG_I
+       select STM32H5_IO_CONFIG_I
+       ---help---
+               STM32 H5 Cortex M33, 2 Mb FLASH, 640 Kb SRAM
+
 endchoice # STM32 H5 Chip Selection
 
 # Chip families:
@@ -128,6 +138,15 @@ config STM32_STM32H53XXX
 config STM32_STM32H56XXX
        bool
        default n
+
+config STM32_STM32H57XXX
+       bool
+       default n
+       select STM32_HAVE_ETHERNET
+
+config STM32_H56_H57_PERIPHERALS
+       bool
+       default y if STM32_STM32H56XXX || STM32_STM32H57XXX
        select STM32_HAVE_I2C3
        select STM32_HAVE_QSPI1
        select STM32_HAVE_CORDIC
@@ -199,6 +218,11 @@ config STM32H5_IO_CONFIG_R
        bool
        default n
 
+config STM32H5_IO_CONFIG_I
+       # Package designator I
+       bool
+       default n
+
 config STM32H5_IO_CONFIG_J
        # Package designator J
        bool
diff --git a/arch/arm/src/stm32h5/hardware/stm32_ethernet.h 
b/arch/arm/src/stm32h5/hardware/stm32_ethernet.h
index b328ec952ce..08620371b48 100644
--- a/arch/arm/src/stm32h5/hardware/stm32_ethernet.h
+++ b/arch/arm/src/stm32h5/hardware/stm32_ethernet.h
@@ -33,7 +33,7 @@
 
 /* Ethernet support only on STM32H563/573 chips. */
 
-#if defined(CONFIG_STM32_STM32H56XXX)
+#if defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX)
 
 /****************************************************************************
  * Pre-processor Definitions
@@ -681,5 +681,5 @@ struct eth_desc_s
  ****************************************************************************/
 
 #endif /* __ASSEMBLY__ */
-#endif /* CONFIG_STM32_STM32H56XXX */
+#endif /* CONFIG_STM32_STM32H56XXX || CONFIG_STM32_STM32H57XXX */
 #endif /* __ARCH_ARM_SRC_STM32H5_HARDWARE_STM32_ETHERNET_H */
\ No newline at end of file
diff --git a/arch/arm/src/stm32h5/hardware/stm32_flash.h 
b/arch/arm/src/stm32h5/hardware/stm32_flash.h
index ff91e8f84c7..25b551eb5e0 100644
--- a/arch/arm/src/stm32h5/hardware/stm32_flash.h
+++ b/arch/arm/src/stm32h5/hardware/stm32_flash.h
@@ -31,7 +31,8 @@
 #include "chip.h"
 
 #if defined(CONFIG_STM32_STM32H50XXX) || \
-    defined(CONFIG_STM32_STM32H53XXX) || defined(CONFIG_STM32_STM32H56XXX)
+    defined(CONFIG_STM32_STM32H53XXX) || \
+    defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX)
 #  include "hardware/stm32h5xxx_flash.h"
 #else
 #  error "Unsupported STM32 H5 flash"
diff --git a/arch/arm/src/stm32h5/hardware/stm32_pinmap.h 
b/arch/arm/src/stm32h5/hardware/stm32_pinmap.h
index 085b0a63982..e78d755b122 100644
--- a/arch/arm/src/stm32h5/hardware/stm32_pinmap.h
+++ b/arch/arm/src/stm32h5/hardware/stm32_pinmap.h
@@ -32,7 +32,8 @@
 
 #if defined(CONFIG_STM32_STM32H50XXX)
 #  include "hardware/stm32h50xxx_pinmap.h"
-#elif defined(CONFIG_STM32_STM32H53XXX) || defined(CONFIG_STM32_STM32H56XXX)
+#elif defined(CONFIG_STM32_STM32H53XXX) || \
+    defined(CONFIG_STM32_STM32H56XXX) || defined(CONFIG_STM32_STM32H57XXX)
 #  include "hardware/stm32h56xxx_pinmap.h"
 #else
 #  error "Unsupported STM32 H5 pin map"
diff --git a/arch/arm/src/stm32h5/hardware/stm32h56xxx_pinmap.h 
b/arch/arm/src/stm32h5/hardware/stm32h56xxx_pinmap.h
index 8a1d487674a..55d6d9ead54 100644
--- a/arch/arm/src/stm32h5/hardware/stm32h56xxx_pinmap.h
+++ b/arch/arm/src/stm32h5/hardware/stm32h56xxx_pinmap.h
@@ -31,13 +31,14 @@
 
 #if defined(CONFIG_STM32_STM32H53XXX) || \
     defined(CONFIG_STM32_STM32H563XX) || \
-    defined(CONFIG_STM32_STM32H562XX)
+    defined(CONFIG_STM32_STM32H562XX) || \
+    defined(CONFIG_STM32_STM32H57XXX)
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
 
-/* Alternate Pin Functions.  All members of the STM32H562xx and STM32H563xx
- * families share the same pin multiplexing (although they may differ in the
+/* Alternate Pin Functions.  STM32H562xx, STM32H563xx and STM32H573xx
+ * devices share the same pin multiplexing (although they may differ in the
  * pins physically available).  See DS14258, Table 15 "Alternate Function AF0
  * to AF7" and Table 16 "Alternate Function AF8 to AF15".
  *
@@ -796,5 +797,5 @@
 #define GPIO_ADC2_INN18_0  (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN5)
 #define GPIO_ADC2_INP19_0  (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN5)
 
-#endif /* CONFIG_STM32_STM32H563XX*/
+#endif /* STM32H53xxx, STM32H562xx, STM32H563xx or STM32H57xxx */
 #endif /* __ARCH_ARM_SRC_STM32H5_HARDWARE_STM32H56XXX_PINMAP_H */
diff --git a/arch/arm/src/stm32h5/stm32_flash.c 
b/arch/arm/src/stm32h5/stm32_flash.c
index feac762f165..9589d433ecd 100644
--- a/arch/arm/src/stm32h5/stm32_flash.c
+++ b/arch/arm/src/stm32h5/stm32_flash.c
@@ -26,7 +26,7 @@
 
 #include <nuttx/config.h>
 
-#if defined(CONFIG_STM32_STM32H563XX)
+#if defined(CONFIG_STM32_STM32H563XX) || defined(CONFIG_STM32_STM32H57XXX)
 #  include "stm32h563xx_flash.c"
 #else
 #  error "Unsupported STM32 H5 chip"
diff --git a/arch/arm/src/stm32h5/stm32h5xx_rcc.c 
b/arch/arm/src/stm32h5/stm32h5xx_rcc.c
index b73b90aa9ce..8252df5cc77 100644
--- a/arch/arm/src/stm32h5/stm32h5xx_rcc.c
+++ b/arch/arm/src/stm32h5/stm32h5xx_rcc.c
@@ -1030,6 +1030,13 @@ void stm32_stdclockconfig(void)
   /* Enable External High-Speed Clock (HSE) */
 
   regval  = getreg32(STM32_RCC_CR);
+  regval &= ~(RCC_CR_HSEBYP | RCC_CR_HSEEXT);
+#ifdef STM32_HSEBYP_ENABLE
+  regval |= RCC_CR_HSEBYP;          /* External oscillator */
+#  ifdef STM32_HSEEXT_ENABLE
+  regval |= RCC_CR_HSEEXT;          /* Digital bypass input */
+#  endif
+#endif
   regval |= RCC_CR_HSEON;           /* Enable HSE */
   putreg32(regval, STM32_RCC_CR);
 

Reply via email to