STM32WL3x support in Zephyr
The STM32WL3x is a sub-GHz wireless MCU family, based on an Arm Cortex-M0+. I first worked with it during my MSc thesis, using ST's STM32CubeWL HAL. Zephyr had no support for it, so afterwards I brought up the SoC family and the NUCLEO-WL33CC1 board in mainline Zephyr. All of the work below is merged upstream.
SoC bring-up
The foundation for running Zephyr on the chip at all (zephyr #114483):
- SoC definitions
- Clock control
- GPIO
- USART
HAL integration
Integrated ST's STM32CubeWL3 HAL/LL drivers into Zephyr's hal_stm32 module, which the
Zephyr drivers build on
(hal_stm32 #394).
Peripheral drivers
Support for the remaining core peripherals (zephyr #118648):
- SPI, I²C, DMA and RTC
- DMAMUX request-slot fix: a bug in the shared STM32 DMAMUX handling that also affects STM32WB0
- RTC calendar errata: a workaround for the issue described in ST errata sheet ES0612
Testing
Everything was validated on hardware with the Zephyr driver test suites.