STM32CubeWL MCU Firmware Package

repository·main·Indexed 41 days ago

https://github.com/stmicroelectronics/stm32cubewl

A complete software ecosystem for STM32WL series microcontrollers. It includes HAL/LL drivers, BSP drivers, and middleware such as LoRaWAN and RTOS, along with board-specific software projects. The package also features CMSIS-DSP ComputeLibrary implementations and CMSIS-NN neural network kernels for Cortex-M processors, including TFL micro compliant APIs for TensorFlow Lite for Microcontrollers.

Tokens
123.8K
Snippets
47
Records
650
Agent score
48%

What's inside STM32CubeWL

  1. Overview of STM32CubeWL MCU Firmware Package

    main

    The STM32CubeWL MCU Firmware Package is a comprehensive embedded software platform for the STM32WL series. It provides the necessary software components to develop applications on STM32WL hardware, including:

    • CMSIS modules: Core and device implementations for the ARM Cortex-M core.
    • STM32 HAL-LL drivers: Hardware Abstraction Layer (HAL) and Low-Layer (LL) drivers for maximized portability.
    • BSP Drivers: Board Support Package drivers for specific evaluation or demonstration boards.
    • Middleware libraries: A consistent set of libraries such as RTOS, FatFS, LoRaWAN, and Sigfox.
    • Software projects: A full set of basic examples, applications, and demonstrations for each supported board.

    Note on Availability: Some middleware libraries (e.g., STM32_Key_Management_Services, STM32_Secure_Engine, and Sigfox) and their associated projects are not available in this GitHub repository due to restrictive license terms. To access these, you must download the full firmware package from the official st.com website.

  2. Overview of LocalNetwork_Concentrator Demo

    main

    The LocalNetwork_Concentrator is a demonstration software designed for the STM32WLxx Nucleo board. It implements a Concentrator that manages a network by sending Beacons to administrate up to 14 connected sensors and receiving data from them.

    Key Functions:

    • Sends Beacons to manage the network.
    • Receives and logs sensor data.
    • Provides an AT command interface for configuration and monitoring.
  3. Overview of the SubGHz_Phy_PingPong Application

    main

    The SubGHz_Phy_PingPong application is a demonstration of a simple RF link between two LoRa devices. It implements a 'Ping-Pong' communication pattern where one device acts as a 'Ping' and the other as a 'Pong'.

    Behavior

    • Startup: Both devices start as masters and transmit a "Ping" message, then wait for a response.
    • Synchronization: When the Tx window of one board aligns with the Rx window of the other, communication is established.
    • Role Switching: The first device to receive a "Ping" message becomes the slave and responds with a "Pong" message.
    • LED Indicators:
      • Startup: Both LEDs blink.
      • Ping Device (receiving "Ping"): Blinks green LED.
      • Pong Device (receiving "Pong"): Blinks red LED.
    • Logging: Status logs are available via hyperterminal (UART).
  4. Overview of the LocalNetwork_Sensor Demonstration

    main

    The LocalNetwork_Sensor application is a demonstration software designed for the STM32WLxx series. It implements a sensor node that acquires sensor data (specifically from the Internal Temperature Sensor and VBat information) and transmits it to a demo concentrator modem or an external host using Sub-GHz physical layer communication.

    Key Features:

    • Data Sources: Internal Temperature Sensor and VBat information.
    • Target Hardware: STM32WLxx Nucleo boards (specifically NUCLEO-WL55JC1 for HIGH-BAND or NUCLEO-WL55JC2 for LOW-BAND).
    • Communication Pattern: The sensor node automatically acquires a beacon from a concentrator and uses a reserved time slot to transmit data.
  5. Overview of the SubGHz_Phy_PingPong_DualCore Application

    main

    The SubGHz_Phy_PingPong_DualCore application is a dual-core (Cortex-M4 and Cortex-M0+) demonstration of a LoRa RF link between two devices. It implements a 'Ping-Pong' mechanism where devices exchange messages to establish a link.

    Key Features

    • Dual-Core Operation: Uses IPCC (Inter-Processor Communication Controller) and MBMUX (Mailbox Multiplexer) for communication between the CM4 and CM0+ cores.
    • Ping-Pong Logic: By default, each device starts as a master, transmits a 'Ping', and waits for a 'Pong'. The first device to receive a 'Ping' becomes a slave and responds with a 'Pong'.
    • Visual Indicators:
      • Startup: Both LEDs blink.
      • Synchronization: When the Tx window of one board aligns with the Rx window of the other:
        • The Ping Device (receiver of 'Ping') blinks the green LED.
        • The Pong Device (receiver of 'Pong') blinks the red LED.
    • Logging: Status is available via hyperterminal (UART) and LED indicators.
  6. Overview of the FreeRTOS Timers example

    main

    This application demonstrates how to use timers via the CMSIS RTOS API on STM32WL devices. It showcases two different timing mechanisms:

    1. Thread-based timing: A dedicated thread that toggles LED2 every 400 ms.
    2. Timer-based timing: A periodic software timer that executes a callback function every 200 ms to toggle LED1.

    This example is designed for the STM32WL55JCIx device and has been validated on the NUCLEO-WL55JC RevC board.

  7. Overview of LoRaWAN End Node Relay LBM Demo

    main

    The LoRaWAN_End_Node_Relay_LBM is a demonstration application for a LoRa modem connecting to a Network Server (e.g., LoRaWAN/Loriot). It implements a LoRa application device that sends sensor data periodically based on a timer event or via a user button press (depending on configuration).

    Key Features:

    • Sends sensor data to a LoRa Network Server.
    • Traces and debug information are displayed over UART.
    • Supports both High-Band and Low-Band STM32WLxx Nucleo boards.
  8. Overview of LoRaWAN_Relay_LBM Application

    main

    The LoRaWAN_Relay_LBM application is a demonstration software for a LoRa modem connecting to a Network Server (e.g., Loriot). It implements a LoRaWAN end-node that sends sensor data periodically based on a timer event or via a user button press, depending on the configuration.

    Key Features:

    • Sends sensor data to a LoRa Network Server.
    • Traces and debug information are displayed over UART.
    • Supports Cayenne Low Power Protocol (CayenneLPP).
    • Targets the B-WL5M-SUBG1 Connectivity Expansion Board (STM32WL5Mxx).
  9. Overview of SubGHz_Phy_PingPong_DualCore Application

    main

    The SubGHz_Phy_PingPong_DualCore application is a dual-core (CM4 / CM0+) demonstration of a Ping-Pong RF link between two LoRa devices.

    Core Behavior:

    • By default, each device starts as a master, transmits a "Ping" message, and waits for a response.
    • When boards synchronize (Tx window of one aligns with Rx window of the other), the device receiving the "Ping" message blinks a green LED, and the device receiving the "Pong" message blinks a red LED.
    • The first device to receive a "Ping" message becomes a slave and responds with a "Pong" message.
    • Multicore communication is managed via IPCC (Inter-Processor Communication Controller) and MBMUX (Mailbox Multiplexer).

    Supported Hardware:

    • B-WL5M-SUBG1 Connectivity Expansion Board
    • STM32WL Nucleo board
    • LoRa Radio expansion boards
    • B-L072Z-LRWAN1
  10. Overview of FreeRTOS Low Power Example

    main

    This application demonstrates how to enter and exit low-power modes using the CMSIS RTOS API on STM32WL devices. It utilizes two threads to manage data flow and power states:

    • Rx thread: Blocks on a queue waiting for data. When data is received, it blinks LED2 (on then off) before returning to a blocked state.
    • Tx thread: Periodically enters a blocked state for 500ms. Upon exiting the blocked state, it sends a value through the queue to the Rx thread.

    Low Power Mechanism: By blocking for a finite period, the kernel stops the tick interrupt and places the STM32 into Sleep mode. Sleep mode is the lowest-power mode that allows CPU registers and RAM to retain their state. During this state, the RTOS tick is suppressed.

    Power Optimization Note: Unused GPIOs are configured to analog mode to reduce overall power consumption.

  11. Overview of LoRaWAN End Node Relay LBM Application

    main

    The LoRaWAN_End_Node_Relay_LBM is a demo application designed for a LoRa modem to connect to a Network Server (e.g., LoRaWAN/Loriot).

    Key Features:

    • Data Transmission: Sends sensor data periodically based on a timer event or triggered by 'user button 1' (depending on configuration).
    • Monitoring: Traces and debug information are displayed over UART.
    • Target Hardware: Specifically designed for the B-WL5M-SUBG1 Connectivity Expansion Board (STM32WL5Mxx).

    System Flow: ComPort <--> LoRa Object <--> LoRa Network <--> Web Server

  12. Overview of LoRaWAN End Node LBM Application

    main

    The LoRaWAN_End_Node_LBM is a demonstration application designed for STM32WLxx Nucleo boards. It implements a LoRa modem that connects to a LoRa Network Server (e.g., LoRaWAN/Loriot).

    Key Features:

    • Data Transmission: Sends sensor data periodically based on a timer event or triggered by 'user button 1' (depending on configuration).
    • Protocol Support: Implements the Cayenne Low Power Protocol (CayenneLPP).
    • Monitoring: Traces and debug information are displayed over UART.
    • Target Hardware: Specifically designed for STM32WLxx Nucleo boards, including NUCLEO-WL55JC1 (HIGH-BAND) and NUCLEO-WL55JC2 (LOW-BAND).