From 0b5e915b9dac0667f847d085e04afa7735ee77ba Mon Sep 17 00:00:00 2001 From: IBEN EL HADJ MESSAOUD Marwa Date: Mon, 22 Jul 2024 15:00:10 +0200 Subject: [PATCH] boards: st: Add nucleo_u083rc board support Add board support for nucleo_u083rc Signed-off-by: IBEN EL HADJ MESSAOUD Marwa --- boards/st/nucleo_u083rc/Kconfig.nucleo_u083rc | 5 + .../nucleo_u083rc/arduino_r3_connector.dtsi | 38 +++ boards/st/nucleo_u083rc/board.cmake | 9 + boards/st/nucleo_u083rc/board.yml | 5 + .../nucleo_u083rc/doc/img/nucleo_u083rc.jpg | Bin 0 -> 56224 bytes boards/st/nucleo_u083rc/doc/index.rst | 274 ++++++++++++++++++ boards/st/nucleo_u083rc/nucleo_u083rc.dts | 83 ++++++ boards/st/nucleo_u083rc/nucleo_u083rc.yaml | 12 + .../st/nucleo_u083rc/nucleo_u083rc_defconfig | 24 ++ .../st/nucleo_u083rc/st_morpho_connector.dtsi | 67 +++++ 10 files changed, 517 insertions(+) create mode 100644 boards/st/nucleo_u083rc/Kconfig.nucleo_u083rc create mode 100644 boards/st/nucleo_u083rc/arduino_r3_connector.dtsi create mode 100644 boards/st/nucleo_u083rc/board.cmake create mode 100644 boards/st/nucleo_u083rc/board.yml create mode 100644 boards/st/nucleo_u083rc/doc/img/nucleo_u083rc.jpg create mode 100644 boards/st/nucleo_u083rc/doc/index.rst create mode 100644 boards/st/nucleo_u083rc/nucleo_u083rc.dts create mode 100644 boards/st/nucleo_u083rc/nucleo_u083rc.yaml create mode 100644 boards/st/nucleo_u083rc/nucleo_u083rc_defconfig create mode 100644 boards/st/nucleo_u083rc/st_morpho_connector.dtsi diff --git a/boards/st/nucleo_u083rc/Kconfig.nucleo_u083rc b/boards/st/nucleo_u083rc/Kconfig.nucleo_u083rc new file mode 100644 index 00000000000..fee320c2916 --- /dev/null +++ b/boards/st/nucleo_u083rc/Kconfig.nucleo_u083rc @@ -0,0 +1,5 @@ +# Copyright (c) 2024 STMicroelectronics +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_NUCLEO_U083RC + select SOC_STM32U083XX diff --git a/boards/st/nucleo_u083rc/arduino_r3_connector.dtsi b/boards/st/nucleo_u083rc/arduino_r3_connector.dtsi new file mode 100644 index 00000000000..cb596a6c00a --- /dev/null +++ b/boards/st/nucleo_u083rc/arduino_r3_connector.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 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 0 0>, /* A0 */ + <1 0 &gpioa 1 0>, /* A1 */ + <2 0 &gpioa 4 0>, /* A2 */ + <3 0 &gpiob 0 0>, /* A3 */ + <4 0 &gpioc 1 0>, /* A4 */ + <5 0 &gpioc 0 0>, /* A5 */ + <6 0 &gpioa 3 0>, /* D0 */ + <7 0 &gpioa 2 0>, /* D1 */ + <8 0 &gpioa 10 0>, /* D2 */ + <9 0 &gpiob 3 0>, /* D3 */ + <10 0 &gpiob 5 0>, /* D4 */ + <11 0 &gpiob 4 0>, /* D5 */ + <12 0 &gpiob 10 0>, /* D6 */ + <13 0 &gpioa 8 0>, /* D7 */ + <14 0 &gpioa 9 0>, /* D8 */ + <15 0 &gpioc 7 0>, /* D9 */ + <16 0 &gpiob 6 0>, /* D10 */ + <17 0 &gpioa 7 0>, /* D11 */ + <18 0 &gpioa 6 0>, /* D12 */ + <19 0 &gpioa 5 0>, /* D13 */ + <20 0 &gpiob 9 0>, /* D14 */ + <21 0 &gpiob 8 0>; /* D15 */ + }; +}; + +arduino_serial: &usart2 {}; diff --git a/boards/st/nucleo_u083rc/board.cmake b/boards/st/nucleo_u083rc/board.cmake new file mode 100644 index 00000000000..d969b9dff1a --- /dev/null +++ b/boards/st/nucleo_u083rc/board.cmake @@ -0,0 +1,9 @@ +board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") + +board_runner_args(pyocd "--target=stm32u083rctx") + +board_runner_args(jlink "--device=STM32U083RC" "--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/st/nucleo_u083rc/board.yml b/boards/st/nucleo_u083rc/board.yml new file mode 100644 index 00000000000..65d9734b288 --- /dev/null +++ b/boards/st/nucleo_u083rc/board.yml @@ -0,0 +1,5 @@ +board: + name: nucleo_u083rc + vendor: st + socs: + - name: stm32u083xx diff --git a/boards/st/nucleo_u083rc/doc/img/nucleo_u083rc.jpg b/boards/st/nucleo_u083rc/doc/img/nucleo_u083rc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ecb54648626658530a8b994fd11cde00fac8041f GIT binary patch literal 56224 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 literal 0 HcmV?d00001 diff --git a/boards/st/nucleo_u083rc/doc/index.rst b/boards/st/nucleo_u083rc/doc/index.rst new file mode 100644 index 00000000000..6786c30ffdd --- /dev/null +++ b/boards/st/nucleo_u083rc/doc/index.rst @@ -0,0 +1,274 @@ +.. _nucleo_u083rc_board: + +ST Nucleo U083RC +################ + +Overview +******** + +The Nucleo U083RC board, featuring an ARM Cortex-M0+ based STM32U083RC MCU, +provides an affordable and flexible way for users to try out new concepts and +build prototypes by choosing from the various combinations of performance and +power consumption features. Here are some highlights of the Nucleo U083RC +board: + + +- STM32U083RC microcontroller in LQFP64 package +- Two types of extension resources: + + - Arduino Uno V3 connectivity + - ST morpho extension pin headers for full access to all STM32U0 I/Os + +- On-board STLINK-V2EC debugger/programmer with USB re-enumeration + capability: mass storage, Virtual COM port, and debug port +- Flexible board power supply: + + - USB VBUS or external source(3.3V, 5V, 7 - 12V) + +- User LED shared with ARDUINO |reg| Uno V3 +- Two push-buttons: USER and RESET +- USB Type-C |reg| connector for the ST-LINK + +Hardware +******** + +The STM32U083xC devices are an ultra-low-power microcontrollers family (STM32U0 +Series) based on the high-performance Arm |reg| Cortex |reg|-M0+ 32-bit RISC core. +They operate at a frequency of up to 56 MHz. + +- Includes ST state-of-the-art patented technology +- Ultra-low-power with FlexPowerControl: + + - 1.71 V to 3.6 V power supply + - -40 °C to +85/125 °C temperature range + - 130 nA VBAT mode: supply for RTC, 9 x 32-bit backup registers + - 16 nA Shutdown mode (6 wake-up pins) + - 30 nA Standby mode (6 wake-up pins) without RTC + - 160 nA Standby mode with RTC + - 825 nA Stop 2 mode with RTC + - 695 nA Stop 2 mode without RTC + - 4 µA wake-up from Stop mode + - 52 µA/MHz Run mode + - Brownout reset + +- Core: + + - 32-bit Arm |reg| Cortex |reg|-M0+ CPU, frequency up to 56 MHz + +- ART Accelerator: + + - 1-Kbyte instruction cache allowing 0-wait-state execution from flash memory + +- Benchmarks: + + - 1.13 DMIPS/MHz (Drystone 2.1) + - 134 CoreMark |reg| (2.4 CoreMark/MHz at 56 MHz) + - 407 ULPMark™-CP + - 143 ULPMark™-PP + - 19.7 ULPMark™-CM + +- Memories: + + - 256-Kbyte single bank flash memory, proprietary code readout protection + - 40-Kbyte SRAM with hardware parity check + +- General-purpose input/outputs: + + - Up to 69 fast I/Os, most of them 5 V‑tolerant + +- Clock management: + + - 4 to 48 MHz crystal oscillator + - 32 kHz crystal oscillator for RTC (LSE) + - Internal 16 MHz factory-trimmed RC (±1%) + - Internal low-power 32 kHz RC (±5%) + - Internal multispeed 100 kHz to 48 MHz oscillator, + auto-trimmed by LSE (better than ±0.25 % accuracy) + - Internal 48 MHz with clock recovery + - PLL for system clock, USB, ADC + +- Security: + + - Customer code protection + - Robust read out protection (RDP): 3 protection level states + and password-based regression (128-bit PSWD) + - Hardware protection feature (HDP) + - Secure boot + - AES: 128/256-bit key encryption hardware accelerator + - True random number generation, candidate for NIST SP 800-90B certification + - Candidate for Arm |reg| PSA level 1 and SESIP level 3 certifications + - 5 passive anti-tamper pins + - 96-bit unique ID + +- Up to 10 timers, 2 watchdogs and RTC: + + - 1x 16-bit advanced motor-control, 1x 32-bit and 3x 16-bit general purpose, + 2x 16-bit basic, 3x low-power 16-bit timers (available in Stop mode), + 2x watchdogs, SysTick timer + - RTC with hardware calendar, alarms and calibration + +- Up to 20 communication peripherals: + + - 1 USB 2.0 full-speed crystal-less solution with LPM and BCD + - 7 USARTs/LPUARTs (SPI, ISO 7816, LIN, IrDA, modem) + - 4 I2C interfaces supporting Fast-mode and Fast-mode Plus (up to 1 Mbit/s) + - 3 SPIs, plus 4x USARTs in SPI mode + - IRTIM (Infrared interface) + +- Rich analog peripherals (independent supply): + + - 1x 12-bit ADC (0.4 µs conversion time), up to 16-bit with hardware oversampling + - 1x 12-bit DAC output channel, low-power sample and hold + - 1x general-purpose operational amplifier with built-in PGA (variable gain up to 16) + - 2x ultra-low-power comparators + +- ECOPACK2 compliant packages + +More information about STM32U083RC can be found here: + +- `STM32U083RC on www.st.com`_ +- `STM32U083 reference manual`_ + +Supported Features +================== + +The Zephyr nucleo_u083rc board configuration supports the following hardware features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| CLOCK | on-chip | reset and clock control | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port-polling; | +| | | serial port-interrupt | ++-----------+------------+-------------------------------------+ + + +Other hardware features are not yet supported on this Zephyr port. + +The default configuration can be found in the defconfig file: +:zephyr_file:`boards/st/nucleo_u083rc/nucleo_u083rc_defconfig` + + +Connections and IOs +=================== + +Nucleo U083RC Board has 10 GPIO controllers. These controllers are responsible +for pin muxing, input/output, pull-up, etc. + +For more details please refer to `STM32U083 User Manual`_. + +Default Zephyr Peripheral Mapping: +---------------------------------- + +- DAC1_OUT1 : PA4 +- I2C1_SCL : PB8 +- I2C1_SDA : PB9 +- LPUART_1_TX : PG7 +- LPUART_1_RX : PG8 +- SPI1_NSS : PA4 +- SPI1_SCK : PA5 +- SPI1_MISO : PA6 +- SPI1_MOSI : PA7 +- UART_2_TX : PA2 +- UART_2_RX : PA3 +- USER_PB : PC13 + +System Clock +------------ + +Nucleo U083RC 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 +48MHz, driven by 4MHz medium speed internal oscillator. + +Serial Port +----------- + +Nucleo U083RC board has 7 U(S)ARTs. The Zephyr console output is assigned to +USART2. Default settings are 115200 8N1. + + +Programming and Debugging +************************* + +Nucleo U083RC board includes an ST-LINK/V3 embedded debug tool interface. +This probe allows to flash the board using various tools. + +Flashing +======== + +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 stm32u0 + + +Flashing an application to Nucleo U083RC +------------------------------------------ + +Connect the Nucleo U083RC 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_u083rc + :goals: build flash + +You should see the following message on the console: + +.. code-block:: console + + Hello World! nucleo_u083rc/stm32u083xx + +Debugging +========= + +Default flasher for this board is openocd. It could be used in the usual way. +Here is an example for the :zephyr:code-sample:`blinky` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: nucleo_u083rc + :goals: debug + +Note: Check the ``build/tfm`` directory to ensure that the commands required by these scripts +(``readlink``, etc.) are available on your system. Please also check ``STM32_Programmer_CLI`` +(which is used for initialization) is available in the PATH. + +.. _NUCLEO_U083RC website: + https://www.st.com/en/evaluation-tools/nucleo-u083rc.html + +.. _STM32U083 User Manual: + https://www.st.com/resource/en/user_manual/um3261-stm32u0-series-safety-manual-stmicroelectronics.pdf + +.. _STM32U083RC on www.st.com: + https://www.st.com/en/microcontrollers-microprocessors/stm32u083rc + +.. _STM32U083 reference manual: + https://www.st.com/resource/en/reference_manual/rm0503-stm32u0-series-advanced-armbased-32bit-mcus-stmicroelectronics.pdf + +.. _STM32CubeProgrammer: + https://www.st.com/en/development-tools/stm32cubeprog.html diff --git a/boards/st/nucleo_u083rc/nucleo_u083rc.dts b/boards/st/nucleo_u083rc/nucleo_u083rc.dts new file mode 100644 index 00000000000..ffa8d93aca1 --- /dev/null +++ b/boards/st/nucleo_u083rc/nucleo_u083rc.dts @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include "arduino_r3_connector.dtsi" +#include + +/ { + model = "STMicroelectronics STM32U83RC-NUCLEO board"; + compatible = "st,stm32u083rc-nucleo"; + + #address-cells = <1>; + #size-cells = <1>; + + chosen { + zephyr,console = &usart2; + zephyr,shell-uart = &usart2; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; + + leds: leds { + compatible = "gpio-leds"; + green_led_1: led_4 { + gpios = <&gpioa 5 GPIO_ACTIVE_HIGH>; + label = "User LD4"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + user_button: button { + label = "User"; + gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>; + zephyr,code = ; + }; + }; + + aliases { + led0 = &green_led_1; + sw0 = &user_button; + }; +}; + +&usart1 { + pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart2 { + pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&clk_hsi { + status = "okay"; +}; + +&pll { + div-m = <1>; + mul-n = <6>; + div-p = <2>; + div-q = <2>; + div-r = <2>; + clocks = <&clk_hsi>; + status = "okay"; +}; + +&rcc { + clocks = <&pll>; + clock-frequency = ; + ahb-prescaler = <1>; + apb1-prescaler = <1>; +}; diff --git a/boards/st/nucleo_u083rc/nucleo_u083rc.yaml b/boards/st/nucleo_u083rc/nucleo_u083rc.yaml new file mode 100644 index 00000000000..d8b1e17ee2c --- /dev/null +++ b/boards/st/nucleo_u083rc/nucleo_u083rc.yaml @@ -0,0 +1,12 @@ +identifier: nucleo_u083rc +name: ST Nucleo U083RC +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - gpio +ram: 40 +flash: 256 diff --git a/boards/st/nucleo_u083rc/nucleo_u083rc_defconfig b/boards/st/nucleo_u083rc/nucleo_u083rc_defconfig new file mode 100644 index 00000000000..579a5c3fc4e --- /dev/null +++ b/boards/st/nucleo_u083rc/nucleo_u083rc_defconfig @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + +# Serial Drivers +CONFIG_SERIAL=y +CONFIG_UART_INTERRUPT_DRIVEN=y + +# enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# GPIO Controller +CONFIG_GPIO=y + +# Enable Clocks +CONFIG_CLOCK_CONTROL=y + +# enable pin controller +CONFIG_PINCTRL=y diff --git a/boards/st/nucleo_u083rc/st_morpho_connector.dtsi b/boards/st/nucleo_u083rc/st_morpho_connector.dtsi new file mode 100644 index 00000000000..698937c5da1 --- /dev/null +++ b/boards/st/nucleo_u083rc/st_morpho_connector.dtsi @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + st_morpho_header: st-morpho-header { + compatible = "st-morpho-header"; + #gpio-cells = <2>; + gpio-map-mask = ; + gpio-map-pass-thru = <0x0 GPIO_DT_FLAGS_MASK>; + gpio-map = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + }; +};