LogicAL Nucleo

A SUMP compatible Logical Analyser for the NucleoF401RE (STM32F4xx) up to 10MSPS, 8Ch, 32K samples memory.

This will turn any NucleoF401RE (will work with others but it is not tested) system into a Logical Analyser compatible with a subset of the SUMP protocol. It can be used with clients such as PulseView, sigrok-cli, and LogicSniffer. While it is not as feature complete as other products, such as the OLS, it can turn that STM32 board that is lying around into a no frills, bare to the bones, logic analyser.

Sampling rate up to 500Khz should work on most platforms. Higher than that, only the F401RE, or other similar 84Mhz platform, should provide results with accurate timing measurements up to 10Mhz (probably near 20Mhz is achievable). If you wish to add support for other platforms, please focus in creating the appropriate unrolled loops. +150Mhz platforms can be easily supported as the more generic approach (wait_ns) can be used.

PORTB is current used, and Pins PB_0 to PB_7 are reported. Unfortunately these pins are scattered over the board and are not contiguous. Check this diagram to find them.

This implementation was based in the mbed environment in order to increase its compatibility, as new targets are expected to be supported. The focus of this implementation is compatibility and extensibility, and not only performance.



  • Configurable sampling rate up to 10Mhz on the F401RE platform
  • Basic parallel triggers
  • Generic compatibility through the MBED API


  • RLE support
  • Serial triggers
  • Post trigger delay
  • External and Internal test modes


Just to prove it works and because screenshots are always nice.

Channel 4 with a signal permanently set to 1, others set to 0. This capture was made using the test mode active. In this mode the board will provide a PWM signal in D9, with a period of 50us and pulse width of 20us (30us off). This pin was connected to D4 (PB_3) and sampled with great accuracy at 1Mhz.

LogicSniffer in Test Mode

The code can be found here and the project page here