Skip to main content
Associate
June 18, 2026
Solved

STM32U375 ADF1 Stereo Configuration with 2 PDM MEMS Microphones

  • June 18, 2026
  • 3 replies
  • 123 views

Hello!

I am working on a project using the STM32U375CGUx MCU, and I am trying to implement a Stereo Audio Acquisition system using two omnidirectional digital PDM MEMS microphones.

Hardware Setup:

  • Microphone L: L/R pin tied to GND (Rising Edge data output).

  • Microphone R: L/R pin tied to VDD (Falling Edge data output).

  • Both microphones share the same lines connected to the MCU: PB4 (ADF1_SDI0) for the clock and PB3 (ADF1_CCK0) for the data stream.

The Issue:
When configuring the peripheral through STM32CubeMX, I am unable to set up a true Stereo configuration. I can only make it work in Mono.

Looking at the generated HAL initialization code, I am forced to choose either MDF_BITSTREAM0_FALLING or MDF_BITSTREAM0_RISING for the FilterBistream parameter. There is no option/macro to sample both edges (interleaved) simultaneously on the same filter instance:

AdfHandle0.Instance = ADF1_Filter0;
AdfHandle0.Init.CommonParam.ProcClockDivider = 6;
AdfHandle0.Init.CommonParam.OutputClock.Activation = ENABLE;
AdfHandle0.Init.CommonParam.OutputClock.Pins = MDF_OUTPUT_CLOCK_0;
AdfHandle0.Init.CommonParam.OutputClock.Divider = 1;
AdfHandle0.Init.CommonParam.OutputClock.Trigger.Activation = DISABLE;
AdfHandle0.Init.SerialInterface.Activation = ENABLE;
AdfHandle0.Init.SerialInterface.Mode = MDF_SITF_LF_MASTER_SPI_MODE;
AdfHandle0.Init.SerialInterface.ClockSource = MDF_SITF_CCK0_SOURCE;
AdfHandle0.Init.SerialInterface.Threshold = 4;

AdfHandle0.Init.FilterBistream = MDF_BITSTREAM0_FALLING; // Or MDF_BITSTREAM0_RISING, but cannot capture both

if (HAL_MDF_Init(&AdfHandle0) != HAL_OK)
{
Error_Handler();
}

According to the STM32U3 Reference Manual (RM0487) (page 1131, Table 250: ADF features), the ADF1 implementation on the STM32U3 family embeds only 1 filter (DFLTx) and 1 serial interface (SITFx).

Unlike the STM32U5 series (where we can allocate two separate physical filters like MDF1_Filter3 and MDF1_Filter4 pointing to the same bitstream to achieve stereo), the STM32U3 has a single filter instance.

My questions are:

  1. Is there any register workaround or specific HAL configuration to force the single ADF1_Filter0 to operate in an interleaved Stereo mode capturing both Rising and Falling edges on the STM32U3?

  2. If this is a strict hardware architecture limitation due to the single filter, does it mean that stereo PDM microphone acquisition is fundamentally not supported on the STM32U3 series using the ADF peripheral?

  3. Should I migrate to an STM32U5 (which features multi-filter MDF blocks) to achieve this native PDM stereo acquisition, or is there a way to make it work on my current U3 chip?

(Please find attached my CubeMX configuration screenshot)

Thank you in advance for your support!

Best answer by JonathanC

Hello ​@leocav 

 
As you mentioned, STM32U3 ADF has a single filter instance, thus it supports mono capture only. 
The alternative is to use the SAI PDM block (pins SAI_D & SAI_CK). 
Br
Jonathan 

3 replies

ST Technical Moderator
June 19, 2026

Hello ​@leocav 

  1. Should I migrate to an STM32U5 (which features multi-filter MDF blocks) to achieve this native PDM stereo acquisition, or is there a way to make it work on my current U3 chip?

Why not use the SAI peripheral, which supports stereo mode? Please see the example below.

STM32CubeU3/Projects/NUCLEO-U385RG-Q/Examples/SAI/SAI_AudioRecord_PDM at main · STMicroelectronics/STM32CubeU3

 

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question. Saket_Om
leocavAuthor
Associate
June 19, 2026

Hello ​@Saket_Om,

Thanks for the reply!

Unfortunately, I cannot change the pin configuration at the moment. :(

The microphones are currently connected to PB3 and PB4 on my board. While I could definitely evaluate a hardware migration or a pin remapping for a next hardware revision, for the time being, I must stick with the current layout.

Because of this, I need to figure out exactly what can be achieved with the existing hardware setup.

JonathanCBest answer
ST Employee
June 22, 2026

Hello ​@leocav 

 
As you mentioned, STM32U3 ADF has a single filter instance, thus it supports mono capture only. 
The alternative is to use the SAI PDM block (pins SAI_D & SAI_CK). 
Br
Jonathan