Skip to main content
Associate II
February 23, 2026
Question

High Frequency Input Processing

  • February 23, 2026
  • 2 replies
  • 358 views

Hi,

The input to the MCU is basically 1-bit (0/1 values), but it would be better if it could process multiple bits.
The input is at 150MHz, and 10,000 data items are received at once. The MCU must store them in uint8_t data[10000]. When a 1-bit value is received, data[10000] contains 0/1 values. For the next data item, the 0/1 values ​​must be accumulated and added for calculation.
This is what I’ve come up with:
1) GPIO: 150MHz input is not possible.
2) ICP + DMA: It seems possible, but it doesn't seem to work. ICP cannot  reliably capture 150MHz, and DMA doesn't seem to be able to store data in SRAM.
3) DCMI or DCMIPP: 8-16bit data can be processed, and accumulation is possible using DMA. However, the maximum speed is 80MHz or 120MHz.

Is there a model among the stm32 models that can do this on its own mcu?

2 replies

TDK
Super User
February 23, 2026

What does the signal coming in look like? If it's just data, no clock, I don't think any STM32 can do this, at least not if you need the reads to be synchronized to something. If an occasional bit slip or skip is allowed:

At 150 MHz you would need to sample using something like SPI, not through the GPIO registers.

On the STM32H723, SPI max is 125 MHz, OCTOSPI is max 140 MHz, so no luck there.

On the STM32N6x5, max XSPI clock is 185 MHz, so that's a possibility. Max SPI click is only 115 MHz.

It's possible a memory interface could also work.

> MCU must store them in uint8_t data[10000]

As a 0 or 1 per sample? Not possible. But you can post-process the data.

"If you feel a post has answered your question, please click ""Accept as Solution""."
Associate II
February 23, 2026

thanks TDK.

Since the PCB hasn't been designed yet, anything is possible, but the clock can be pulled from the MCO pin of the MCU or can be supplied externally.

After 10,000 data (0/1) are received, the next data item is actually received consecutively.

Using XSPI + DMA, is it possible to split the DMA address into two area, so that one side receives the data while the other side accumulates the data?

TDK
Super User
February 23, 2026

DMA has the half-complete and full-complete interrupt that lets you do this. Or you can use double-buffer mode to store into separate regions.

"If you feel a post has answered your question, please click ""Accept as Solution""."
AScha.3
Super User
February 23, 2026

Hi,

sampling an input at 150MHz ...? I think, impossible on any cpu without dedicated hardware , lets say: a SPI input, that can run at 150MHz .

No STM , afaik.

But what comes to my mind : the RP2350 , dual M33 cores at 150MHz ;

AND the programmable PIO state machines, can sustain 360 Mb/s during the active scanline period .

With one of the PIO it should be no problem to make a 150Mbit SPI .

"If you feel a post has answered your question, please click ""Accept as Solution""."
Ozone
Principal
February 24, 2026

> No STM , afaik.

I would say, not with a general-pupose MCU like the Cortex M is one.

I think this use case asks for specialized hardware. Either a DSP, or an application processor (like a Cortex A) with peripheral hardware suited for the purpose.