From 36ba2b2ebe5b210af1d4b0497261e504c52a82e6 Mon Sep 17 00:00:00 2001 From: Wajdi ELMuhtadi Date: Fri, 13 Dec 2024 14:21:41 +0100 Subject: [PATCH] boards: we: add Oceanus-I EV board Add support for Oceanus-I EV board from WE. Signed-off-by: Wajdi ELMuhtadi --- boards/we/oceanus1ev/Kconfig.defconfig | 13 ++ boards/we/oceanus1ev/Kconfig.we_oceanus1ev | 5 + boards/we/oceanus1ev/board.cmake | 5 + boards/we/oceanus1ev/board.yml | 12 ++ .../we/oceanus1ev/doc/img/we_oceanus1ev.webp | Bin 0 -> 44180 bytes boards/we/oceanus1ev/doc/index.rst | 105 +++++++++++++ boards/we/oceanus1ev/we_oceanus1ev.dts | 145 ++++++++++++++++++ boards/we/oceanus1ev/we_oceanus1ev_1_1_0.yaml | 21 +++ boards/we/oceanus1ev/we_oceanus1ev_defconfig | 15 ++ 9 files changed, 321 insertions(+) create mode 100644 boards/we/oceanus1ev/Kconfig.defconfig create mode 100644 boards/we/oceanus1ev/Kconfig.we_oceanus1ev create mode 100644 boards/we/oceanus1ev/board.cmake create mode 100644 boards/we/oceanus1ev/board.yml create mode 100644 boards/we/oceanus1ev/doc/img/we_oceanus1ev.webp create mode 100644 boards/we/oceanus1ev/doc/index.rst create mode 100644 boards/we/oceanus1ev/we_oceanus1ev.dts create mode 100644 boards/we/oceanus1ev/we_oceanus1ev_1_1_0.yaml create mode 100644 boards/we/oceanus1ev/we_oceanus1ev_defconfig diff --git a/boards/we/oceanus1ev/Kconfig.defconfig b/boards/we/oceanus1ev/Kconfig.defconfig new file mode 100644 index 00000000000..d644612b5e6 --- /dev/null +++ b/boards/we/oceanus1ev/Kconfig.defconfig @@ -0,0 +1,13 @@ +# Copyright (c) 2025 Würth Elektronik eiSos GmbH & Co. KG +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_WE_OCEANUS1EV + +if LORA + +config MAIN_STACK_SIZE + default 2048 + +endif # LORA + +endif # BOARD_WE_OCEANUS1EV diff --git a/boards/we/oceanus1ev/Kconfig.we_oceanus1ev b/boards/we/oceanus1ev/Kconfig.we_oceanus1ev new file mode 100644 index 00000000000..67f92ed7cdc --- /dev/null +++ b/boards/we/oceanus1ev/Kconfig.we_oceanus1ev @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Würth Elektronik eiSos GmbH & Co. KG +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_WE_OCEANUS1EV + select SOC_STM32WLE5XX diff --git a/boards/we/oceanus1ev/board.cmake b/boards/we/oceanus1ev/board.cmake new file mode 100644 index 00000000000..4cba054c8a5 --- /dev/null +++ b/boards/we/oceanus1ev/board.cmake @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=STM32WLE5CC" "--speed=4000" "--reset-after-load") + +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/we/oceanus1ev/board.yml b/boards/we/oceanus1ev/board.yml new file mode 100644 index 00000000000..35c0780bdda --- /dev/null +++ b/boards/we/oceanus1ev/board.yml @@ -0,0 +1,12 @@ +board: + name: we_oceanus1ev + full_name: Oceanus-I EV + vendor: we + revision: + format: "major.minor.patch" + default: "1.1.0" + exact: true + revisions: + - name: "1.1.0" + socs: + - name: stm32wle5xx diff --git a/boards/we/oceanus1ev/doc/img/we_oceanus1ev.webp b/boards/we/oceanus1ev/doc/img/we_oceanus1ev.webp new file mode 100644 index 0000000000000000000000000000000000000000..92eade76cdb8c89c8a02e9937384dc27a61a5485 GIT binary patch literal 44180 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 ANB{r; literal 0 HcmV?d00001 diff --git a/boards/we/oceanus1ev/doc/index.rst b/boards/we/oceanus1ev/doc/index.rst new file mode 100644 index 00000000000..1ccb459e328 --- /dev/null +++ b/boards/we/oceanus1ev/doc/index.rst @@ -0,0 +1,105 @@ +.. zephyr:board:: we_oceanus1ev + +Overview +******** + +The we_oceanus1ev board is an evaluation board of the `Oceanus-I`_ radio module. +It provides support for the `STM32WLE5CC`_ ARM CPU and +the following devices: + +* CLOCK +* FLASH +* :abbr:`GPIO (General Purpose Input Output)` +* :abbr:`I2C (Inter-Integrated Circuit)` +* :abbr:`NVIC (Nested Vectored Interrupt Controller)` +* RADIO (LoRa) +* :abbr:`RTC (STM32 RTC System Clock)` +* :abbr:`SPI (Serial Peripheral Interface)` +* :abbr:`UART (Universal asynchronous receiver-transmitter)` +* :abbr:`WDT (Watchdog Timer)` + +Hardware +******** + +The board has below hardware features: + +- `Oceanus-I`_, 256KB Flash, 64KB RAM with external antenna +- 1 FTDI chip (USB to UART) converter +- 1 I2C WE sensor EV-Boards connector +- 1 SPI WE sensor EV-Boards connector +- 2 application LEDs +- 1 application, and 1 reset push-button + +Supported Features +================== + +The ``we_oceanus1ev`` board supports the following +hardware features: + ++-----------+------------+----------------------+ +| Interface | Controller | Driver/Component | ++===========+============+======================+ +| CLOCK | on-chip | clock_control | ++-----------+------------+----------------------+ +| FLASH | on-chip | flash | ++-----------+------------+----------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+----------------------+ +| I2C(M) | on-chip | i2c | ++-----------+------------+----------------------+ +| MPU | on-chip | arch/arm | ++-----------+------------+----------------------+ +| NVIC | on-chip | arch/arm | ++-----------+------------+----------------------+ +| RADIO | on-chip | LoRa | ++-----------+------------+----------------------+ +| RTC | on-chip | system clock | ++-----------+------------+----------------------+ +| SPI(M/S) | on-chip | spi | ++-----------+------------+----------------------+ +| UART | on-chip | serial | ++-----------+------------+----------------------+ +| WDT | on-chip | watchdog | ++-----------+------------+----------------------+ + +Programming and Debugging +************************* + +Applications for the ``we_oceanus1ev`` board can be built the +usual way (see :ref:`build_an_application`). + +The board debugged and flashed with an external debug probe connected +to the SWD pins, current native support is for the JLink debug probe. + +Flashing +======== + +Connect the board to your host computer and build and flash an application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: we_oceanus1ev + :goals: build flash + +Run a serial terminal to connect with your board. By default, ``lpuart1`` is +accessible via the on-board FTDI USB to UART converter. + +Debugging +========= + +You can debug an application in the usual way. Here is an example for the +:zephyr:code-sample:`blinky` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: we_oceanus1ev + :maybe-skip-config: + :goals: debug + +References +********** + +.. target-notes:: + +.. _`Oceanus-I`: https://www.we-online.com/katalog/de/OCEANUS-I +.. _`STM32WLE5CC`: https://www.st.com/en/microcontrollers-microprocessors/stm32wle5cc.html diff --git a/boards/we/oceanus1ev/we_oceanus1ev.dts b/boards/we/oceanus1ev/we_oceanus1ev.dts new file mode 100644 index 00000000000..a861c63d0e4 --- /dev/null +++ b/boards/we/oceanus1ev/we_oceanus1ev.dts @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2025 Würth Elektronik eiSos GmbH & Co. KG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include + +/ { + model = "Oceanus-I EV"; + compatible = "we,oceanus1ev"; + + chosen { + zephyr,console = &lpuart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + }; + + leds { + compatible = "gpio-leds"; + + yellow_led: led_1 { + gpios = <&gpioa 7 GPIO_ACTIVE_HIGH>; + label = "LED_1"; + }; + + blue_led: led_2 { + gpios = <&gpioa 4 GPIO_ACTIVE_HIGH>; + label = "LED_2"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + + wake_up_button: button_0 { + label = "/WAKE_UP"; + gpios = <&gpioa 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + zephyr,code = ; + }; + }; + + aliases { + led0 = &yellow_led; + led1 = &blue_led; + sw0 = &wake_up_button; + lora0 = &lora; + watchdog0 = &iwdg; + }; +}; + +stm32_lp_tick_source: &lptim1 { + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x80000000>, + <&rcc STM32_SRC_LSE LPTIM1_SEL(3)>; + status = "okay"; +}; + +&clk_lsi { + status = "okay"; +}; + +&pll { + div-m = <1>; + mul-n = <6>; + div-r = <2>; + div-q = <2>; + clocks = <&clk_hsi>; + status = "okay"; +}; + +&iwdg { + status = "okay"; +}; + +&rcc { + clocks = <&pll>; + clock-frequency = ; + cpu1-prescaler = <1>; + ahb3-prescaler = <1>; + apb1-prescaler = <1>; + apb2-prescaler = <1>; +}; + +&lpuart1 { + pinctrl-0 = <&lpuart1_tx_pa2 &lpuart1_rx_pa3>; + pinctrl-names = "default"; + current-speed = <9600>; + status = "okay"; +}; + +&usart1 { + pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&i2c1 { + pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb7>; + pinctrl-names = "default"; + status = "okay"; + clock-frequency = ; +}; + +&spi1 { + pinctrl-0 = <&spi1_sck_pb3 &spi1_miso_pb4 &spi1_mosi_pb5>; + pinctrl-names = "default"; + cs-gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; + status = "okay"; +}; + +&rtc { + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000400>, + <&rcc STM32_SRC_LSE RTC_SEL(2)>; + status = "okay"; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x00000000 DT_SIZE_K(32)>; + read-only; + }; + slot0_partition: partition@8000 { + label = "image-0"; + reg = <0x00008000 DT_SIZE_K(108)>; + }; + slot1_partition: partition@23000 { + label = "image-1"; + reg = <0x00023000 DT_SIZE_K(108)>; + }; + storage_partition: partition@3e000 { + label = "storage"; + reg = <0x0003e000 DT_SIZE_K(8)>; + }; + }; +}; diff --git a/boards/we/oceanus1ev/we_oceanus1ev_1_1_0.yaml b/boards/we/oceanus1ev/we_oceanus1ev_1_1_0.yaml new file mode 100644 index 00000000000..600d75ac2bc --- /dev/null +++ b/boards/we/oceanus1ev/we_oceanus1ev_1_1_0.yaml @@ -0,0 +1,21 @@ +# Copyright (c) 2025 Würth Elektronik eiSos GmbH & Co. KG +# SPDX-License-Identifier: Apache-2.0 + +identifier: we_oceanus1ev@1.1.0 +name: Oceanus-I EV (rev 1.1) +type: mcu +arch: arm +toolchain: + - zephyr +ram: 64 +flash: 256 +supported: + - counter + - gpio + - i2c + - nvs + - spi + - uart + - watchdog + - lora +vendor: we diff --git a/boards/we/oceanus1ev/we_oceanus1ev_defconfig b/boards/we/oceanus1ev/we_oceanus1ev_defconfig new file mode 100644 index 00000000000..dddce979cc9 --- /dev/null +++ b/boards/we/oceanus1ev/we_oceanus1ev_defconfig @@ -0,0 +1,15 @@ +# Enable UART driver +CONFIG_SERIAL=y + +# Enable GPIO +CONFIG_GPIO=y + +# Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y