@@ -279,7 +279,7 @@ void dfsdm_init()
279
279
HAL_GPIO_Init (AUDIO_DFSDM1_D1_PORT , & GPIO_InitStruct );
280
280
}
281
281
282
- static int DFSDM_Init (void )
282
+ static int DFSDM_Init (uint32_t frequency )
283
283
{
284
284
__HAL_DFSDM_CHANNEL_RESET_HANDLE_STATE (& hdfsdm1_channel2 );
285
285
hdfsdm1_channel2 .Instance = DFSDM1_Channel2 ;
@@ -292,7 +292,7 @@ static int DFSDM_Init(void)
292
292
hdfsdm1_channel2 .Init .SerialInterface .Type = DFSDM_CHANNEL_SPI_RISING ;
293
293
hdfsdm1_channel2 .Init .SerialInterface .SpiClock = DFSDM_CHANNEL_SPI_CLOCK_INTERNAL ;
294
294
hdfsdm1_channel2 .Init .Awd .FilterOrder = DFSDM_CHANNEL_FASTSINC_ORDER ;
295
- hdfsdm1_channel2 .Init .Awd .Oversampling = 125 ; /* 2MHz/125 = 16kHz */
295
+ hdfsdm1_channel2 .Init .Awd .Oversampling = 2000000 / frequency ; /* 2MHz/125 = 16kHz */
296
296
hdfsdm1_channel2 .Init .Offset = 0 ;
297
297
hdfsdm1_channel2 .Init .RightBitShift = 0 ;
298
298
if (HAL_OK != HAL_DFSDM_ChannelInit (& hdfsdm1_channel2 ))
@@ -311,7 +311,7 @@ static int DFSDM_Init(void)
311
311
hdfsdm1_filter0 .Init .InjectedParam .ExtTrigger = DFSDM_FILTER_EXT_TRIG_TIM1_TRGO ;
312
312
hdfsdm1_filter0 .Init .InjectedParam .ExtTriggerEdge = DFSDM_FILTER_EXT_TRIG_RISING_EDGE ;
313
313
hdfsdm1_filter0 .Init .FilterParam .SincOrder = DFSDM_FILTER_FASTSINC_ORDER ;
314
- hdfsdm1_filter0 .Init .FilterParam .Oversampling = 125 ; /* 2MHz/125 = 16kHz */
314
+ hdfsdm1_filter0 .Init .FilterParam .Oversampling = 2000000 / frequency ; /* 2MHz/125 = 16kHz */
315
315
hdfsdm1_filter0 .Init .FilterParam .IntOversampling = 1 ;
316
316
if (HAL_OK != HAL_DFSDM_FilterInit (& hdfsdm1_filter0 ))
317
317
{
@@ -363,7 +363,7 @@ int py_audio_init(size_t channels, uint32_t frequency)
363
363
364
364
dfsdm_init ();
365
365
366
- if (!DFSDM_Init ()) {
366
+ if (!DFSDM_Init (frequency )) {
367
367
return 0 ;
368
368
}
369
369
0 commit comments