From 378ef0bbdd6d143401226ba09ae46d60eb5df59f Mon Sep 17 00:00:00 2001 From: Erwan Gouriou Date: Thu, 21 Mar 2019 14:42:53 +0100 Subject: [PATCH] boards: Add support for nulceo_wb55rg Basic support for nucleo_wb55rg board. Signed-off-by: Erwan Gouriou --- boards/arm/nucleo_wb55rg/CMakeLists.txt | 3 + boards/arm/nucleo_wb55rg/Kconfig.board | 10 + boards/arm/nucleo_wb55rg/Kconfig.defconfig | 27 ++ boards/arm/nucleo_wb55rg/board.cmake | 1 + .../nucleo_wb55rg/doc/img/nucleowb55rg.jpg | Bin 0 -> 82423 bytes boards/arm/nucleo_wb55rg/doc/nucleowb55rg.rst | 267 ++++++++++++++++++ boards/arm/nucleo_wb55rg/nucleo_wb55rg.dts | 63 +++++ boards/arm/nucleo_wb55rg/nucleo_wb55rg.yaml | 12 + .../arm/nucleo_wb55rg/nucleo_wb55rg_defconfig | 36 +++ boards/arm/nucleo_wb55rg/pinmux.c | 33 +++ dts/arm/st/wb/stm32wb55Xg.dtsi | 30 ++ 11 files changed, 482 insertions(+) create mode 100644 boards/arm/nucleo_wb55rg/CMakeLists.txt create mode 100644 boards/arm/nucleo_wb55rg/Kconfig.board create mode 100644 boards/arm/nucleo_wb55rg/Kconfig.defconfig create mode 100644 boards/arm/nucleo_wb55rg/board.cmake create mode 100644 boards/arm/nucleo_wb55rg/doc/img/nucleowb55rg.jpg create mode 100644 boards/arm/nucleo_wb55rg/doc/nucleowb55rg.rst create mode 100644 boards/arm/nucleo_wb55rg/nucleo_wb55rg.dts create mode 100644 boards/arm/nucleo_wb55rg/nucleo_wb55rg.yaml create mode 100644 boards/arm/nucleo_wb55rg/nucleo_wb55rg_defconfig create mode 100644 boards/arm/nucleo_wb55rg/pinmux.c create mode 100644 dts/arm/st/wb/stm32wb55Xg.dtsi diff --git a/boards/arm/nucleo_wb55rg/CMakeLists.txt b/boards/arm/nucleo_wb55rg/CMakeLists.txt new file mode 100644 index 00000000000..a700f3c235d --- /dev/null +++ b/boards/arm/nucleo_wb55rg/CMakeLists.txt @@ -0,0 +1,3 @@ +zephyr_library() +zephyr_library_sources(pinmux.c) +zephyr_library_include_directories(${PROJECT_SOURCE_DIR}/drivers) diff --git a/boards/arm/nucleo_wb55rg/Kconfig.board b/boards/arm/nucleo_wb55rg/Kconfig.board new file mode 100644 index 00000000000..016d5e96bcc --- /dev/null +++ b/boards/arm/nucleo_wb55rg/Kconfig.board @@ -0,0 +1,10 @@ +# Kconfig - STM32WB55RG Nucleo board configuration +# +# Copyright (c) 2019 Linaro Limited +# +# SPDX-License-Identifier: Apache-2.0 +# + +config BOARD_NUCLEO_WB55RG + bool "Nucleo WB55RG Development Board" + depends on SOC_STM32WB55XG diff --git a/boards/arm/nucleo_wb55rg/Kconfig.defconfig b/boards/arm/nucleo_wb55rg/Kconfig.defconfig new file mode 100644 index 00000000000..d2548f9448f --- /dev/null +++ b/boards/arm/nucleo_wb55rg/Kconfig.defconfig @@ -0,0 +1,27 @@ +# Kconfig - STM32LWB55RG Nucleo board configuration +# +# Copyright (c) 2019 Linaro Limited +# +# SPDX-License-Identifier: Apache-2.0 +# + +if BOARD_NUCLEO_WB55RG + +config BOARD + default "nucleo_wb55rg" + +if UART_CONSOLE + +config UART_1 + default y + +endif # UART_CONSOLE + +if BT_DEBUG_MONITOR + +config UART_1 + default y + +endif + +endif # BOARD_NUCLEO_WB55RG diff --git a/boards/arm/nucleo_wb55rg/board.cmake b/boards/arm/nucleo_wb55rg/board.cmake new file mode 100644 index 00000000000..5edccfb1a66 --- /dev/null +++ b/boards/arm/nucleo_wb55rg/board.cmake @@ -0,0 +1 @@ +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) diff --git a/boards/arm/nucleo_wb55rg/doc/img/nucleowb55rg.jpg b/boards/arm/nucleo_wb55rg/doc/img/nucleowb55rg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16602bd80059b5f49747671c770e24f85ad2ab3f GIT binary patch literal 82423 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π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 literal 0 HcmV?d00001 diff --git a/boards/arm/nucleo_wb55rg/doc/nucleowb55rg.rst b/boards/arm/nucleo_wb55rg/doc/nucleowb55rg.rst new file mode 100644 index 00000000000..ae5a84bb97e --- /dev/null +++ b/boards/arm/nucleo_wb55rg/doc/nucleowb55rg.rst @@ -0,0 +1,267 @@ +.. _nucleo_wb55rg_board: + +ST Nucleo WB55RG +################ + +Overview +******** + +The Nucleo WB55RG board is a multi-protocol wireless and ultra-low-power device +embedding a powerful and ultra-low-power radio compliant with the Bluetooth® +Low Energy (BLE) SIG specification v5.0 and with IEEE 802.15.4-2011. + + +- STM32 microcontroller in VFQFPN68 package +- 2.4 GHz RF transceiver supporting Bluetooth® specification v5.0 and + IEEE 802.15.4-2011 PHY and MAC +- Dedicated Arm® 32-bit Cortex® M0+ CPU for real-time Radio layer +- Three user LEDs +- Board connector: USB user with Micro-B +- Two types of extension resources: + + - Arduino Uno V3 connectivity + - ST morpho extension pin headers for full access to all STM32 I/Os + +- Integrated PCB antenna or footprint for SMA connector +- On-board ST-LINK/V2-1 debugger/programmer with SWD connector +- Flexible power-supply options: ST-LINK USB VBUS or external sources +- On-board socket for CR2032 battery +- On-board ST-LINK/V2-1 debugger/programmer with USB re- enumeration capability: + mass storage, virtual COM port and debug port + +.. image:: img/nucleowb55rg.jpg + :width: 670px + :align: center + :height: 339px + :alt: Nucleo WB55RG + +More information about the board can be found at the `Nucleo WB55RG website`_. + +Hardware +******** + +STM32WB55RG is an ultra-low-power dual core Arm Cortex-M4 MCU 64 MHz,Cortex-M0 32MHz +with 1 Mbyte of Flash memory, Bluetooth 5, 802.15.4, USB, LCD, AES-256 SoC and +provides the following hardware capabilities: + +- Ultra-low-power with FlexPowerControl (down to 600 nA Standby mode with RTC and 32KB RAM) +- Core: ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU, frequency up to 64 MHz +- Radio: + + - 2.4GHz + - RF transceiver supporting Bluetooth® 5 specification, IEEE 802.15.4-2011 PHY and MAC, + supporting Thread and ZigBee|reg| 3.0 + - RX Sensitivity: -96 dBm (Bluetooth|reg| Low Energy at 1 Mbps), -100 dBm (802.15.4) + - Programmable output power up to +6 dBm with 1 dB steps + - Integrated balun to reduce BOM + - Support for 2 Mbps + - Dedicated Arm|reg| 32-bit Cortex|reg| M0 + CPU for real-time Radio layer + - Accurate RSSI to enable power control + - Suitable for systems requiring compliance with radio frequency regulations + ETSI EN 300 328, EN 300 440, FCC CFR47 Part 15 and ARIB STD-T66 + - Support for external PA + +- Clock Sources: + + - 32 MHz crystal oscillator with integrated trimming capacitors (Radio and CPU clock) + - 32 kHz crystal oscillator for RTC (LSE) + - 2x Internal low-power 32 kHz RC (|plusminus| 5% and |plusminus| 500ppm) + - Internal multispeed 100 kHz to 48 MHz oscillator, auto-trimmed by + LSE (better than |plusminus| 0.25 % accuracy) + - 2 PLLs for system clock, USB, SAI and ADC + +- RTC with HW calendar, alarms and calibration +- LCD 8 x 40 or 4 x 44 with step-up converter +- Up to 24 capacitive sensing channels: support touchkey, linear and rotary touch sensors +- 16x timers: + + - 2x 16-bit advanced motor-control + - 2x 32-bit and 5x 16-bit general purpose + - 2x 16-bit basic + - 2x low-power 16-bit timers (available in Stop mode) + - 2x watchdogs + - SysTick timer + +- Up to 114 fast I/Os, most 5 V-tolerant, up to 14 I/Os with independent supply down to 1.08 V +- Memories + + - Up to 1 MB Flash, 2 banks read-while-write, proprietary code readout protection + - Up to 320 KB of SRAM including 64 KB with hardware parity check + - External memory interface for static memories supporting SRAM, PSRAM, NOR and NAND memories + - Quad SPI memory interface + +- 4x digital filters for sigma delta modulator +- Rich analog peripherals (down to 1.62 V) + + - 12-bit ADC 4.26Msps, up to 16-bit with hardware oversampling, 200 uA/Msps + - 2x ultra-low-power comparator + - Accurate 2.5 V or 2.048 V reference voltage buffered output + +- System peripherals + + - Inter processor communication controller (IPCC) for communication with + Bluetooth|reg| Low Energy and 802.15.4 + - HW semaphores for resources sharing between CPUs + - 2x DMA controllers (7x channels each) supporting ADC, SPI, I2C, USART, + QSPI, SAI, AES, Timers + - 1x USART (ISO 7816, IrDA, SPI Master, Modbus and Smartcard mode) + - 1x LPUART (low power) + - 2x SPI 32 Mbit/s + - 2x I2C (SMBus/PMBus) + - 1x SAI (dual channel high quality audio) + - 1x USB 2.0 FS device, crystal-less, BCD and LPM + - Touch sensing controller, up to 18 sensors + - LCD 8x40 with step-up converter + - 1x 16-bit, four channels advanced timer + - 2x 16-bits, two channels timer + - 1x 32-bits, four channels timer + - 2x 16-bits ultra-low-power timer + - 1x independent Systick + - 1x independent watchdog + - 1x window watchdog + +- Security and ID + + - 3x hardware encryption AES maximum 256-bit for the application, + the Bluetooth|reg| Low Energy and IEEE802.15.4 + - Customer key storage / key manager services + - HW public key authority (PKA) + - Cryptographic algorithms: RSA, Diffie-Helman, ECC over GF(p) + - True random number generator (RNG) + - Sector protection against R/W operation (PCROP) + - CRC calculation unit + - 96-bit unique ID + - 64-bit unique ID. Possibility to derive 802.15.5 64-bit and + Bluetooth|reg| Low Energy 48-bit EUI + +- Up to 72 fast I/Os, 70 of them 5 V-tolerant +- Development support: serial wire debug (SWD), JTAG, Embedded Trace Macrocell |trade| + + +More information about STM32WB55RG can be found here: + +- `STM32WB55RG on www.st.com`_ +- `STM32WB5RG datasheet`_ + +Supported Features +================== + +The Zephyr nucleo_wb55rg board configuration supports the following hardware features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port-polling; | +| | | serial port-interrupt | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ + +Other hardware features are not yet supported on this Zephyr port. + +The default configuration can be found in the defconfig file: +``boards/arm/nucleo_wb55rg/nucleo_wb55rg_defconfig`` + + +Connections and IOs +=================== + +Nucleo WB55RG Board has 6 GPIO controllers. These controllers are responsible for pin muxing, +input/output, pull-up, etc. + +Default Zephyr Peripheral Mapping: +---------------------------------- + +- UART_1 TX/RX : PB7/PB6 +- USER_PB : PC4 +- USER_PB1 : PD0 +- USER_PB2 : PD1 +- LD1 : PB5 +- LD2 : PB0 +- LD3 : PB1 + +System Clock +------------ + +Nucleo WB55RG System Clock could be driven by internal or external oscillator, +as well as main PLL clock. By default System clock is driven by HSE clock at 32MHz. + +Serial Port +----------- + +Nucleo WB55RG board has 2 (LP)U(S)ARTs. The Zephyr console output is assigned to USART1. +Default settings are 115200 8N1. + + +Programming and Debugging +************************* + +Applications for the ``nucleo_wb55rg`` board configuration can be built the +usual way (see :ref:`build_an_application`). + +Flashing +======== + +Nucleo WB55RG board includes an ST-LINK/V2-1 embedded debug tool +interface. This interface is not yet supported by the openocd version +included in the Zephyr SDK. You can flash your application with drag and drop +in the drive mounted when plugging your nucleo board to your PC. + + +Flashing an application to Nucleo WB55RG +---------------------------------------- + +Connect the Nucleo WB55RG 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/ttyUSB0 + +Then build and flash the application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: nucleo_wb55rg + :goals: build + +You should see the following message on the console: + +.. code-block:: console + + Hello World! arm + +Debugging +========= + +While STM32WB55RG is not yet supported you can debug an application using pyocd. +Here is an example for the :ref:`hello_world` application. +Start pyocd gdbserver on your machine: + +.. code-block:: console + + $ pyocd gdbserver + +Then launch debug on your board: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: nucleo_wb55rg + :maybe-skip-config: + :goals: debug + +.. _Nucleo WB55RG website: + https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html + +.. _STM32WB55RG on www.st.com: + https://www.st.com/en/microcontrollers-microprocessors/stm32wb55rg.html + +.. _STM32WB5RG datasheet: + https://www.st.com/resource/en/datasheet/stm32wb55rg.pdf diff --git a/boards/arm/nucleo_wb55rg/nucleo_wb55rg.dts b/boards/arm/nucleo_wb55rg/nucleo_wb55rg.dts new file mode 100644 index 00000000000..89e770010b4 --- /dev/null +++ b/boards/arm/nucleo_wb55rg/nucleo_wb55rg.dts @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2019 Linaro Limited + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include + +/ { + model = "STMicroelectronics STM32WB55RG-NUCLEO board"; + compatible = "st,stm32wb55rg-nucleo", "st,stm32wb55rg"; + + chosen { + zephyr,console = &usart1; + zephyr,shell-uart = &usart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; + + leds { + compatible = "gpio-leds"; + blue_led_1: led_0 { + gpios = <&gpiob 5 GPIO_INT_ACTIVE_HIGH>; + label = "User LED1"; + }; + green_led_2: led_1 { + gpios = <&gpiob 0 GPIO_INT_ACTIVE_HIGH>; + label = "User LED2"; + }; + green_led_3: led_2 { + gpios = <&gpiob 1 GPIO_INT_ACTIVE_HIGH>; + label = "User LED3"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + user_button_1: button_0 { + label = "SW1"; + gpios = <&gpioc 4 GPIO_INT_ACTIVE_LOW>; + }; + user_button_2: button_1 { + label = "SW2"; + gpios = <&gpiod 0 GPIO_INT_ACTIVE_LOW>; + }; + user_button_3: button_2 { + label = "SW3"; + gpios = <&gpiod 1 GPIO_INT_ACTIVE_LOW>; + }; + }; + + aliases { + led0 = &green_led_2; + sw0 = &user_button_1; + sw1 = &user_button_2; + }; +}; + +&usart1 { + current-speed = <115200>; + status = "ok"; +}; diff --git a/boards/arm/nucleo_wb55rg/nucleo_wb55rg.yaml b/boards/arm/nucleo_wb55rg/nucleo_wb55rg.yaml new file mode 100644 index 00000000000..ef6ec5198dd --- /dev/null +++ b/boards/arm/nucleo_wb55rg/nucleo_wb55rg.yaml @@ -0,0 +1,12 @@ +identifier: nucleo_wb55rg +name: NUCLEO-WB55RG +type: mcu +arch: arm +toolchain: + - zephyr + - gccarmemb + - xtools +ram: 96 +flash: 1024 +supported: + - gpio diff --git a/boards/arm/nucleo_wb55rg/nucleo_wb55rg_defconfig b/boards/arm/nucleo_wb55rg/nucleo_wb55rg_defconfig new file mode 100644 index 00000000000..7f4e8780e55 --- /dev/null +++ b/boards/arm/nucleo_wb55rg/nucleo_wb55rg_defconfig @@ -0,0 +1,36 @@ +CONFIG_ARM=y +CONFIG_SOC_SERIES_STM32WBX=y +CONFIG_SOC_STM32WB55XG=y +CONFIG_CORTEX_M_SYSTICK=y +# 32MHz system clock +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=32000000 +CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 + +# enable uart driver +CONFIG_SERIAL=y + +# enable pinmux +CONFIG_PINMUX=y + +# enable GPIO +CONFIG_GPIO=y + +# clock configuration +CONFIG_CLOCK_CONTROL=y +# SYSCLK selection +#CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y +CONFIG_CLOCK_STM32_SYSCLK_SRC_HSE=y +CONFIG_CLOCK_STM32_HSE_CLOCK=32000000 + +CONFIG_CLOCK_STM32_CPU1_PRESCALER=1 +CONFIG_CLOCK_STM32_CPU2_PRESCALER=1 +CONFIG_CLOCK_STM32_APB1_PRESCALER=1 +CONFIG_CLOCK_STM32_APB2_PRESCALER=1 +CONFIG_CLOCK_STM32_AHB4_PRESCALER=1 + +# console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable MPU +CONFIG_ARM_MPU=y diff --git a/boards/arm/nucleo_wb55rg/pinmux.c b/boards/arm/nucleo_wb55rg/pinmux.c new file mode 100644 index 00000000000..27038232c8f --- /dev/null +++ b/boards/arm/nucleo_wb55rg/pinmux.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2018 Linaro Limited + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include +#include + +#include + +/* pin assignments for NUCLEO-WB55RG board */ +static const struct pin_config pinconf[] = { +#ifdef CONFIG_UART_1 + {STM32_PIN_PB7, STM32WBX_PINMUX_FUNC_PB7_USART1_RX}, + {STM32_PIN_PB6, STM32WBX_PINMUX_FUNC_PB6_USART1_TX}, +#endif /* CONFIG_UART_1 */ +}; + +static int pinmux_stm32_init(struct device *port) +{ + ARG_UNUSED(port); + + stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); + + return 0; +} + +SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, + CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); diff --git a/dts/arm/st/wb/stm32wb55Xg.dtsi b/dts/arm/st/wb/stm32wb55Xg.dtsi new file mode 100644 index 00000000000..3d9a9589a14 --- /dev/null +++ b/dts/arm/st/wb/stm32wb55Xg.dtsi @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2018 Linaro Limited + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include +#include + +/ { + sram0: memory@20000000 { + reg = <0x20000000 DT_SIZE_K(96)>; + }; + + sram2a:memory@20030000 { + reg = <0x20030000 0x2800>; + }; + + sram2b:memory@20038000 { + reg = <0x20038000 0x5000>; + }; + + + soc { + flash-controller@58004000 { + flash0: flash@8000000 { + reg = <0x08000000 DT_SIZE_K(1024)>; + }; + }; + }; +};