From 49a69dad653b00e496c7efd7ffebabaef01775a1 Mon Sep 17 00:00:00 2001 From: Mathieu Choplain Date: Thu, 2 Nov 2023 11:10:50 +0100 Subject: [PATCH] boards: arm: Add support for STM32L4R9I-DISCO Adds the device trees for the board and its Arduino connector, default Kconfig and documentation. The following features have been confirmed working on hardware: * ADC * I2C * RTC * SPI * SDMMC * UART * OctoSPI Flash Signed-off-by: Mathieu Choplain --- boards/arm/stm32l4r9i_disco/Kconfig.board | 8 + boards/arm/stm32l4r9i_disco/Kconfig.defconfig | 11 + .../arduino_r3_connector.dtsi | 39 +++ boards/arm/stm32l4r9i_disco/board.cmake | 6 + .../doc/img/stm32l4r9i_disco.jpg | Bin 0 -> 57892 bytes boards/arm/stm32l4r9i_disco/doc/index.rst | 150 ++++++++++ .../arm/stm32l4r9i_disco/stm32l4r9i_disco.dts | 274 ++++++++++++++++++ .../stm32l4r9i_disco/stm32l4r9i_disco.yaml | 25 ++ .../stm32l4r9i_disco_defconfig | 26 ++ .../arm/stm32l4r9i_disco/support/openocd.cfg | 12 + 10 files changed, 551 insertions(+) create mode 100644 boards/arm/stm32l4r9i_disco/Kconfig.board create mode 100644 boards/arm/stm32l4r9i_disco/Kconfig.defconfig create mode 100644 boards/arm/stm32l4r9i_disco/arduino_r3_connector.dtsi create mode 100644 boards/arm/stm32l4r9i_disco/board.cmake create mode 100644 boards/arm/stm32l4r9i_disco/doc/img/stm32l4r9i_disco.jpg create mode 100644 boards/arm/stm32l4r9i_disco/doc/index.rst create mode 100644 boards/arm/stm32l4r9i_disco/stm32l4r9i_disco.dts create mode 100644 boards/arm/stm32l4r9i_disco/stm32l4r9i_disco.yaml create mode 100644 boards/arm/stm32l4r9i_disco/stm32l4r9i_disco_defconfig create mode 100644 boards/arm/stm32l4r9i_disco/support/openocd.cfg diff --git a/boards/arm/stm32l4r9i_disco/Kconfig.board b/boards/arm/stm32l4r9i_disco/Kconfig.board new file mode 100644 index 00000000000..57da0f65fdf --- /dev/null +++ b/boards/arm/stm32l4r9i_disco/Kconfig.board @@ -0,0 +1,8 @@ +# STM32L4R9I Discovery board configuration + +# Copyright (c) 2023 STMicroelectronics +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_STM32L4R9I_DISCO + bool "STM32L4R9I Discovery Development Board" + depends on SOC_STM32L4R9XX diff --git a/boards/arm/stm32l4r9i_disco/Kconfig.defconfig b/boards/arm/stm32l4r9i_disco/Kconfig.defconfig new file mode 100644 index 00000000000..82eafa62744 --- /dev/null +++ b/boards/arm/stm32l4r9i_disco/Kconfig.defconfig @@ -0,0 +1,11 @@ +# STM32L4R9I Discovery board configuration + +# Copyright (c) 2023 STMicroelectronics +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_STM32L4R9I_DISCO + +config BOARD + default "stm32l4r9i_disco" + +endif # BOARD_STM32L4R9I_DISCO diff --git a/boards/arm/stm32l4r9i_disco/arduino_r3_connector.dtsi b/boards/arm/stm32l4r9i_disco/arduino_r3_connector.dtsi new file mode 100644 index 00000000000..29b56539b70 --- /dev/null +++ b/boards/arm/stm32l4r9i_disco/arduino_r3_connector.dtsi @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2023 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + arduino_header: connector { + compatible = "arduino-header-r3"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpioa 7 0>, /* A0 */ + <1 0 &gpioc 4 0>, /* A1 */ + <2 0 &gpioc 3 0>, /* A2 */ + <3 0 &gpiob 0 0>, /* A3 */ + <4 0 &gpioa 0 0>, /* A4 */ + <5 0 &gpioa 5 0>, /* A5 */ + <6 0 &gpioc 0 0>, /* D0 */ + <7 0 &gpioc 1 0>, /* D1 */ + <8 0 &gpiog 11 0>, /* D2 */ + <9 0 &gpiof 10 0>, /* D3 */ + <10 0 &gpiog 6 0>, /* D4 */ + <11 0 &gpioa 1 0>, /* D5 */ + <12 0 &gpiob 4 0>, /* D6 */ + <13 0 &gpioa 4 0>, /* D7 */ + <14 0 &gpioh 15 0>, /* D8 */ + <15 0 &gpioh 13 0>, /* D9 */ + <16 0 &gpioi 0 0>, /* D10 */ + <17 0 &gpiob 15 0>, /* D11 */ + <18 0 &gpiob 14 0>, /* D12 */ + <19 0 &gpiob 13 0>, /* D13 */ + <20 0 &gpiog 8 0>, /* D14 */ + <21 0 &gpiog 7 0>; /* D15 */ + }; +}; + +arduino_i2c: &i2c3 {}; +arduino_spi: &spi2 {}; diff --git a/boards/arm/stm32l4r9i_disco/board.cmake b/boards/arm/stm32l4r9i_disco/board.cmake new file mode 100644 index 00000000000..c88ae7d0783 --- /dev/null +++ b/boards/arm/stm32l4r9i_disco/board.cmake @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=STM32L4R9AI" "--speed=4000") + +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/arm/stm32l4r9i_disco/doc/img/stm32l4r9i_disco.jpg b/boards/arm/stm32l4r9i_disco/doc/img/stm32l4r9i_disco.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06914737b5b6b4c3c05dc142e4ca8ee0dca3cbf2 GIT binary patch literal 57892 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 z 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 +#include +#include +#include "arduino_r3_connector.dtsi" + +/ { + model = "STMicroelectronics STM32L4R9I-DISCO board"; + compatible = "st,stm32l4r9i-disco"; + + chosen { + zephyr,console = &usart2; + zephyr,shell-uart = &usart2; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; + + leds { + compatible = "gpio-leds"; + /* N.B. LD1 (orange) is not wired to MCU */ + green_led: led_2 { + gpios = <&gpioh 4 GPIO_ACTIVE_LOW>; + label = "User LD2"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + joy_sel: joystick_selection { + label = "joystick selection"; + gpios = <&gpioc 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; + zephyr,code = ; + }; + }; + + aliases { + led0 = &green_led; + sw0 = &joy_sel; + die-temp0 = &die_temp; + volt-sensor0 = &vref; + volt-sensor1 = &vbat; + spi-flash0 = &mx25lm51245; + }; +}; + +&clk_lse { + status = "okay"; +}; + +&clk_lsi { + status = "okay"; +}; + +&clk_hsi48 { + status = "okay"; +}; + +&clk_hsi { + status = "okay"; +}; + +&clk_msi { + status = "okay"; + msi-range = <6>; + msi-pll-mode; +}; + +&pll { + status = "okay"; + div-m = <1>; + mul-n = <60>; + /* + * WORKAROUND: stm32l4-pll-clock does not allow arbitrary PLLP dividers. + * Disable PLLP completely since it only feeds SAI, which is not active either. + */ + /* div-p = <5>; */ + div-q = <2>; + div-r = <2>; + clocks = <&clk_msi>; +}; + +&rcc { + clocks = <&pll>; + ahb-prescaler = <1>; + clock-frequency = ; + apb1-prescaler = <1>; + apb2-prescaler = <1>; +}; + +&usart2 { + status = "okay"; + pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3>; + pinctrl-names = "default"; + current-speed = <115200>; +}; + +&lpuart1 { + status = "okay"; + pinctrl-0 = <&lpuart1_tx_pc1 &lpuart1_rx_pc0>; + pinctrl-names = "default"; + current-speed = <115200>; +}; + +&timers3 { + status = "okay"; + + pwm3: pwm { + status = "okay"; + /* + * N.B.: Datasheet indicates that ARD_D11 (wired to PB15) is connected to TIM3_CH2. + * However, this is incorrect as PB15 cannot be muxed to TIM3 (see DS12023). + * Moved ARD_D11 to TIM15_CH2 instead. + */ + pinctrl-0 = <&tim3_ch1_pb4>; + pinctrl-names = "default"; + }; +}; + +&timers5 { + status = "okay"; + + pwm5: pwm { + status = "okay"; + pinctrl-0 = <&tim5_ch2_pa1 &tim5_ch4_pi0>; + pinctrl-names = "default"; + }; +}; + +&timers8 { + status = "okay"; + + pwm8: pwm { + status = "okay"; + pinctrl-0 = <&tim8_ch1n_ph13>; + pinctrl-names = "default"; + }; +}; + +&timers15 { + status = "okay"; + + pwm15: pwm { + status = "okay"; + pinctrl-0 = <&tim15_ch2_pf10 &tim15_ch2_pb15>; + pinctrl-names = "default"; + }; +}; + +&i2c1 { + status = "okay"; + pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pg13>; + pinctrl-names = "default"; + clock-frequency = ; +}; + +&i2c3 { + status = "okay"; + pinctrl-0 = <&i2c3_scl_pg7 &i2c3_sda_pg8>; + pinctrl-names = "default"; + clock-frequency = ; +}; + +&spi2 { + status = "okay"; + pinctrl-0 = <&spi2_sck_pb13 &spi2_miso_pb14 &spi2_mosi_pb15>; + pinctrl-names = "default"; + cs-gpios = <&gpioi 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; +}; + +&rtc { + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>, + <&rcc STM32_SRC_LSE RTC_SEL(1)>; + status = "okay"; +}; + +&sdmmc1 { + status = "okay"; + pinctrl-0 = <&sdmmc1_d0_pc8 &sdmmc1_d1_pc9 + &sdmmc1_d2_pc10 &sdmmc1_d3_pc11 + &sdmmc1_ck_pc12 &sdmmc1_cmd_pd2>; + pinctrl-names = "default"; +}; + +&adc1 { + status = "okay"; + pinctrl-0 = <&adc1_in5_pa0 &adc1_in12_pa7 &adc1_in15_pb0 + &adc1_in4_pc3 &adc1_in13_pc4>; + pinctrl-names = "default"; + st,adc-clock-source = ; + st,adc-prescaler = <1>; +}; + +zephyr_udc0: &usbotg_fs { + status = "okay"; + pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12 + &usb_otg_fs_id_pa10>; + pinctrl-names = "default"; +}; + +&die_temp { + status = "okay"; +}; + +&vref { + status = "okay"; +}; + +&vbat { + status = "okay"; +}; + +&octospi2 { + status = "okay"; + pinctrl-0 = <&octospim_p2_clk_pi6 &octospim_p2_ncs_pg12 + &octospim_p2_io0_pi11 &octospim_p2_io1_pi10 + &octospim_p2_io2_pi9 &octospim_p2_io3_ph8 + &octospim_p2_io4_ph9 &octospim_p2_io5_ph10 + &octospim_p2_io6_pg9 &octospim_p2_io7_pg10 + &octospim_p2_dqs_pg15>; + pinctrl-names = "default"; + + mx25lm51245: ospi-nor-flash@0 { + status = "okay"; + compatible = "st,stm32-ospi-nor"; + reg = <0>; + ospi-max-frequency = ; + size = ; /* 512 Mbits = 64 MBytes */ + spi-bus-width = ; + data-rate = ; + four-byte-opcodes; + sfdp-bfp = [ + 53 46 44 50 06 01 02 ff + 00 06 01 10 30 00 00 ff + c2 00 01 04 10 01 00 ff + 84 00 01 02 c0 00 00 ff + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + e5 20 fb ff ff ff ff 1f + 44 eb 08 6b 08 3b 04 bb + fe ff ff ff ff ff 00 ff + ff ff 44 eb 0c 20 0f 52 + 10 d8 00 ff d6 49 c5 00 + 81 df 04 e3 44 03 67 38 + 30 b0 30 b0 f7 bd d5 5c + 4a 9e 29 ff f0 50 f9 85 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 7f ef ff ff 21 5c dc ff + ]; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + reg = <0x00000000 DT_SIZE_M(64)>; + }; + }; + }; +}; diff --git a/boards/arm/stm32l4r9i_disco/stm32l4r9i_disco.yaml b/boards/arm/stm32l4r9i_disco/stm32l4r9i_disco.yaml new file mode 100644 index 00000000000..89ab98c92b1 --- /dev/null +++ b/boards/arm/stm32l4r9i_disco/stm32l4r9i_disco.yaml @@ -0,0 +1,25 @@ +identifier: stm32l4r9i_disco +name: ST STM32L4R9I Discovery +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 640 +flash: 2048 +vendor: st +supported: + - adc + - arduino_gpio + - arduino_i2c + - arduino_spi + - gpio + - i2c + - pwm + - rtc + - sdhc + - spi + - uart + - usb + - usb_device diff --git a/boards/arm/stm32l4r9i_disco/stm32l4r9i_disco_defconfig b/boards/arm/stm32l4r9i_disco/stm32l4r9i_disco_defconfig new file mode 100644 index 00000000000..546bd3379a8 --- /dev/null +++ b/boards/arm/stm32l4r9i_disco/stm32l4r9i_disco_defconfig @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SOC_SERIES_STM32L4X=y +CONFIG_SOC_STM32L4R9XX=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + +# Enable UART +CONFIG_SERIAL=y + +# Enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable GPIO +CONFIG_GPIO=y + +# Enable clocks +CONFIG_CLOCK_CONTROL=y + +# Enable pin controller +CONFIG_PINCTRL=y diff --git a/boards/arm/stm32l4r9i_disco/support/openocd.cfg b/boards/arm/stm32l4r9i_disco/support/openocd.cfg new file mode 100644 index 00000000000..295299f2fbe --- /dev/null +++ b/boards/arm/stm32l4r9i_disco/support/openocd.cfg @@ -0,0 +1,12 @@ +source [find board/stm32l4discovery.cfg] + +$_TARGETNAME configure -event gdb-attach { + echo "Debugger attaching: halting execution" + reset halt + gdb_breakpoint_override hard +} + +$_TARGETNAME configure -event gdb-detach { + echo "Debugger detaching: resuming execution" + resume +}