From 784d7321586d8ff76ef43d715b6cea6acb32a3e8 Mon Sep 17 00:00:00 2001 From: Thomas Stranger Date: Wed, 5 Apr 2023 15:04:14 +0200 Subject: [PATCH] boards: arm: add nucleo_h563zi with stm32h563 soc. Adds the board definitions for the nucleo_h563zi board. Notes: DAC: enable output on pa5, which is available on the ST Zio and morpho connectors. UM3115 in table 21 wrongly lists pa15 on the positions where pa5 is. The only other option for the dac output is pa4 which is reserved for for VBUS_SENSE. Signed-off-by: Thomas Stranger --- boards/arm/nucleo_h563zi/Kconfig.board | 8 + boards/arm/nucleo_h563zi/Kconfig.defconfig | 11 + .../nucleo_h563zi/arduino_r3_connector.dtsi | 40 +++ boards/arm/nucleo_h563zi/board.cmake | 11 + .../nucleo_h563zi/doc/img/nucleo_h563zi.jpg | Bin 0 -> 64495 bytes boards/arm/nucleo_h563zi/doc/index.rst | 315 ++++++++++++++++++ .../nucleo_h563zi/nucleo_h563zi-common.dtsi | 167 ++++++++++ boards/arm/nucleo_h563zi/nucleo_h563zi.dts | 36 ++ boards/arm/nucleo_h563zi/nucleo_h563zi.yaml | 21 ++ .../arm/nucleo_h563zi/nucleo_h563zi_defconfig | 25 ++ 10 files changed, 634 insertions(+) create mode 100644 boards/arm/nucleo_h563zi/Kconfig.board create mode 100644 boards/arm/nucleo_h563zi/Kconfig.defconfig create mode 100644 boards/arm/nucleo_h563zi/arduino_r3_connector.dtsi create mode 100644 boards/arm/nucleo_h563zi/board.cmake create mode 100644 boards/arm/nucleo_h563zi/doc/img/nucleo_h563zi.jpg create mode 100644 boards/arm/nucleo_h563zi/doc/index.rst create mode 100644 boards/arm/nucleo_h563zi/nucleo_h563zi-common.dtsi create mode 100644 boards/arm/nucleo_h563zi/nucleo_h563zi.dts create mode 100644 boards/arm/nucleo_h563zi/nucleo_h563zi.yaml create mode 100644 boards/arm/nucleo_h563zi/nucleo_h563zi_defconfig diff --git a/boards/arm/nucleo_h563zi/Kconfig.board b/boards/arm/nucleo_h563zi/Kconfig.board new file mode 100644 index 00000000000..debcb2a4ab8 --- /dev/null +++ b/boards/arm/nucleo_h563zi/Kconfig.board @@ -0,0 +1,8 @@ +# STM32H563ZI Nucleo board configuration + +# Copyright (c) 2023 Thomas Stranger +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_NUCLEO_H563ZI + bool "Nucleo H563ZI Development Board" + depends on SOC_STM32H563XX diff --git a/boards/arm/nucleo_h563zi/Kconfig.defconfig b/boards/arm/nucleo_h563zi/Kconfig.defconfig new file mode 100644 index 00000000000..b43ccb20cd4 --- /dev/null +++ b/boards/arm/nucleo_h563zi/Kconfig.defconfig @@ -0,0 +1,11 @@ +# STM32H563ZI Nucleo board configuration + +# Copyright (c) 2023 Thomas Stranger +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_NUCLEO_H563ZI + +config BOARD + default "nucleo_h563zi" + +endif # BOARD_NUCLEO_H563ZI diff --git a/boards/arm/nucleo_h563zi/arduino_r3_connector.dtsi b/boards/arm/nucleo_h563zi/arduino_r3_connector.dtsi new file mode 100644 index 00000000000..cb56530d7e8 --- /dev/null +++ b/boards/arm/nucleo_h563zi/arduino_r3_connector.dtsi @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 Linaro Limited + * Copyright (c) 2023 Thomas Stranger + * + * 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 6 0>, /* A0 */ + <1 0 &gpioc 0 0>, /* A1 */ + <2 0 &gpioc 3 0>, /* A2 */ + <3 0 &gpiob 1 0>, /* A3 */ + <4 0 &gpioc 2 0>, /* A4 */ + <5 0 &gpiof 11 0>, /* A5 */ + <6 0 &gpiob 7 0>, /* D0 */ + <7 0 &gpiob 6 0>, /* D1 */ + <8 0 &gpiog 14 0>, /* D2 */ + <9 0 &gpioe 13 0>, /* D3 */ + <10 0 &gpioe 14 0>, /* D4 */ + <11 0 &gpioe 11 0>, /* D5 */ + <12 0 &gpioe 9 0>, /* D6 */ + <13 0 &gpiog 12 0>, /* D7 */ + <14 0 &gpiof 3 0>, /* D8 */ + <15 0 &gpiod 15 0>, /* D9 */ + <16 0 &gpiod 14 0>, /* D10 */ + <17 0 &gpiob 5 0>, /* D11 */ + <18 0 &gpiog 9 0>, /* D12 */ + <19 0 &gpioa 5 0>, /* D13 */ + <20 0 &gpiob 9 0>, /* D14 */ + <21 0 &gpiob 8 0>; /* D15 */ + }; +}; + +arduino_serial: &lpuart1 {}; +arduino_spi: &spi1 {}; diff --git a/boards/arm/nucleo_h563zi/board.cmake b/boards/arm/nucleo_h563zi/board.cmake new file mode 100644 index 00000000000..8899e82de74 --- /dev/null +++ b/boards/arm/nucleo_h563zi/board.cmake @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(stm32cubeprogrammer "--erase" "--port=swd" "--reset-mode=hw") + +board_runner_args(pyocd "--target=stm32h563zitx") + +board_runner_args(jlink "--device=STM32H563ZI" "--reset-after-load") + +include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake) +include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/arm/nucleo_h563zi/doc/img/nucleo_h563zi.jpg b/boards/arm/nucleo_h563zi/doc/img/nucleo_h563zi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b758375f04e82516f61a8d5370dbd090fa4c286 GIT binary patch literal 64495 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 Ux`I#~#q?Sb9#I5swybq!;*xQ~!&~;e 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 z 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 literal 0 HcmV?d00001 diff --git a/boards/arm/nucleo_h563zi/doc/index.rst b/boards/arm/nucleo_h563zi/doc/index.rst new file mode 100644 index 00000000000..1c1acf62e0e --- /dev/null +++ b/boards/arm/nucleo_h563zi/doc/index.rst @@ -0,0 +1,315 @@ +.. _nucleo_h563zi_board: + +ST Nucleo H563ZI +################ + +Overview +******** + +The Nucleo H563ZI board is designed as an affordable development platform for +STMicroelectronics ARM |reg| Cortex |reg|-M33 core-based STM32H563ZIT6 +microcontroller with TrustZone |reg|. +Here are some highlights of the Nucleo H563ZI board: + +- STM32H563ZI microcontroller featuring 2 Mbytes of Flash memory and 640Kbyte of + SRAM in LQFP144 package +- Board connectors: + + - USB Type-C |trade| Sink device FS + - Ethernet RJ45 connector compliant with IEEE-802.3-2002 (depending on STM32 support) + - ST Zio expansion connector including Arduino Uno V3 connectivity (CN7, CN8, CN9, CN10) + - ST morpho extension connector (CN11, CN12) + +- Flexible board power supply: + + - 5V_USB_STLK from ST-Link USB connector + - VIN (7 - 12V, 0.8A) supplied via pin header CN8 pin 15 or CN11 pin 24 + - 5V_EXT on the ST morpho connector CN11 Pin 6 (5V, 1.3) + - CHGR from a USB charger via the ST-LINK USB connector + - USB_USER from the USB user connector (5V, 3A) + - 3V3_EXT supplied via a pin header CN8 pin 7 or CN11 pin 16 (3.3V, 1.3A) + +- On-board ST-LINK/V3EC debugger/programmer + + - mass storage + - Virtual COM port + - debug port + +- Three users LEDs +- Two push-buttons: USER and RESET +- 32.789 kHz crystal oscillator + +More information about the board can be found at the `NUCLEO_H563ZI website`_. + +.. image:: img/nucleo_h563zi.jpg + :align: center + :alt: NUCLEO H563ZI + +Hardware +******** + +The STM32H563xx devices are high-performance microcontrollers from the STM32H5 +Series based on the high-performance Arm |reg| Cortex |reg|-M33 32-bit RISC core. +They operate at a frequency of up to 250 MHz. + +- Core: ARM |reg| 32-bit Cortex |reg| -M33 CPU with TrustZone |reg| and FPU. +- Performance benchmark: + + - 375 DMPIS/MHz (Dhrystone 2.1) + +- Security + + - Arm |reg| TrustZone |reg| with ARMv8-M mainline security extension + - Up to 8 configurable SAU regions + - TrustZone |reg| aware and securable peripherals + - Flexible lifecycle scheme with secure debug authentication + - SFI (secure firmware installation) + - Secure firmware upgrade support with TF-M + - HASH hardware accelerator + - True random number generator, NIST SP800-90B compliant + - 96-bit unique ID + - Active tampers + +- Clock management: + + - 25 MHz crystal oscillator (HSE) + - 32 kHz crystal oscillator for RTC (LSE) + - Internal 64 MHz (HSI) trimmable by software + - Internal low-power 32 kHz RC (LSI)( |plusminus| 5%) + - Internal 4 MHz oscillator (CSI), trimmable by software + - Internal 48 MHz (HSI48) with recovery system + - 3 PLLs for system clock, USB, audio, ADC + +- Power management + + - Embedded regulator (LDO) with three configurable range output to supply the digital circuitry + - Embedded SMPS step-down converter + +- RTC with HW calendar, alarms and calibration +- Up to 139 fast I/Os, most 5 V-tolerant, up to 10 I/Os with independent supply down to 1.08 V +- Up to 16 timers and 2 watchdogs + + - 12x 16-bit + - 2x 32-bit timers with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input + - 6x 16-bit low-power 16-bit timers (available in Stop mode) + - 2x watchdogs + - 2x SysTick timer + +- Memories + + - Up to 2 MB Flash, 2 banks read-while-write + - 1 Kbyte OTP (one-time programmable) + - 640 KB of SRAM including 64 KB with hardware parity check and 320 Kbytes with flexible ECC + - 4 Kbytes of backup SRAM available in the lowest power modes + - Flexible external memory controller with up to 16-bit data bus: SRAM, PSRAM, FRAM, SDRAM/LPSDR SDRAM, NOR/NAND memories + - 1x OCTOSPI memory interface with on-the-fly decryption and support for serial PSRAM/NAND/NOR, Hyper RAM/Flash frame formats + - 2x SD/SDIO/MMC interfaces + +- Rich analog peripherals (independent supply) + + - 2x 12-bit ADC with up to 5 MSPS in 12-bit + - 1x 12-bit D/A with 2 channels + - 1x Digital temperature sensor + +- 34x communication interfaces + + - 1x USB Type-C / USB power-delivery controller + - 1x USB 2.0 full-speed host and device + - 4x I2C FM+ interfaces (SMBus/PMBus) + - 1x I3C interface + - 12x U(S)ARTS (ISO7816 interface, LIN, IrDA, modem control) + - 1x LP UART + - 6x SPIs including 3 muxed with full-duplex I2S + - 5x additional SPI from 5x USART when configured in Synchronous mode + - 2x SAI + - 2x FDCAN + - 1x SDMMC interface + - 2x 16 channel DMA controllers + - 1x 8- to 14- bit camera interface + - 1x HDMI-CEC + - 1x Ethernel MAC interface with DMA controller + - 1x 16-bit parallel slave synchronous-interface + +- CORDIC for trigonometric functions acceleration +- FMAC (filter mathematical accelerator) +- CRC calculation unit +- Development support: serial wire debug (SWD), JTAG, Embedded Trace Macrocell |trade| + +More information about STM32H563ZI can be found here: + +- `STM32H563ZI on www.st.com`_ +- `STM32H563 reference manual`_ + +Supported Features +================== + +The Zephyr nucleo_h563zi board configuration supports the following hardware features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| ADC | on-chip | ADC Controller | ++-----------+------------+-------------------------------------+ +| CLOCK | on-chip | reset and clock control | ++-----------+------------+-------------------------------------+ +| DAC | on-chip | DAC Controller | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| PWM | on-chip | PWM | ++-----------+------------+-------------------------------------+ +| RNG | on-chip | True Random number generator | ++-----------+------------+-------------------------------------+ +| RTC | on-chip | Real Time Clock | ++-----------+------------+-------------------------------------+ +| SPI | on-chip | spi bus | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port-polling; | +| | | serial port-interrupt | ++-----------+------------+-------------------------------------+ +| WATCHDOG | on-chip | independent watchdog | ++-----------+------------+-------------------------------------+ + + +Other hardware features are not yet supported on this Zephyr port. + +The default configuration can be found in the defconfig and dts files: + +- Secure target: + + - :zephyr_file:`boards/arm/nucleo_h563zi/nucleo_h563zi_defconfig` + - :zephyr_file:`boards/arm/nucleo_h563zi/nucleo_h563zi.dts` + +Zephyr board options +==================== + +The STM32H563 is an SoC with Cortex-M33 architecture. Zephyr provides support +for building for Secure firmware. + +The BOARD options are summarized below: + ++----------------------+-----------------------------------------------+ +| BOARD | Description | ++======================+===============================================+ +| nucleo_h563zi | For building Secure firmware | ++----------------------+-----------------------------------------------+ + +Connections and IOs +=================== + +Nucleo H563ZI Board has 9 GPIO controllers. These controllers are responsible for pin muxing, +input/output, pull-up, etc. + +For mode details please refer to `STM32H5 Nucleo-144 board User Manual`_. + +Default Zephyr Peripheral Mapping: +---------------------------------- + +- ADC1 channel 3 input: PA6 +- ADC1 channel 15 input: PA3 +- DAC1 channel 2 output: PA5 +- LD1 (green): PB0 +- LD2 (yellow): PF4 +- LD3 (red): PG4 +- LPUART1 TX/RX : PB6/PB7 (Arduino LPUART1) +- SPI1 SCK/MISO/MOSI/CS: PA5/PG9/PB5/PD14 +- UART3 TX/RX : PD8/PD9 (VCP) +- USER_PB : PC13 + +System Clock +------------ + +Nucleo H563ZI System Clock could be driven by internal or external oscillator, +as well as main PLL clock. By default System clock is driven by PLL clock at +240MHz, driven by 8MHz external clock provided from the STLINK-V3EC. + +Serial Port +----------- + +Nucleo H563ZI board has up to 12 U(S)ARTs. The Zephyr console output is assigned +to USART3. Default settings are 115200 8N1. + +Programming and Debugging +************************* + +Applications for the ``nucleo_h563zi`` board can be built and +flashed in the usual way (see :ref:`build_an_application` and +:ref:`application_run` for more details). + +Flashing +======== + +Nucleo H563ZI board includes an ST-LINK/V3EC embedded debug tool interface. +This probe allows to flash the board using various tools. + +Board is configured to be flashed using west STM32CubeProgrammer runner. +Installation of `STM32CubeProgrammer`_ is then required to flash the board. + +Alternatively, pyocd or jlink via an external probe can also be used to flash +and debug the board if west is told to use it as runner, which can be done by +passing either or ``-r pyocd``, or ``-r jlink``. + +For pyocd additional target information needs to be installed. +This can be done by executing the following commands. + +.. code-block:: console + + $ pyocd pack --update + $ pyocd pack --install stm32h5 + + +Flashing an application to Nucleo H563ZI +------------------------------------------ + +Connect the Nucleo H563ZI to your host computer using the USB port. +Then build and flash an application. Here is an example for the +:ref:`hello_world` application. + +Run a serial host program to connect with your Nucleo board: + +.. code-block:: console + + $ minicom -D /dev/ttyACM0 + +Then build and flash the application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: nucleo_h563zi + :goals: build flash + +You should see the following message on the console: + +.. code-block:: console + + Hello World! nucleo_h563zi + +Debugging +========= + +You can debug an application in the usual way. Here is an example for the +:ref:`blinky-sample` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: nucleo_h563zi + :goals: debug + +.. _NUCLEO_H563ZI website: + https://www.st.com/en/evaluation-tools/nucleo-h563zi + +.. _STM32H5 Nucleo-144 board User Manual: + https://www.st.com/resource/en/user_manual/um3115-stm32h5-nucleo144-board-mb1404-stmicroelectronics.pdf + +.. _STM32H563ZI on www.st.com: + http://www.st.com/en/microcontrollers/stm32h563zi.html + +.. _STM32H563 reference manual: + https://www.st.com/resource/en/reference_manual/rm0481-stm32h563h573-and-stm32h562-armbased-32bit-mcus-stmicroelectronics.pdf + +.. _STM32CubeProgrammer: + https://www.st.com/en/development-tools/stm32cubeprog.html diff --git a/boards/arm/nucleo_h563zi/nucleo_h563zi-common.dtsi b/boards/arm/nucleo_h563zi/nucleo_h563zi-common.dtsi new file mode 100644 index 00000000000..22093665f93 --- /dev/null +++ b/boards/arm/nucleo_h563zi/nucleo_h563zi-common.dtsi @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2021 Linaro Limited + * Copyright (c) 2023 Thomas Stranger + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include "arduino_r3_connector.dtsi" + +/ { + leds { + compatible = "gpio-leds"; + green_led_1: led_1 { + gpios = <&gpiob 0 GPIO_ACTIVE_HIGH>; + label = "User LD1"; + }; + yellow_led_1: led_2 { + gpios = <&gpiof 4 GPIO_ACTIVE_HIGH>; + label = "User LD2"; + }; + red_led_1: led_3 { + gpios = <&gpiog 4 GPIO_ACTIVE_HIGH>; + label = "User LD3"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + user_button: button { + label = "User"; + gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>; + }; + }; + + pwmleds: pwmleds { + compatible = "pwm-leds"; + status = "disabled"; + + pwm_led_1: green_led_1 { + pwms = <&pwm3 3 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + label = "green led"; + }; + }; +}; + +&clk_hse { + clock-frequency = ; /* STLink 8MHz clock */ + hse-bypass; + status = "okay"; +}; + +&clk_hsi48 { + status = "okay"; +}; + +&clk_lse { + status = "okay"; +}; + +&pll { + div-m = <2>; + mul-n = <120>; + div-p = <2>; + div-q = <2>; + div-r = <2>; + clocks = <&clk_hse>; + status = "okay"; +}; + +&rcc { + clocks = <&pll>; + clock-frequency = ; + ahb-prescaler = <1>; + apb1-prescaler = <1>; + apb2-prescaler = <1>; + apb3-prescaler = <1>; +}; + +&lpuart1 { + pinctrl-0 = <&lpuart1_tx_pb6 &lpuart1_rx_pb7>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart3 { + pinctrl-0 = <&usart3_tx_pd8 &usart3_rx_pd9>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&spi1 { + pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pg9 &spi1_mosi_pb5>; + pinctrl-names = "default"; + cs-gpios = <&gpiod 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + status = "okay"; +}; + +&timers3 { + st,prescaler = <10000>; + status = "okay"; + + pwm3: pwm { + status = "okay"; + pinctrl-0 = <&tim3_ch3_pb0>; + pinctrl-names = "default"; + }; +}; + +&rtc { + clocks = <&rcc STM32_CLOCK_BUS_APB3 0x00200000>, + <&rcc STM32_SRC_LSE RTC_SEL(1)>; + status = "okay"; +}; + +&iwdg { + status = "okay"; +}; + +&gpdma1 { + status = "okay"; +}; + +&gpdma2 { + status = "okay"; +}; + +&dac1 { + /* outputs only on 2 pins and pa4 is reserved for VBUS_SENSE */ + pinctrl-0 = <&dac1_out2_pa5>; /* Zio D13 (on CN7) */ + pinctrl-names = "default"; + status = "okay"; +}; + +&adc1 { + pinctrl-0 = <&adc1_inp3_pa6 &adc1_inp15_pa3>; /* Zio A0, Zio D35 */ + pinctrl-names = "default"; + status = "okay"; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x00000000 DT_SIZE_K(64)>; + }; + slot0_partition: partition@10000 { + label = "image-0"; + reg = <0x00010000 DT_SIZE_K(960)>; + }; + slot1_partition: partition@100000 { + label = "image-1"; + reg = <0x00100000 DT_SIZE_K(960)>; + }; + storage_partition: partition@1f0000 { + label = "storage"; + reg = <0x001f0000 DT_SIZE_K(64)>; + }; + }; +}; diff --git a/boards/arm/nucleo_h563zi/nucleo_h563zi.dts b/boards/arm/nucleo_h563zi/nucleo_h563zi.dts new file mode 100644 index 00000000000..1a30889ea03 --- /dev/null +++ b/boards/arm/nucleo_h563zi/nucleo_h563zi.dts @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021 Linaro Limited + * Copyright (c) 2023 Thomas Stranger + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include "nucleo_h563zi-common.dtsi" + +/ { + model = "STMicroelectronics STM32H563ZI-NUCLEO board"; + compatible = "st,stm32h563zi-nucleo"; + + #address-cells = <1>; + #size-cells = <1>; + + chosen { + zephyr,console = &usart3; + zephyr,shell-uart = &usart3; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + }; + + aliases { + led0 = &green_led_1; + sw0 = &user_button; + watchdog0 = &iwdg; + pwm-led0 = &pwm_led_1; + }; +}; + +&rng { + status = "okay"; +}; diff --git a/boards/arm/nucleo_h563zi/nucleo_h563zi.yaml b/boards/arm/nucleo_h563zi/nucleo_h563zi.yaml new file mode 100644 index 00000000000..39ce37e4f77 --- /dev/null +++ b/boards/arm/nucleo_h563zi/nucleo_h563zi.yaml @@ -0,0 +1,21 @@ +identifier: nucleo_h563zi +name: ST Nucleo H563ZI +type: mcu +arch: arm +toolchain: + - zephyr +ram: 640 +flash: 2048 +supported: + - arduino_gpio + - gpio + - arduino_serial + - arduino_spi + - gpio + - uart + - entropy + - adc + - dac + - pwm + - counter + - spi diff --git a/boards/arm/nucleo_h563zi/nucleo_h563zi_defconfig b/boards/arm/nucleo_h563zi/nucleo_h563zi_defconfig new file mode 100644 index 00000000000..a14e2d48eec --- /dev/null +++ b/boards/arm/nucleo_h563zi/nucleo_h563zi_defconfig @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SOC_SERIES_STM32H5X=y +CONFIG_SOC_STM32H563XX=y + +# enable uart driver +CONFIG_SERIAL=y + +# console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable clock +CONFIG_CLOCK_CONTROL=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + +# enable GPIO +CONFIG_GPIO=y +# enable pin controller +CONFIG_PINCTRL=y