STM32U375 ADF1 Stereo Configuration with 2 PDM MEMS Microphones
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:
-
Is there any register workaround or specific HAL configuration to force the single
ADF1_Filter0to operate in an interleaved Stereo mode capturing both Rising and Falling edges on the STM32U3? -
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?
-
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!
