This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 3d1f1372a7004daec2cd70d7b2cab6c5c1bb5e2c Author: raiden00pl <[email protected]> AuthorDate: Wed Nov 11 10:14:47 2026 +0100 boards/stm32n6570-dk: Add I2C1, I2C2 and I2C4. I2C1 (camera connector, Arduino), I2C2 (WM8904 codec, GT911 touch, TCPP03) and I2C4 (STMod+), clocked from the HSI and registered as /dev/i2c1, /dev/i2c2 and /dev/i2c4 by the common STM32 board code. Assisted-by: Claude:claude-fable-5-1 Signed-off-by: raiden00pl <[email protected]> --- .../arm/stm32n6/boards/stm32n6570-dk/index.rst | 14 +++++++++++++ boards/Kconfig | 1 + .../stm32n6/stm32n6570-dk/configs/nsh/defconfig | 6 ++++++ boards/arm/stm32n6/stm32n6570-dk/include/board.h | 23 ++++++++++++++++++++++ .../arm/stm32n6/stm32n6570-dk/src/stm32_bringup.c | 18 ++++++++--------- 5 files changed, 52 insertions(+), 10 deletions(-) diff --git a/Documentation/platforms/arm/stm32n6/boards/stm32n6570-dk/index.rst b/Documentation/platforms/arm/stm32n6/boards/stm32n6570-dk/index.rst index 1b26f95cacf..cc9e3c0497f 100644 --- a/Documentation/platforms/arm/stm32n6/boards/stm32n6570-dk/index.rst +++ b/Documentation/platforms/arm/stm32n6/boards/stm32n6570-dk/index.rst @@ -123,6 +123,20 @@ alarms with the ``alarm`` example, e.g. ``alarm 5`` or ``alarm -a 1 5``. The time survives a reset; without a backup battery it is lost on power off. +I2C +=== + +===== ============ ============================================ +Bus Pins Devices +===== ============ ============================================ +I2C1 PH9, PC1 Camera module connector, Arduino D15/D14 +I2C2 PD14, PD4 WM8904 codec (0x1a), GT911 touch (0x5d), TCPP03 +I2C4 PE13, PE14 STMod+ connector +===== ============ ============================================ + +The buses are registered as ``/dev/i2c1``, ``/dev/i2c2`` and ``/dev/i2c4`` +and can be explored with the ``i2c`` tool. + Serial ports ============ diff --git a/boards/Kconfig b/boards/Kconfig index e176bac5b8f..04e9f317ec7 100644 --- a/boards/Kconfig +++ b/boards/Kconfig @@ -3675,6 +3675,7 @@ config ARCH_BOARD_NUCLEO_N657X0_Q config ARCH_BOARD_STM32N6570_DK bool "STM32N6570-DK" depends on ARCH_CHIP_STM32N657X0 + select ARCH_BOARD_COMMON select ARCH_HAVE_LEDS select ARCH_HAVE_BUTTONS select ARCH_HAVE_IRQBUTTONS diff --git a/boards/arm/stm32n6/stm32n6570-dk/configs/nsh/defconfig b/boards/arm/stm32n6/stm32n6570-dk/configs/nsh/defconfig index 78843d6f663..4b55b93a58f 100644 --- a/boards/arm/stm32n6/stm32n6570-dk/configs/nsh/defconfig +++ b/boards/arm/stm32n6/stm32n6570-dk/configs/nsh/defconfig @@ -8,6 +8,7 @@ # CONFIG_ARCH_LEDS is not set CONFIG_ARCH="arm" CONFIG_ARCH_BOARD="stm32n6570-dk" +CONFIG_ARCH_BOARD_COMMON=y CONFIG_ARCH_BOARD_STM32N6570_DK=y CONFIG_ARCH_BUTTONS=y CONFIG_ARCH_CHIP="stm32n6" @@ -25,6 +26,7 @@ CONFIG_EXAMPLES_ALARM=y CONFIG_FS_PROCFS=y CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_I2C=y CONFIG_IDLETHREAD_STACKSIZE=4096 CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_INPUT=y @@ -45,10 +47,14 @@ CONFIG_RTC_PERIODIC=y CONFIG_SCHED_WAITPID=y CONFIG_STM32N6_DEBUG=y CONFIG_STM32_DMA1=y +CONFIG_STM32_I2C1=y +CONFIG_STM32_I2C2=y +CONFIG_STM32_I2C4=y CONFIG_STM32_RNG=y CONFIG_STM32_RTC=y CONFIG_STM32_USART1=y CONFIG_STM32_USART2=y +CONFIG_SYSTEM_I2CTOOL=y CONFIG_SYSTEM_NSH=y CONFIG_USART1_SERIAL_CONSOLE=y CONFIG_USERLED=y diff --git a/boards/arm/stm32n6/stm32n6570-dk/include/board.h b/boards/arm/stm32n6/stm32n6570-dk/include/board.h index 839b0c88bd7..7acfbe1f92b 100644 --- a/boards/arm/stm32n6/stm32n6570-dk/include/board.h +++ b/boards/arm/stm32n6/stm32n6570-dk/include/board.h @@ -244,6 +244,29 @@ /* Alternate function pin selections ****************************************/ +/* I2C GPIOs ****************************************************************/ + +/* I2C1: camera connector, Arduino D15/D14 (PH9 SCL, PC1 SDA) + * I2C2: WM8904 codec, GT911 touch, TCPP03 (PD14 SCL, PD4 SDA) + * I2C4: STMod+ connector (PE13 SCL, PE14 SDA) + * + * All I2C kernel clocks run from the 64 MHz HSI. + */ + +#define GPIO_I2C1_SCL (GPIO_I2C1_SCL_2 | GPIO_SPEED_50MHZ) +#define GPIO_I2C1_SDA (GPIO_I2C1_SDA_1 | GPIO_SPEED_50MHZ) +#define GPIO_I2C2_SCL (GPIO_I2C2_SCL_2 | GPIO_SPEED_50MHZ) +#define GPIO_I2C2_SDA (GPIO_I2C2_SDA_2 | GPIO_SPEED_50MHZ) +#define GPIO_I2C4_SCL (GPIO_I2C4_SCL_2 | GPIO_SPEED_50MHZ) +#define GPIO_I2C4_SDA (GPIO_I2C4_SDA_3 | GPIO_SPEED_50MHZ) + +#define STM32_RCC_CCIPR4_I2C1SEL RCC_CCIPR4_I2C1SEL_HSI +#define STM32_RCC_CCIPR4_I2C2SEL RCC_CCIPR4_I2C2SEL_HSI +#define STM32_RCC_CCIPR4_I2C4SEL RCC_CCIPR4_I2C4SEL_HSI +#define STM32_I2C1_FREQUENCY STM32_HSI_FREQUENCY +#define STM32_I2C2_FREQUENCY STM32_HSI_FREQUENCY +#define STM32_I2C4_FREQUENCY STM32_HSI_FREQUENCY + /* USART1 GPIOs *************************************************************/ /* USART1 (ST-LINK Virtual COM Port): PE5=TX (AF7), PE6=RX (AF7) diff --git a/boards/arm/stm32n6/stm32n6570-dk/src/stm32_bringup.c b/boards/arm/stm32n6/stm32n6570-dk/src/stm32_bringup.c index d589047cb2c..4382eac0c54 100644 --- a/boards/arm/stm32n6/stm32n6570-dk/src/stm32_bringup.c +++ b/boards/arm/stm32n6/stm32n6570-dk/src/stm32_bringup.c @@ -26,7 +26,6 @@ #include <nuttx/config.h> -#include <sys/mount.h> #include <sys/types.h> #include <syslog.h> #include <debug.h> @@ -38,6 +37,7 @@ #include "stm32_rtc.h" #include "stm32n6570-dk.h" +#include "board_common.h" #include <arch/board/board.h> @@ -61,21 +61,18 @@ int stm32_bringup(void) { -#if defined(CONFIG_FS_PROCFS) || defined(CONFIG_INPUT_BUTTONS_LOWER) || \ - (defined(CONFIG_RTC_DRIVER) && defined(CONFIG_STM32_RTC)) || \ - (!defined(CONFIG_ARCH_LEDS) && defined(CONFIG_USERLED_LOWER)) int ret; -#endif -#ifdef CONFIG_FS_PROCFS - /* Mount the procfs file system. */ + /* Initialize the board features common to all STM32 boards: procfs and + * the enabled I2C buses. + */ - ret = nx_mount(NULL, "/proc", "procfs", 0, NULL); + ret = stm32_common_initialize(); if (ret < 0) { - syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", ret); + syslog(LOG_ERR, "ERROR: stm32_common_initialize() failed: %d\n", + ret); } -#endif #if !defined(CONFIG_ARCH_LEDS) && defined(CONFIG_USERLED_LOWER) /* Register the LED driver */ @@ -107,5 +104,6 @@ int stm32_bringup(void) } #endif + UNUSED(ret); return OK; }
