Getting Started with STM32 Low Layer (LL): SPI Reception in Polling Mod
Unlike UART or I2C, an SPI master never simply listens: clocks only run while the master transmits, so every read is inherently a simultaneous write of dummy bytes whose only…
Firmware, hardware and the details that make them work. Tutorials from the EmbeddedExpertIO engineering community.
Unlike UART or I2C, an SPI master never simply listens: clocks only run while the master transmits, so every read is inherently a simultaneous write of dummy bytes whose only…

A book by our founder
Get the best-selling bare-metal embedded C programming book. Learn to read datasheets, work directly with registers and build your own peripheral drivers for Arm microcontrollers.
In Part 1, we used a timer to measure time; now we’ll put it to work generating signals instead. In this part, we configure…
In Part 3 of our series, we will configure GATT Services and Characteristics on the STM32WB55 to establish two-way data communication with your smartphone.…
This guide walks through building a lightweight, framed UART protocol for emulating a sensor, covering the frame layout, parser design, and error handling needed…
Accurate timing is a fundamental requirement in most embedded applications, whether for blinking an LED, polling a sensor, or driving communication protocols. This guide…
The Serial Peripheral Interface (SPI) is one of the most common protocols for connecting microcontrollers to external devices such as sensors, memory chips, and…
In Part 2 of our series, we will configure the STM32WB55 to initialize its Bluetooth Low Energy stack and start broadcasting advertising packets. You’ll…
Expanding upon our single-channel DMA foundation, this guide scales the STM32F4’s ADC to simultaneously sample multiple analog channels. By enabling the ADC’s scan mode…