273 #ifdef HAL_DFSDM_MODULE_ENABLED
274 #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
286 #define DFSDM_FLTCR1_MSB_RCH_OFFSET 8U
288 #define DFSDM_MSB_MASK 0xFFFF0000U
289 #define DFSDM_LSB_MASK 0x0000FFFFU
290 #define DFSDM_CKAB_TIMEOUT 5000U
291 #define DFSDM1_CHANNEL_NUMBER 4U
292 #if defined (DFSDM2_Channel0)
293 #define DFSDM2_CHANNEL_NUMBER 8U
311 __IO uint32_t v_dfsdm1ChannelCounter = 0U;
314 #if defined (DFSDM2_Channel0)
315 __IO uint32_t v_dfsdm2ChannelCounter = 0U;
326 static uint32_t DFSDM_GetInjChannelsNbr(uint32_t Channels);
327 static uint32_t DFSDM_GetChannelFromInstance(
const DFSDM_Channel_TypeDef *Instance);
369 #if defined(DFSDM2_Channel0)
370 __IO uint32_t* channelCounterPtr;
372 DFSDM_Channel_TypeDef* channel0Instance;
376 if(hdfsdm_channel == NULL)
382 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
383 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_channel->Init.OutputClock.Activation));
384 assert_param(IS_DFSDM_CHANNEL_INPUT(hdfsdm_channel->Init.Input.Multiplexer));
385 assert_param(IS_DFSDM_CHANNEL_DATA_PACKING(hdfsdm_channel->Init.Input.DataPacking));
386 assert_param(IS_DFSDM_CHANNEL_INPUT_PINS(hdfsdm_channel->Init.Input.Pins));
387 assert_param(IS_DFSDM_CHANNEL_SERIAL_INTERFACE_TYPE(hdfsdm_channel->Init.SerialInterface.Type));
388 assert_param(IS_DFSDM_CHANNEL_SPI_CLOCK(hdfsdm_channel->Init.SerialInterface.SpiClock));
389 assert_param(IS_DFSDM_CHANNEL_FILTER_ORDER(hdfsdm_channel->Init.Awd.FilterOrder));
390 assert_param(IS_DFSDM_CHANNEL_FILTER_OVS_RATIO(hdfsdm_channel->Init.Awd.Oversampling));
391 assert_param(IS_DFSDM_CHANNEL_OFFSET(hdfsdm_channel->Init.Offset));
392 assert_param(IS_DFSDM_CHANNEL_RIGHT_BIT_SHIFT(hdfsdm_channel->Init.RightBitShift));
394 #if defined(DFSDM2_Channel0)
396 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
398 channelCounterPtr = &v_dfsdm1ChannelCounter;
399 channelHandleTable = a_dfsdm1ChannelHandle;
400 channel0Instance = DFSDM1_Channel0;
404 channelCounterPtr = &v_dfsdm2ChannelCounter;
405 channelHandleTable = a_dfsdm2ChannelHandle;
406 channel0Instance = DFSDM2_Channel0;
410 if(channelHandleTable[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] != NULL)
415 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
421 if(hdfsdm_channel->MspInitCallback == NULL)
425 hdfsdm_channel->MspInitCallback(hdfsdm_channel);
432 (*channelCounterPtr)++;
435 if(*channelCounterPtr == 1U)
437 assert_param(IS_DFSDM_CHANNEL_OUTPUT_CLOCK(hdfsdm_channel->Init.OutputClock.Selection));
439 channel0Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKOUTSRC);
440 channel0Instance->CHCFGR1 |= hdfsdm_channel->Init.OutputClock.Selection;
443 channel0Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKOUTDIV);
444 if(hdfsdm_channel->Init.OutputClock.Activation == ENABLE)
446 assert_param(IS_DFSDM_CHANNEL_OUTPUT_CLOCK_DIVIDER(hdfsdm_channel->Init.OutputClock.Divider));
448 channel0Instance->CHCFGR1 |= (uint32_t) ((hdfsdm_channel->Init.OutputClock.Divider - 1U) <<
449 DFSDM_CHCFGR1_CKOUTDIV_Pos);
453 channel0Instance->CHCFGR1 |= DFSDM_CHCFGR1_DFSDMEN;
457 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_DATPACK | DFSDM_CHCFGR1_DATMPX |
458 DFSDM_CHCFGR1_CHINSEL);
459 hdfsdm_channel->Instance->CHCFGR1 |= (hdfsdm_channel->Init.Input.Multiplexer |
460 hdfsdm_channel->Init.Input.DataPacking |
461 hdfsdm_channel->Init.Input.Pins);
464 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_SITP | DFSDM_CHCFGR1_SPICKSEL);
465 hdfsdm_channel->Instance->CHCFGR1 |= (hdfsdm_channel->Init.SerialInterface.Type |
466 hdfsdm_channel->Init.SerialInterface.SpiClock);
469 hdfsdm_channel->Instance->CHAWSCDR &= ~(DFSDM_CHAWSCDR_AWFORD | DFSDM_CHAWSCDR_AWFOSR);
470 hdfsdm_channel->Instance->CHAWSCDR |= (hdfsdm_channel->Init.Awd.FilterOrder |
471 ((hdfsdm_channel->Init.Awd.Oversampling - 1U) << DFSDM_CHAWSCDR_AWFOSR_Pos));
474 hdfsdm_channel->Instance->CHCFGR2 &= ~(DFSDM_CHCFGR2_OFFSET | DFSDM_CHCFGR2_DTRBS);
475 hdfsdm_channel->Instance->CHCFGR2 |= (((uint32_t) hdfsdm_channel->Init.Offset << DFSDM_CHCFGR2_OFFSET_Pos) |
476 (hdfsdm_channel->Init.RightBitShift << DFSDM_CHCFGR2_DTRBS_Pos));
479 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CHEN;
482 hdfsdm_channel->State = HAL_DFSDM_CHANNEL_STATE_READY;
485 channelHandleTable[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] = hdfsdm_channel;
489 if(a_dfsdm1ChannelHandle[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] != NULL)
494 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
500 if(hdfsdm_channel->MspInitCallback == NULL)
504 hdfsdm_channel->MspInitCallback(hdfsdm_channel);
511 v_dfsdm1ChannelCounter++;
514 if(v_dfsdm1ChannelCounter == 1U)
516 assert_param(IS_DFSDM_CHANNEL_OUTPUT_CLOCK(hdfsdm_channel->Init.OutputClock.Selection));
518 DFSDM1_Channel0->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKOUTSRC);
519 DFSDM1_Channel0->CHCFGR1 |= hdfsdm_channel->Init.OutputClock.Selection;
522 DFSDM1_Channel0->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKOUTDIV);
523 if(hdfsdm_channel->Init.OutputClock.Activation == ENABLE)
525 assert_param(IS_DFSDM_CHANNEL_OUTPUT_CLOCK_DIVIDER(hdfsdm_channel->Init.OutputClock.Divider));
527 DFSDM1_Channel0->CHCFGR1 |= (uint32_t) ((hdfsdm_channel->Init.OutputClock.Divider - 1U) <<
528 DFSDM_CHCFGR1_CKOUTDIV_Pos);
532 DFSDM1_Channel0->CHCFGR1 |= DFSDM_CHCFGR1_DFSDMEN;
536 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_DATPACK | DFSDM_CHCFGR1_DATMPX |
537 DFSDM_CHCFGR1_CHINSEL);
538 hdfsdm_channel->Instance->CHCFGR1 |= (hdfsdm_channel->Init.Input.Multiplexer |
539 hdfsdm_channel->Init.Input.DataPacking |
540 hdfsdm_channel->Init.Input.Pins);
543 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_SITP | DFSDM_CHCFGR1_SPICKSEL);
544 hdfsdm_channel->Instance->CHCFGR1 |= (hdfsdm_channel->Init.SerialInterface.Type |
545 hdfsdm_channel->Init.SerialInterface.SpiClock);
548 hdfsdm_channel->Instance->CHAWSCDR &= ~(DFSDM_CHAWSCDR_AWFORD | DFSDM_CHAWSCDR_AWFOSR);
549 hdfsdm_channel->Instance->CHAWSCDR |= (hdfsdm_channel->Init.Awd.FilterOrder |
550 ((hdfsdm_channel->Init.Awd.Oversampling - 1U) << DFSDM_CHAWSCDR_AWFOSR_Pos));
553 hdfsdm_channel->Instance->CHCFGR2 &= ~(DFSDM_CHCFGR2_OFFSET | DFSDM_CHCFGR2_DTRBS);
554 hdfsdm_channel->Instance->CHCFGR2 |= (((uint32_t) hdfsdm_channel->Init.Offset << DFSDM_CHCFGR2_OFFSET_Pos) |
555 (hdfsdm_channel->Init.RightBitShift << DFSDM_CHCFGR2_DTRBS_Pos));
558 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CHEN;
561 hdfsdm_channel->State = HAL_DFSDM_CHANNEL_STATE_READY;
564 a_dfsdm1ChannelHandle[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] = hdfsdm_channel;
577 #if defined(DFSDM2_Channel0)
578 __IO uint32_t* channelCounterPtr;
580 DFSDM_Channel_TypeDef* channel0Instance;
584 if(hdfsdm_channel == NULL)
590 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
592 #if defined(DFSDM2_Channel0)
594 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
596 channelCounterPtr = &v_dfsdm1ChannelCounter;
597 channelHandleTable = a_dfsdm1ChannelHandle;
598 channel0Instance = DFSDM1_Channel0;
602 channelCounterPtr = &v_dfsdm2ChannelCounter;
603 channelHandleTable = a_dfsdm2ChannelHandle;
604 channel0Instance = DFSDM2_Channel0;
608 if(channelHandleTable[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] == NULL)
614 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CHEN);
617 (*channelCounterPtr)--;
620 if(*channelCounterPtr == 0U)
622 channel0Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_DFSDMEN);
626 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
627 if(hdfsdm_channel->MspDeInitCallback == NULL)
631 hdfsdm_channel->MspDeInitCallback(hdfsdm_channel);
637 hdfsdm_channel->State = HAL_DFSDM_CHANNEL_STATE_RESET;
640 channelHandleTable[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] = NULL;
643 if(a_dfsdm1ChannelHandle[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] == NULL)
649 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CHEN);
652 v_dfsdm1ChannelCounter--;
655 if(v_dfsdm1ChannelCounter == 0U)
657 DFSDM1_Channel0->CHCFGR1 &= ~(DFSDM_CHCFGR1_DFSDMEN);
661 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
662 if(hdfsdm_channel->MspDeInitCallback == NULL)
666 hdfsdm_channel->MspDeInitCallback(hdfsdm_channel);
672 hdfsdm_channel->State = HAL_DFSDM_CHANNEL_STATE_RESET;
689 UNUSED(hdfsdm_channel);
703 UNUSED(hdfsdm_channel);
709 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
727 HAL_StatusTypeDef status = HAL_OK;
729 if(pCallback == NULL)
736 if(HAL_DFSDM_CHANNEL_STATE_READY == hdfsdm_channel->State)
741 hdfsdm_channel->CkabCallback = pCallback;
744 hdfsdm_channel->ScdCallback = pCallback;
747 hdfsdm_channel->MspInitCallback = pCallback;
750 hdfsdm_channel->MspDeInitCallback = pCallback;
758 else if(HAL_DFSDM_CHANNEL_STATE_RESET == hdfsdm_channel->State)
763 hdfsdm_channel->MspInitCallback = pCallback;
766 hdfsdm_channel->MspDeInitCallback = pCallback;
798 HAL_StatusTypeDef status = HAL_OK;
800 if(HAL_DFSDM_CHANNEL_STATE_READY == hdfsdm_channel->State)
822 else if(HAL_DFSDM_CHANNEL_STATE_RESET == hdfsdm_channel->State)
877 HAL_StatusTypeDef status = HAL_OK;
881 #if defined(DFSDM2_Channel0)
882 DFSDM_Filter_TypeDef* filter0Instance;
886 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
889 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
896 #if defined (DFSDM2_Channel0)
898 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
900 filter0Instance = DFSDM1_Filter0;
904 filter0Instance = DFSDM2_Filter0;
907 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
913 while((((filter0Instance->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) != 0U)
915 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
921 status = HAL_TIMEOUT;
927 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
933 while((((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) != 0U)
935 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
941 status = HAL_TIMEOUT;
950 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CKABEN;
968 #if defined(DFSDM2_Channel0)
969 DFSDM_Filter_TypeDef* filter0Instance;
973 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
976 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
983 #if defined(DFSDM2_Channel0)
986 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
988 filter0Instance = DFSDM1_Filter0;
992 filter0Instance = DFSDM2_Filter0;
996 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1002 while((((filter0Instance->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) == 0U)
1005 if(Timeout != HAL_MAX_DELAY)
1007 if((Timeout == 0U) || ((
HAL_GetTick()-tickstart) > Timeout))
1016 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1019 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1025 while((((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) == 0U)
1028 if(Timeout != HAL_MAX_DELAY)
1030 if(((
HAL_GetTick()-tickstart) > Timeout) || (Timeout == 0U))
1039 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1053 HAL_StatusTypeDef status = HAL_OK;
1055 #if defined(DFSDM2_Channel0)
1056 DFSDM_Filter_TypeDef* filter0Instance;
1060 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1063 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1070 #if defined(DFSDM2_Channel0)
1073 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
1075 filter0Instance = DFSDM1_Filter0;
1079 filter0Instance = DFSDM2_Filter0;
1083 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKABEN);
1086 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1087 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1091 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKABEN);
1094 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1095 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1113 HAL_StatusTypeDef status = HAL_OK;
1116 #if defined(DFSDM2_Channel0)
1117 DFSDM_Filter_TypeDef* filter0Instance;
1121 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1124 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1131 #if defined(DFSDM2_Channel0)
1134 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
1136 filter0Instance = DFSDM1_Filter0;
1140 filter0Instance = DFSDM2_Filter0;
1144 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1150 while((((filter0Instance->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) != 0U)
1152 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1155 if((
HAL_GetTick()-tickstart) > DFSDM_CKAB_TIMEOUT)
1158 status = HAL_TIMEOUT;
1163 if(status == HAL_OK)
1166 filter0Instance->FLTCR2 |= DFSDM_FLTCR2_CKABIE;
1169 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CKABEN;
1173 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1179 while((((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) != 0U)
1181 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1184 if((
HAL_GetTick()-tickstart) > DFSDM_CKAB_TIMEOUT)
1187 status = HAL_TIMEOUT;
1192 if(status == HAL_OK)
1195 DFSDM1_Filter0->FLTCR2 |= DFSDM_FLTCR2_CKABIE;
1198 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CKABEN;
1215 UNUSED(hdfsdm_channel);
1229 HAL_StatusTypeDef status = HAL_OK;
1231 #if defined(DFSDM2_Channel0)
1232 DFSDM_Filter_TypeDef* filter0Instance;
1236 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1239 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1246 #if defined(DFSDM2_Channel0)
1249 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
1251 filter0Instance = DFSDM1_Filter0;
1255 filter0Instance = DFSDM2_Filter0;
1259 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKABEN);
1262 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1263 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1266 filter0Instance->FLTCR2 &= ~(DFSDM_FLTCR2_CKABIE);
1270 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKABEN);
1273 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1274 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1277 DFSDM1_Filter0->FLTCR2 &= ~(DFSDM_FLTCR2_CKABIE);
1297 uint32_t BreakSignal)
1299 HAL_StatusTypeDef status = HAL_OK;
1302 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1303 assert_param(IS_DFSDM_CHANNEL_SCD_THRESHOLD(Threshold));
1304 assert_param(IS_DFSDM_BREAK_SIGNALS(BreakSignal));
1307 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1315 hdfsdm_channel->Instance->CHAWSCDR &= ~(DFSDM_CHAWSCDR_BKSCD | DFSDM_CHAWSCDR_SCDT);
1316 hdfsdm_channel->Instance->CHAWSCDR |= ((BreakSignal << DFSDM_CHAWSCDR_BKSCD_Pos) | \
1320 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_SCDEN;
1337 #if defined(DFSDM2_Channel0)
1338 DFSDM_Filter_TypeDef* filter0Instance;
1342 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1345 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1353 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1355 #if defined(DFSDM2_Channel0)
1357 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
1359 filter0Instance = DFSDM1_Filter0;
1363 filter0Instance = DFSDM2_Filter0;
1370 while(((filter0Instance->FLTISR & DFSDM_FLTISR_SCDF) >> (DFSDM_FLTISR_SCDF_Pos + channel)) == 0U)
1373 if(Timeout != HAL_MAX_DELAY)
1375 if((Timeout == 0U) || ((
HAL_GetTick()-tickstart) > Timeout))
1384 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1391 while(((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_SCDF) >> (DFSDM_FLTISR_SCDF_Pos + channel)) == 0U)
1394 if(Timeout != HAL_MAX_DELAY)
1396 if(((
HAL_GetTick()-tickstart) > Timeout) || (Timeout == 0U))
1405 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1420 HAL_StatusTypeDef status = HAL_OK;
1422 #if defined(DFSDM2_Channel0)
1423 DFSDM_Filter_TypeDef* filter0Instance;
1427 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1430 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1438 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_SCDEN);
1441 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1443 #if defined(DFSDM2_Channel0)
1445 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
1447 filter0Instance = DFSDM1_Filter0;
1451 filter0Instance = DFSDM2_Filter0;
1454 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1456 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1475 uint32_t BreakSignal)
1477 HAL_StatusTypeDef status = HAL_OK;
1478 #if defined(DFSDM2_Channel0)
1479 DFSDM_Filter_TypeDef* filter0Instance;
1483 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1484 assert_param(IS_DFSDM_CHANNEL_SCD_THRESHOLD(Threshold));
1485 assert_param(IS_DFSDM_BREAK_SIGNALS(BreakSignal));
1488 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1495 #if defined(DFSDM2_Channel0)
1497 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
1499 filter0Instance = DFSDM1_Filter0;
1503 filter0Instance = DFSDM2_Filter0;
1506 filter0Instance->FLTCR2 |= DFSDM_FLTCR2_SCDIE;
1509 DFSDM1_Filter0->FLTCR2 |= DFSDM_FLTCR2_SCDIE;
1513 hdfsdm_channel->Instance->CHAWSCDR &= ~(DFSDM_CHAWSCDR_BKSCD | DFSDM_CHAWSCDR_SCDT);
1514 hdfsdm_channel->Instance->CHAWSCDR |= ((BreakSignal << DFSDM_CHAWSCDR_BKSCD_Pos) | \
1518 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_SCDEN;
1532 UNUSED(hdfsdm_channel);
1546 HAL_StatusTypeDef status = HAL_OK;
1548 #if defined(DFSDM2_Channel0)
1549 DFSDM_Filter_TypeDef* filter0Instance;
1553 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1556 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1564 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_SCDEN);
1567 channel = DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance);
1568 #if defined(DFSDM2_Channel0)
1570 if(IS_DFSDM1_CHANNEL_INSTANCE(hdfsdm_channel->Instance))
1572 filter0Instance = DFSDM1_Filter0;
1576 filter0Instance = DFSDM2_Filter0;
1579 filter0Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1582 filter0Instance->FLTCR2 &= ~(DFSDM_FLTCR2_SCDIE);
1584 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1587 DFSDM1_Filter0->FLTCR2 &= ~(DFSDM_FLTCR2_SCDIE);
1601 return (int16_t) hdfsdm_channel->Instance->CHWDATAR;
1614 HAL_StatusTypeDef status = HAL_OK;
1617 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1618 assert_param(IS_DFSDM_CHANNEL_OFFSET(Offset));
1621 if(hdfsdm_channel->State != HAL_DFSDM_CHANNEL_STATE_READY)
1629 hdfsdm_channel->Instance->CHCFGR2 &= ~(DFSDM_CHCFGR2_OFFSET);
1630 hdfsdm_channel->Instance->CHCFGR2 |= ((uint32_t) Offset << DFSDM_CHCFGR2_OFFSET_Pos);
1661 return hdfsdm_channel->State;
1691 if(hdfsdm_filter == NULL)
1697 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1698 assert_param(IS_DFSDM_FILTER_REG_TRIGGER(hdfsdm_filter->Init.RegularParam.Trigger));
1699 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.RegularParam.FastMode));
1700 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.RegularParam.DmaMode));
1701 assert_param(IS_DFSDM_FILTER_INJ_TRIGGER(hdfsdm_filter->Init.InjectedParam.Trigger));
1702 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.InjectedParam.ScanMode));
1703 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.InjectedParam.DmaMode));
1704 assert_param(IS_DFSDM_FILTER_SINC_ORDER(hdfsdm_filter->Init.FilterParam.SincOrder));
1705 assert_param(IS_DFSDM_FILTER_OVS_RATIO(hdfsdm_filter->Init.FilterParam.Oversampling));
1706 assert_param(IS_DFSDM_FILTER_INTEGRATOR_OVS_RATIO(hdfsdm_filter->Init.FilterParam.IntOversampling));
1709 if((hdfsdm_filter->Instance == DFSDM1_Filter0) &&
1710 ((hdfsdm_filter->Init.RegularParam.Trigger == DFSDM_FILTER_SYNC_TRIGGER) ||
1711 (hdfsdm_filter->Init.InjectedParam.Trigger == DFSDM_FILTER_SYNC_TRIGGER)))
1715 #if defined (DFSDM2_Channel0)
1716 if((hdfsdm_filter->Instance == DFSDM2_Filter0) &&
1717 ((hdfsdm_filter->Init.RegularParam.Trigger == DFSDM_FILTER_SYNC_TRIGGER) ||
1718 (hdfsdm_filter->Init.InjectedParam.Trigger == DFSDM_FILTER_SYNC_TRIGGER)))
1725 hdfsdm_filter->RegularContMode = DFSDM_CONTINUOUS_CONV_OFF;
1726 hdfsdm_filter->InjectedChannelsNbr = 1U;
1727 hdfsdm_filter->InjConvRemaining = 1U;
1728 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_NONE;
1730 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
1740 if(hdfsdm_filter->MspInitCallback == NULL)
1744 hdfsdm_filter->MspInitCallback(hdfsdm_filter);
1751 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RSYNC);
1752 if(hdfsdm_filter->Init.RegularParam.FastMode == ENABLE)
1754 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_FAST;
1758 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_FAST);
1761 if(hdfsdm_filter->Init.RegularParam.DmaMode == ENABLE)
1763 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RDMAEN;
1767 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RDMAEN);
1771 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JSYNC | DFSDM_FLTCR1_JEXTEN | DFSDM_FLTCR1_JEXTSEL);
1772 if(hdfsdm_filter->Init.InjectedParam.Trigger == DFSDM_FILTER_EXT_TRIGGER)
1774 assert_param(IS_DFSDM_FILTER_EXT_TRIG(hdfsdm_filter->Init.InjectedParam.ExtTrigger));
1775 assert_param(IS_DFSDM_FILTER_EXT_TRIG_EDGE(hdfsdm_filter->Init.InjectedParam.ExtTriggerEdge));
1776 hdfsdm_filter->Instance->FLTCR1 |= (hdfsdm_filter->Init.InjectedParam.ExtTrigger);
1779 if(hdfsdm_filter->Init.InjectedParam.ScanMode == ENABLE)
1781 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSCAN;
1785 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JSCAN);
1788 if(hdfsdm_filter->Init.InjectedParam.DmaMode == ENABLE)
1790 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JDMAEN;
1794 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JDMAEN);
1798 hdfsdm_filter->Instance->FLTFCR &= ~(DFSDM_FLTFCR_FORD | DFSDM_FLTFCR_FOSR | DFSDM_FLTFCR_IOSR);
1799 hdfsdm_filter->Instance->FLTFCR |= (hdfsdm_filter->Init.FilterParam.SincOrder |
1800 ((hdfsdm_filter->Init.FilterParam.Oversampling - 1U) << DFSDM_FLTFCR_FOSR_Pos) |
1801 (hdfsdm_filter->Init.FilterParam.IntOversampling - 1U));
1804 hdfsdm_filter->RegularTrigger = hdfsdm_filter->Init.RegularParam.Trigger;
1805 hdfsdm_filter->InjectedTrigger = hdfsdm_filter->Init.InjectedParam.Trigger;
1806 hdfsdm_filter->ExtTriggerEdge = hdfsdm_filter->Init.InjectedParam.ExtTriggerEdge;
1807 hdfsdm_filter->InjectedScanMode = hdfsdm_filter->Init.InjectedParam.ScanMode;
1810 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
1826 if(hdfsdm_filter == NULL)
1832 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1835 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
1838 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
1839 if(hdfsdm_filter->MspDeInitCallback == NULL)
1843 hdfsdm_filter->MspDeInitCallback(hdfsdm_filter);
1862 UNUSED(hdfsdm_filter);
1876 UNUSED(hdfsdm_filter);
1882 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
1903 HAL_StatusTypeDef status = HAL_OK;
1905 if(pCallback == NULL)
1908 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1919 hdfsdm_filter->RegConvCpltCallback = pCallback;
1922 hdfsdm_filter->RegConvHalfCpltCallback = pCallback;
1925 hdfsdm_filter->InjConvCpltCallback = pCallback;
1928 hdfsdm_filter->InjConvHalfCpltCallback = pCallback;
1931 hdfsdm_filter->ErrorCallback = pCallback;
1934 hdfsdm_filter->MspInitCallback = pCallback;
1937 hdfsdm_filter->MspDeInitCallback = pCallback;
1941 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1952 hdfsdm_filter->MspInitCallback = pCallback;
1955 hdfsdm_filter->MspDeInitCallback = pCallback;
1959 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1968 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1994 HAL_StatusTypeDef status = HAL_OK;
2023 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2041 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2050 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2065 pDFSDM_Filter_AwdCallbackTypeDef pCallback)
2067 HAL_StatusTypeDef status = HAL_OK;
2069 if(pCallback == NULL)
2072 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2080 hdfsdm_filter->AwdCallback = pCallback;
2085 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2101 HAL_StatusTypeDef status = HAL_OK;
2110 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2147 uint32_t ContinuousMode)
2149 HAL_StatusTypeDef status = HAL_OK;
2152 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2153 assert_param(IS_DFSDM_REGULAR_CHANNEL(Channel));
2154 assert_param(IS_DFSDM_CONTINUOUS_MODE(ContinuousMode));
2161 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RCH | DFSDM_FLTCR1_RCONT);
2162 if(ContinuousMode == DFSDM_CONTINUOUS_CONV_ON)
2164 hdfsdm_filter->Instance->FLTCR1 |= (uint32_t) (((Channel & DFSDM_MSB_MASK) << DFSDM_FLTCR1_MSB_RCH_OFFSET) |
2165 DFSDM_FLTCR1_RCONT);
2169 hdfsdm_filter->Instance->FLTCR1 |= (uint32_t) ((Channel & DFSDM_MSB_MASK) << DFSDM_FLTCR1_MSB_RCH_OFFSET);
2172 hdfsdm_filter->RegularContMode = ContinuousMode;
2193 HAL_StatusTypeDef status = HAL_OK;
2196 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2197 assert_param(IS_DFSDM_INJECTED_CHANNEL(Channel));
2204 hdfsdm_filter->Instance->FLTJCHGR = (uint32_t) (Channel & DFSDM_LSB_MASK);
2206 hdfsdm_filter->InjectedChannelsNbr = DFSDM_GetInjChannelsNbr(Channel);
2208 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
2209 hdfsdm_filter->InjectedChannelsNbr : 1U;
2262 HAL_StatusTypeDef status = HAL_OK;
2265 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2272 DFSDM_RegConvStart(hdfsdm_filter);
2295 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2310 while((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_REOCF) != DFSDM_FLTISR_REOCF)
2313 if(Timeout != HAL_MAX_DELAY)
2315 if(((
HAL_GetTick()-tickstart) > Timeout) || (Timeout == 0U))
2323 if((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_ROVRF) == DFSDM_FLTISR_ROVRF)
2326 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_REGULAR_OVERRUN;
2327 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
2328 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
2334 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRROVRF;
2337 if((hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2338 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
2356 HAL_StatusTypeDef status = HAL_OK;
2359 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2371 DFSDM_RegConvStop(hdfsdm_filter);
2386 HAL_StatusTypeDef status = HAL_OK;
2389 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2396 hdfsdm_filter->Instance->FLTCR2 |= (DFSDM_FLTCR2_REOCIE | DFSDM_FLTCR2_ROVRIE);
2399 DFSDM_RegConvStart(hdfsdm_filter);
2417 HAL_StatusTypeDef status = HAL_OK;
2420 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2432 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_REOCIE | DFSDM_FLTCR2_ROVRIE);
2435 DFSDM_RegConvStop(hdfsdm_filter);
2457 HAL_StatusTypeDef status = HAL_OK;
2460 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2463 if((pData == NULL) || (Length == 0U))
2468 else if((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_RDMAEN) != DFSDM_FLTCR1_RDMAEN)
2473 else if((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2474 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2475 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_NORMAL) && \
2480 else if((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2481 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2482 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR))
2491 hdfsdm_filter->hdmaReg->XferCpltCallback = DFSDM_DMARegularConvCplt;
2492 hdfsdm_filter->hdmaReg->XferErrorCallback = DFSDM_DMAError;
2493 hdfsdm_filter->hdmaReg->XferHalfCpltCallback = (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR) ?\
2494 DFSDM_DMARegularHalfConvCplt : NULL;
2497 if(
HAL_DMA_Start_IT(hdfsdm_filter->hdmaReg, (uint32_t)&hdfsdm_filter->Instance->FLTRDATAR, \
2498 (uint32_t) pData, Length) != HAL_OK)
2507 DFSDM_RegConvStart(hdfsdm_filter);
2534 HAL_StatusTypeDef status = HAL_OK;
2537 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2540 if((pData == NULL) || (Length == 0U))
2545 else if((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_RDMAEN) != DFSDM_FLTCR1_RDMAEN)
2550 else if((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2551 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2552 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_NORMAL) && \
2557 else if((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2558 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2559 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR))
2568 hdfsdm_filter->hdmaReg->XferCpltCallback = DFSDM_DMARegularConvCplt;
2569 hdfsdm_filter->hdmaReg->XferErrorCallback = DFSDM_DMAError;
2570 hdfsdm_filter->hdmaReg->XferHalfCpltCallback = (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR) ?\
2571 DFSDM_DMARegularHalfConvCplt : NULL;
2574 if(
HAL_DMA_Start_IT(hdfsdm_filter->hdmaReg, (uint32_t)(&hdfsdm_filter->Instance->FLTRDATAR) + 2U, \
2575 (uint32_t) pData, Length) != HAL_OK)
2584 DFSDM_RegConvStart(hdfsdm_filter);
2603 HAL_StatusTypeDef status = HAL_OK;
2606 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2627 DFSDM_RegConvStop(hdfsdm_filter);
2647 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2648 assert_param(Channel != NULL);
2651 reg = hdfsdm_filter->Instance->FLTRDATAR;
2654 *Channel = (reg & DFSDM_FLTRDATAR_RDATACH);
2655 value = ((int32_t)(reg & DFSDM_FLTRDATAR_RDATA) >> DFSDM_FLTRDATAR_RDATA_Pos);
2670 HAL_StatusTypeDef status = HAL_OK;
2673 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2680 DFSDM_InjConvStart(hdfsdm_filter);
2703 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2718 while((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_JEOCF) != DFSDM_FLTISR_JEOCF)
2721 if(Timeout != HAL_MAX_DELAY)
2723 if( ((
HAL_GetTick()-tickstart) > Timeout) || (Timeout == 0U))
2731 if((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_JOVRF) == DFSDM_FLTISR_JOVRF)
2734 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INJECTED_OVERRUN;
2735 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
2736 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
2742 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRJOVRF;
2746 hdfsdm_filter->InjConvRemaining--;
2747 if(hdfsdm_filter->InjConvRemaining == 0U)
2750 if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
2757 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
2758 hdfsdm_filter->InjectedChannelsNbr : 1U;
2774 HAL_StatusTypeDef status = HAL_OK;
2777 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2789 DFSDM_InjConvStop(hdfsdm_filter);
2804 HAL_StatusTypeDef status = HAL_OK;
2807 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2814 hdfsdm_filter->Instance->FLTCR2 |= (DFSDM_FLTCR2_JEOCIE | DFSDM_FLTCR2_JOVRIE);
2817 DFSDM_InjConvStart(hdfsdm_filter);
2835 HAL_StatusTypeDef status = HAL_OK;
2838 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2850 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_JEOCIE | DFSDM_FLTCR2_JOVRIE);
2853 DFSDM_InjConvStop(hdfsdm_filter);
2875 HAL_StatusTypeDef status = HAL_OK;
2878 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2881 if((pData == NULL) || (Length == 0U))
2886 else if((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_JDMAEN) != DFSDM_FLTCR1_JDMAEN)
2891 else if((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2892 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_NORMAL) && \
2893 (Length > hdfsdm_filter->InjConvRemaining))
2897 else if((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2898 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR))
2907 hdfsdm_filter->hdmaInj->XferCpltCallback = DFSDM_DMAInjectedConvCplt;
2908 hdfsdm_filter->hdmaInj->XferErrorCallback = DFSDM_DMAError;
2909 hdfsdm_filter->hdmaInj->XferHalfCpltCallback = (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR) ?\
2910 DFSDM_DMAInjectedHalfConvCplt : NULL;
2913 if(
HAL_DMA_Start_IT(hdfsdm_filter->hdmaInj, (uint32_t)&hdfsdm_filter->Instance->FLTJDATAR, \
2914 (uint32_t) pData, Length) != HAL_OK)
2923 DFSDM_InjConvStart(hdfsdm_filter);
2950 HAL_StatusTypeDef status = HAL_OK;
2953 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2956 if((pData == NULL) || (Length == 0U))
2961 else if((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_JDMAEN) != DFSDM_FLTCR1_JDMAEN)
2966 else if((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2967 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_NORMAL) && \
2968 (Length > hdfsdm_filter->InjConvRemaining))
2972 else if((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2973 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR))
2982 hdfsdm_filter->hdmaInj->XferCpltCallback = DFSDM_DMAInjectedConvCplt;
2983 hdfsdm_filter->hdmaInj->XferErrorCallback = DFSDM_DMAError;
2984 hdfsdm_filter->hdmaInj->XferHalfCpltCallback = (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR) ?\
2985 DFSDM_DMAInjectedHalfConvCplt : NULL;
2988 if(
HAL_DMA_Start_IT(hdfsdm_filter->hdmaInj, (uint32_t)(&hdfsdm_filter->Instance->FLTJDATAR) + 2U, \
2989 (uint32_t) pData, Length) != HAL_OK)
2998 DFSDM_InjConvStart(hdfsdm_filter);
3017 HAL_StatusTypeDef status = HAL_OK;
3020 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3041 DFSDM_InjConvStop(hdfsdm_filter);
3061 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3062 assert_param(Channel != NULL);
3065 reg = hdfsdm_filter->Instance->FLTJDATAR;
3068 *Channel = (reg & DFSDM_FLTJDATAR_JDATACH);
3069 value = ((int32_t)(reg & DFSDM_FLTJDATAR_JDATA) >> DFSDM_FLTJDATAR_JDATA_Pos);
3084 HAL_StatusTypeDef status = HAL_OK;
3087 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3088 assert_param(IS_DFSDM_FILTER_AWD_DATA_SOURCE(awdParam->
DataSource));
3089 assert_param(IS_DFSDM_INJECTED_CHANNEL(awdParam->
Channel));
3090 assert_param(IS_DFSDM_FILTER_AWD_THRESHOLD(awdParam->
HighThreshold));
3091 assert_param(IS_DFSDM_FILTER_AWD_THRESHOLD(awdParam->
LowThreshold));
3105 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_AWFSEL);
3106 hdfsdm_filter->Instance->FLTCR1 |= awdParam->
DataSource;
3109 hdfsdm_filter->Instance->FLTAWHTR &= ~(DFSDM_FLTAWHTR_AWHT | DFSDM_FLTAWHTR_BKAWH);
3110 hdfsdm_filter->Instance->FLTAWHTR |= (((uint32_t) awdParam->
HighThreshold << DFSDM_FLTAWHTR_AWHT_Pos) | \
3111 awdParam->HighBreakSignal);
3112 hdfsdm_filter->Instance->FLTAWLTR &= ~(DFSDM_FLTAWLTR_AWLT | DFSDM_FLTAWLTR_BKAWL);
3113 hdfsdm_filter->Instance->FLTAWLTR |= (((uint32_t) awdParam->
LowThreshold << DFSDM_FLTAWLTR_AWLT_Pos) | \
3114 awdParam->LowBreakSignal);
3117 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_AWDCH);
3118 hdfsdm_filter->Instance->FLTCR2 |= (((awdParam->
Channel & DFSDM_LSB_MASK) << DFSDM_FLTCR2_AWDCH_Pos) | \
3119 DFSDM_FLTCR2_AWDIE);
3132 HAL_StatusTypeDef status = HAL_OK;
3135 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3147 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_AWDCH | DFSDM_FLTCR2_AWDIE);
3150 hdfsdm_filter->Instance->FLTAWCFR = (DFSDM_FLTAWCFR_CLRAWHTF | DFSDM_FLTAWCFR_CLRAWLTF);
3153 hdfsdm_filter->Instance->FLTAWHTR &= ~(DFSDM_FLTAWHTR_AWHT | DFSDM_FLTAWHTR_BKAWH);
3154 hdfsdm_filter->Instance->FLTAWLTR &= ~(DFSDM_FLTAWLTR_AWLT | DFSDM_FLTAWLTR_BKAWL);
3157 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_AWFSEL);
3173 HAL_StatusTypeDef status = HAL_OK;
3176 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3177 assert_param(IS_DFSDM_INJECTED_CHANNEL(Channel));
3189 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_EXCH);
3190 hdfsdm_filter->Instance->FLTCR2 |= ((Channel & DFSDM_LSB_MASK) << DFSDM_FLTCR2_EXCH_Pos);
3203 HAL_StatusTypeDef status = HAL_OK;
3208 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3220 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_EXCH);
3223 reg1 = hdfsdm_filter->Instance->FLTEXMAX;
3224 reg2 = hdfsdm_filter->Instance->FLTEXMIN;
3246 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3247 assert_param(Channel != NULL);
3250 reg = hdfsdm_filter->Instance->FLTEXMAX;
3253 *Channel = (reg & DFSDM_FLTEXMAX_EXMAXCH);
3254 value = ((int32_t)(reg & DFSDM_FLTEXMAX_EXMAX) >> DFSDM_FLTEXMAX_EXMAX_Pos);
3274 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3275 assert_param(Channel != NULL);
3278 reg = hdfsdm_filter->Instance->FLTEXMIN;
3281 *Channel = (reg & DFSDM_FLTEXMIN_EXMINCH);
3282 value = ((int32_t)(reg & DFSDM_FLTEXMIN_EXMIN) >> DFSDM_FLTEXMIN_EXMIN_Pos);
3297 uint32_t value = 0U;
3300 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3303 reg = hdfsdm_filter->Instance->FLTCNVTIMR;
3306 value = ((reg & DFSDM_FLTCNVTIMR_CNVCNT) >> DFSDM_FLTCNVTIMR_CNVCNT_Pos);
3320 if(((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_ROVRF) != 0U) && \
3321 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_ROVRIE) != 0U))
3324 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRROVRF;
3327 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_REGULAR_OVERRUN;
3330 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3331 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
3337 else if(((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_JOVRF) != 0U) && \
3338 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_JOVRIE) != 0U))
3341 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRJOVRF;
3344 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INJECTED_OVERRUN;
3347 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3348 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
3354 else if(((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_REOCF) != 0U) && \
3355 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_REOCIE) != 0U))
3358 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3359 hdfsdm_filter->RegConvCpltCallback(hdfsdm_filter);
3365 if((hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
3366 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
3369 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_REOCIE);
3377 else if(((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_JEOCF) != 0U) && \
3378 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_JEOCIE) != 0U))
3381 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3382 hdfsdm_filter->InjConvCpltCallback(hdfsdm_filter);
3388 hdfsdm_filter->InjConvRemaining--;
3389 if(hdfsdm_filter->InjConvRemaining == 0U)
3392 if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
3395 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_JEOCIE);
3402 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
3403 hdfsdm_filter->InjectedChannelsNbr : 1U;
3407 else if(((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_AWDF) != 0U) && \
3408 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_AWDIE) != 0U))
3411 uint32_t threshold = 0U;
3412 uint32_t channel = 0U;
3415 reg = hdfsdm_filter->Instance->FLTAWSR;
3416 threshold = ((reg & DFSDM_FLTAWSR_AWLTF) != 0U) ? DFSDM_AWD_LOW_THRESHOLD : DFSDM_AWD_HIGH_THRESHOLD;
3417 if(threshold == DFSDM_AWD_HIGH_THRESHOLD)
3419 reg = reg >> DFSDM_FLTAWSR_AWHTF_Pos;
3421 while((reg & 1U) == 0U)
3427 hdfsdm_filter->Instance->FLTAWCFR = (threshold == DFSDM_AWD_HIGH_THRESHOLD) ? \
3428 (1U << (DFSDM_FLTAWSR_AWHTF_Pos + channel)) : \
3432 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3433 hdfsdm_filter->AwdCallback(hdfsdm_filter, channel, threshold);
3439 else if((hdfsdm_filter->Instance == DFSDM1_Filter0) && \
3440 ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_CKABF) != 0U) && \
3441 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_CKABIE) != 0U))
3444 uint32_t channel = 0U;
3446 reg = ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_CKABF) >> DFSDM_FLTISR_CKABF_Pos);
3448 while(channel < DFSDM1_CHANNEL_NUMBER)
3451 if(((reg & 1U) != 0U) && (a_dfsdm1ChannelHandle[channel] != NULL))
3454 if((a_dfsdm1ChannelHandle[channel]->Instance->CHCFGR1 & DFSDM_CHCFGR1_CKABEN) != 0U)
3457 hdfsdm_filter->Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
3460 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3461 a_dfsdm1ChannelHandle[channel]->CkabCallback(a_dfsdm1ChannelHandle[channel]);
3471 #if defined (DFSDM2_Channel0)
3473 else if((hdfsdm_filter->Instance == DFSDM2_Filter0) && \
3474 ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_CKABF) != 0U) && \
3475 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_CKABIE) != 0U))
3478 uint32_t channel = 0U;
3480 reg = ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_CKABF) >> DFSDM_FLTISR_CKABF_Pos);
3482 while(channel < DFSDM2_CHANNEL_NUMBER)
3485 if(((reg & 1U) != 0U) && (a_dfsdm2ChannelHandle[channel] != NULL))
3488 if((a_dfsdm2ChannelHandle[channel]->Instance->CHCFGR1 & DFSDM_CHCFGR1_CKABEN) != 0U)
3491 hdfsdm_filter->Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
3494 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3495 a_dfsdm2ChannelHandle[channel]->CkabCallback(a_dfsdm2ChannelHandle[channel]);
3507 else if((hdfsdm_filter->Instance == DFSDM1_Filter0) && \
3508 ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_SCDF) != 0U) && \
3509 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_SCDIE) != 0U))
3512 uint32_t channel = 0U;
3515 reg = ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_SCDF) >> DFSDM_FLTISR_SCDF_Pos);
3516 while((reg & 1U) == 0U)
3523 hdfsdm_filter->Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
3526 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3527 a_dfsdm1ChannelHandle[channel]->ScdCallback(a_dfsdm1ChannelHandle[channel]);
3532 #if defined (DFSDM2_Channel0)
3534 else if((hdfsdm_filter->Instance == DFSDM2_Filter0) && \
3535 ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_SCDF) != 0U) && \
3536 ((hdfsdm_filter->Instance->FLTCR2 & DFSDM_FLTCR2_SCDIE) != 0U))
3539 uint32_t channel = 0U;
3542 reg = ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_SCDF) >> DFSDM_FLTISR_SCDF_Pos);
3543 while((reg & 1U) == 0U)
3550 hdfsdm_filter->Instance->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
3553 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
3554 a_dfsdm2ChannelHandle[channel]->ScdCallback(a_dfsdm2ChannelHandle[channel]);
3572 UNUSED(hdfsdm_filter);
3586 UNUSED(hdfsdm_filter);
3602 UNUSED(hdfsdm_filter);
3616 UNUSED(hdfsdm_filter);
3630 uint32_t Channel, uint32_t Threshold)
3633 UNUSED(hdfsdm_filter);
3650 UNUSED(hdfsdm_filter);
3682 return hdfsdm_filter->State;
3692 return hdfsdm_filter->ErrorCode;
3711 #if defined(SYSCFG_MCHDLYCR_BSCKSEL)
3721 tmp = SYSCFG->MCHDLYCR;
3722 tmp = (tmp &(~SYSCFG_MCHDLYCR_BSCKSEL));
3724 SYSCFG->MCHDLYCR = (tmp|SYSCFG_MCHDLYCR_BSCKSEL);
3737 tmp = SYSCFG->MCHDLYCR;
3738 tmp = (tmp &(~SYSCFG_MCHDLYCR_BSCKSEL));
3740 SYSCFG->MCHDLYCR = tmp;
3755 assert_param(IS_DFSDM_DELAY_CLOCK(MCHDLY));
3757 tmp = SYSCFG->MCHDLYCR;
3758 if(MCHDLY == HAL_MCHDLY_CLOCK_DFSDM2)
3760 tmp = tmp &(~SYSCFG_MCHDLYCR_MCHDLY2EN);
3764 tmp = tmp &(~SYSCFG_MCHDLYCR_MCHDLY1EN);
3767 SYSCFG->MCHDLYCR = tmp;
3782 assert_param(IS_DFSDM_DELAY_CLOCK(MCHDLY));
3784 tmp = SYSCFG->MCHDLYCR;
3785 tmp = tmp & ~MCHDLY;
3787 SYSCFG->MCHDLYCR = (tmp|MCHDLY);
3802 assert_param(IS_DFSDM_CLOCKIN_SELECTION(source));
3804 tmp = SYSCFG->MCHDLYCR;
3806 if((source == HAL_DFSDM2_CKIN_PAD) || (source == HAL_DFSDM2_CKIN_DM))
3808 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2CFG);
3810 if(source == HAL_DFSDM2_CKIN_PAD)
3817 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM1CFG);
3820 SYSCFG->MCHDLYCR = (source|tmp);
3835 assert_param(IS_DFSDM_CLOCKOUT_SELECTION(source));
3837 tmp = SYSCFG->MCHDLYCR;
3839 if((source == HAL_DFSDM2_CKOUT_DFSDM2) || (source == HAL_DFSDM2_CKOUT_M27))
3841 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2CKOSEL);
3843 if(source == HAL_DFSDM2_CKOUT_DFSDM2)
3850 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM1CKOSEL);
3853 SYSCFG->MCHDLYCR = (source|tmp);
3868 assert_param(IS_DFSDM_DATAIN0_SRC_SELECTION(source));
3870 tmp = SYSCFG->MCHDLYCR;
3872 if((source == HAL_DATAIN0_DFSDM2_PAD)|| (source == HAL_DATAIN0_DFSDM2_DATAIN1))
3874 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2D0SEL);
3875 if(source == HAL_DATAIN0_DFSDM2_PAD)
3882 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM1D0SEL);
3884 SYSCFG->MCHDLYCR = (source|tmp);
3899 assert_param(IS_DFSDM_DATAIN2_SRC_SELECTION(source));
3901 tmp = SYSCFG->MCHDLYCR;
3903 if((source == HAL_DATAIN2_DFSDM2_PAD)|| (source == HAL_DATAIN2_DFSDM2_DATAIN3))
3905 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2D2SEL);
3906 if (source == HAL_DATAIN2_DFSDM2_PAD)
3913 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM1D2SEL);
3915 SYSCFG->MCHDLYCR = (source|tmp);
3928 assert_param(IS_DFSDM_DATAIN4_SRC_SELECTION(source));
3930 tmp = SYSCFG->MCHDLYCR;
3931 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2D4SEL);
3933 SYSCFG->MCHDLYCR = (source|tmp);
3946 assert_param(IS_DFSDM_DATAIN6_SRC_SELECTION(source));
3948 tmp = SYSCFG->MCHDLYCR;
3950 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2D6SEL);
3952 SYSCFG->MCHDLYCR = (source|tmp);
3976 assert_param(IS_DFSDM_BITSTREM_CLK_DISTRIBUTION(source));
3978 tmp = SYSCFG->MCHDLYCR;
3980 if ((source == HAL_DFSDM1_CLKIN0_TIM4OC2) || (source == HAL_DFSDM1_CLKIN2_TIM4OC2))
3982 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM1CK02SEL);
3984 else if ((source == HAL_DFSDM1_CLKIN1_TIM4OC1) || (source == HAL_DFSDM1_CLKIN3_TIM4OC1))
3986 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM1CK13SEL);
3988 else if ((source == HAL_DFSDM2_CLKIN0_TIM3OC4) || (source == HAL_DFSDM2_CLKIN4_TIM3OC4))
3990 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2CK04SEL);
3992 else if ((source == HAL_DFSDM2_CLKIN1_TIM3OC3) || (source == HAL_DFSDM2_CLKIN5_TIM3OC3))
3994 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2CK15SEL);
3996 }
else if ((source == HAL_DFSDM2_CLKIN2_TIM3OC2) || (source == HAL_DFSDM2_CLKIN6_TIM3OC2))
3998 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2CK26SEL);
4002 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2CK37SEL);
4005 if((source == HAL_DFSDM1_CLKIN0_TIM4OC2) ||(source == HAL_DFSDM1_CLKIN1_TIM4OC1)||
4006 (source == HAL_DFSDM2_CLKIN0_TIM3OC4) ||(source == HAL_DFSDM2_CLKIN1_TIM3OC3)||
4007 (source == HAL_DFSDM2_CLKIN2_TIM3OC2) ||(source == HAL_DFSDM2_CLKIN3_TIM3OC1))
4012 SYSCFG->MCHDLYCR = (source|tmp);
4032 uint32_t mchdlyreg = 0U;
4034 assert_param(IS_DFSDM_DFSDM1_CLKOUT(mchdlystruct->
DFSDM1ClockOut));
4035 assert_param(IS_DFSDM_DFSDM2_CLKOUT(mchdlystruct->
DFSDM2ClockOut));
4036 assert_param(IS_DFSDM_DFSDM1_CLKIN(mchdlystruct->
DFSDM1ClockIn));
4037 assert_param(IS_DFSDM_DFSDM2_CLKIN(mchdlystruct->
DFSDM2ClockIn));
4043 mchdlyreg = (SYSCFG->MCHDLYCR & 0x80103U);
4076 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4077 hdfsdm_filter->RegConvHalfCpltCallback(hdfsdm_filter);
4094 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4095 hdfsdm_filter->RegConvCpltCallback(hdfsdm_filter);
4112 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4113 hdfsdm_filter->InjConvHalfCpltCallback(hdfsdm_filter);
4130 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4131 hdfsdm_filter->InjConvCpltCallback(hdfsdm_filter);
4148 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_DMA;
4151 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4152 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
4163 static uint32_t DFSDM_GetInjChannelsNbr(uint32_t Channels)
4165 uint32_t nbChannels = 0U;
4169 tmp = (uint32_t) (Channels & DFSDM_LSB_MASK);
4172 if((tmp & 1U) != 0U)
4176 tmp = (uint32_t) (tmp >> 1U);
4186 static uint32_t DFSDM_GetChannelFromInstance(
const DFSDM_Channel_TypeDef *Instance)
4191 #if defined(DFSDM2_Channel0)
4192 if((Instance == DFSDM1_Channel0) || (Instance == DFSDM2_Channel0))
4196 else if((Instance == DFSDM1_Channel1) || (Instance == DFSDM2_Channel1))
4200 else if((Instance == DFSDM1_Channel2) || (Instance == DFSDM2_Channel2))
4204 else if((Instance == DFSDM1_Channel3) || (Instance == DFSDM2_Channel3))
4208 else if(Instance == DFSDM2_Channel4)
4212 else if(Instance == DFSDM2_Channel5)
4216 else if(Instance == DFSDM2_Channel6)
4226 if(Instance == DFSDM1_Channel0)
4230 else if(Instance == DFSDM1_Channel1)
4234 else if(Instance == DFSDM1_Channel2)
4255 if(hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER)
4258 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;
4263 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
4266 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSYNC;
4269 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
4274 if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
4276 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSWSTART;
4279 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
4280 hdfsdm_filter->InjectedChannelsNbr : 1U;
4296 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
4299 if(hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SYNC_TRIGGER)
4301 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RSYNC);
4305 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
4310 if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
4312 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSWSTART;
4315 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
4316 hdfsdm_filter->InjectedChannelsNbr : 1U;
4332 if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
4335 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSWSTART;
4340 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
4342 if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SYNC_TRIGGER)
4345 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSYNC;
4350 hdfsdm_filter->Instance->FLTCR1 |= hdfsdm_filter->ExtTriggerEdge;
4354 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
4358 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
4360 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;
4376 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
4379 if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SYNC_TRIGGER)
4381 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JSYNC);
4383 else if(hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_EXT_TRIGGER)
4386 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JEXTEN);
4394 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
4398 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
4400 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;
4404 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
4405 hdfsdm_filter->InjectedChannelsNbr : 1U;
HAL_StatusTypeDef HAL_DFSDM_ChannelDeInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
De-initialize the DFSDM channel.
HAL_StatusTypeDef HAL_DFSDM_Channel_RegisterCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, HAL_DFSDM_Channel_CallbackIDTypeDef CallbackID, pDFSDM_Channel_CallbackTypeDef pCallback)
Register a user DFSDM channel callback to be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_DFSDM_Channel_UnRegisterCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, HAL_DFSDM_Channel_CallbackIDTypeDef CallbackID)
Unregister a user DFSDM channel callback. DFSDM channel callback is redirected to the weak predefined...
void HAL_DFSDM_ChannelMspDeInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
De-initialize the DFSDM channel MSP.
void HAL_DFSDM_ChannelMspInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
Initialize the DFSDM channel MSP.
HAL_StatusTypeDef HAL_DFSDM_ChannelInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
Initialize the DFSDM channel according to the specified parameters in the DFSDM_ChannelInitTypeDef st...
void HAL_DFSDM_FilterMspInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Initializes the DFSDM filter MSP.
HAL_StatusTypeDef HAL_DFSDM_Filter_RegisterAwdCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, pDFSDM_Filter_AwdCallbackTypeDef pCallback)
Register a user DFSDM filter analog watchdog callback to be used instead of the weak predefined callb...
HAL_StatusTypeDef HAL_DFSDM_Filter_UnRegisterCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, HAL_DFSDM_Filter_CallbackIDTypeDef CallbackID)
Unregister a user DFSDM filter callback. DFSDM filter callback is redirected to the weak predefined c...
void HAL_DFSDM_FilterMspDeInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
De-initializes the DFSDM filter MSP.
HAL_StatusTypeDef HAL_DFSDM_Filter_RegisterCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, HAL_DFSDM_Filter_CallbackIDTypeDef CallbackID, pDFSDM_Filter_CallbackTypeDef pCallback)
Register a user DFSDM filter callback to be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_DFSDM_FilterInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Initialize the DFSDM filter according to the specified parameters in the DFSDM_FilterInitTypeDef stru...
HAL_StatusTypeDef HAL_DFSDM_FilterDeInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
De-initializes the DFSDM filter.
HAL_StatusTypeDef HAL_DFSDM_Filter_UnRegisterAwdCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Unregister a user DFSDM filter analog watchdog callback. DFSDM filter AWD callback is redirected to t...
HAL_StatusTypeDef HAL_DFSDM_ChannelScdStart(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, uint32_t Threshold, uint32_t BreakSignal)
This function allows to start short circuit detection in polling mode.
HAL_StatusTypeDef HAL_DFSDM_ChannelScdStart_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, uint32_t Threshold, uint32_t BreakSignal)
This function allows to start short circuit detection in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStart(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to start clock absence detection in polling mode.
void HAL_DFSDM_ChannelCkabCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
Clock absence detection callback.
HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStop_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop clock absence detection in interrupt mode.
int16_t HAL_DFSDM_ChannelGetAwdValue(const DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to get channel analog watchdog value.
HAL_StatusTypeDef HAL_DFSDM_ChannelPollForScd(const DFSDM_Channel_HandleTypeDef *hdfsdm_channel, uint32_t Timeout)
This function allows to poll for the short circuit detection.
HAL_StatusTypeDef HAL_DFSDM_ChannelScdStop(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop short circuit detection in polling mode.
HAL_StatusTypeDef HAL_DFSDM_ChannelPollForCkab(const DFSDM_Channel_HandleTypeDef *hdfsdm_channel, uint32_t Timeout)
This function allows to poll for the clock absence detection.
HAL_StatusTypeDef HAL_DFSDM_ChannelModifyOffset(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, int32_t Offset)
This function allows to modify channel offset value.
void HAL_DFSDM_ChannelScdCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
Short circuit detection callback.
HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStart_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to start clock absence detection in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStop(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop clock absence detection in polling mode.
HAL_StatusTypeDef HAL_DFSDM_ChannelScdStop_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop short circuit detection in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_FilterConfigRegChannel(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel, uint32_t ContinuousMode)
This function allows to select channel and to enable/disable continuous mode for regular conversion.
HAL_StatusTypeDef HAL_DFSDM_FilterConfigInjChannel(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel)
This function allows to select channels for injected conversion.
HAL_DFSDM_Channel_StateTypeDef HAL_DFSDM_ChannelGetState(const DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to get the current DFSDM channel handle state.
void HAL_DFSDM_FilterRegConvCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Regular conversion complete callback.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to start regular conversion in polling mode.
int32_t HAL_DFSDM_FilterGetInjectedValue(const DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get injected conversion value.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop regular conversion in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, int32_t *pData, uint32_t Length)
This function allows to start injected conversion in DMA mode.
void HAL_DFSDM_IRQHandler(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function handles the DFSDM interrupts.
void HAL_DFSDM_FilterInjConvCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Injected conversion complete callback.
int32_t HAL_DFSDM_FilterGetExdMinValue(const DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get extreme detector minimum value.
HAL_StatusTypeDef HAL_DFSDM_FilterExdStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop extreme detector feature.
void HAL_DFSDM_FilterAwdCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel, uint32_t Threshold)
Filter analog watchdog callback.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularMsbStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, int16_t *pData, uint32_t Length)
This function allows to start regular conversion in DMA mode and to get only the 16 most significant ...
HAL_StatusTypeDef HAL_DFSDM_FilterPollForRegConversion(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Timeout)
This function allows to poll for the end of regular conversion.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedMsbStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, int16_t *pData, uint32_t Length)
This function allows to start injected conversion in DMA mode and to get only the 16 most significant...
HAL_StatusTypeDef HAL_DFSDM_FilterAwdStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop filter analog watchdog in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, int32_t *pData, uint32_t Length)
This function allows to start regular conversion in DMA mode.
int32_t HAL_DFSDM_FilterGetExdMaxValue(const DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get extreme detector maximum value.
void HAL_DFSDM_FilterErrorCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Error callback.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop injected conversion in DMA mode.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop regular conversion in polling mode.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop regular conversion in DMA mode.
HAL_StatusTypeDef HAL_DFSDM_FilterPollForInjConversion(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Timeout)
This function allows to poll for the end of injected conversion.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to start injected conversion in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to start injected conversion in polling mode.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop injected conversion in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_FilterExdStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel)
This function allows to start extreme detector feature.
int32_t HAL_DFSDM_FilterGetRegularValue(const DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get regular conversion value.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop injected conversion in polling mode.
void HAL_DFSDM_FilterRegConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Half regular conversion complete callback.
uint32_t HAL_DFSDM_FilterGetConvTimeValue(const DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to get conversion time value.
HAL_StatusTypeDef HAL_DFSDM_FilterAwdStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, const DFSDM_Filter_AwdParamTypeDef *awdParam)
This function allows to start filter analog watchdog in interrupt mode.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to start regular conversion in interrupt mode.
void HAL_DFSDM_FilterInjConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Half injected conversion complete callback.
HAL_DFSDM_Filter_StateTypeDef HAL_DFSDM_FilterGetState(const DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to get the current DFSDM filter handle state.
uint32_t HAL_DFSDM_FilterGetError(const DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to get the current DFSDM filter error.
void HAL_DFSDM_BitStreamClkDistribution_Config(uint32_t source)
Configure the distribution of the bitstream clock gated from TIM4_OC for DFSDM1 or TIM3_OC for DFSDM2...
void HAL_DFSDM_DataIn2_SourceSelection(uint32_t source)
Select the source for DataIn2 signals for DFSDM1/2.
void HAL_DFSDM_ClockOut_SourceSelection(uint32_t source)
Select the source for CKOut signals for DFSDM1/2.
void HAL_DFSDM_BitstreamClock_Start(void)
Select the DFSDM2 as clock source for the bitstream clock.
void HAL_DFSDM_ClockIn_SourceSelection(uint32_t source)
Select the source for CKin signals for DFSDM1/2.
void HAL_DFSDM_EnableDelayClock(uint32_t MCHDLY)
Enable Delay Clock for DFSDM1/2.
void HAL_DFSDM_DataIn0_SourceSelection(uint32_t source)
Select the source for DataIn0 signals for DFSDM1/2.
void HAL_DFSDM_DataIn4_SourceSelection(uint32_t source)
Select the source for DataIn4 signals for DFSDM2.
void HAL_DFSDM_DataIn6_SourceSelection(uint32_t source)
Select the source for DataIn6 signals for DFSDM2.
void HAL_DFSDM_ConfigMultiChannelDelay(DFSDM_MultiChannelConfigTypeDef *mchdlystruct)
Configure multi channel delay block: Use DFSDM2 audio clock source as input clock for DFSDM1 and DFSD...
void HAL_DFSDM_BitstreamClock_Stop(void)
Stop the DFSDM2 as clock source for the bitstream clock.
void HAL_DFSDM_DisableDelayClock(uint32_t MCHDLY)
Disable Delay Clock for DFSDM1/2.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer.
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
This file contains all the functions prototypes for the HAL module driver.
uint32_t DFSDM2DataDistribution
HAL_DFSDM_Filter_CallbackIDTypeDef
DFSDM filter callback ID enumeration definition.
@ HAL_DFSDM_FILTER_MSPINIT_CB_ID
@ HAL_DFSDM_FILTER_INJCONV_HALFCOMPLETE_CB_ID
@ HAL_DFSDM_FILTER_MSPDEINIT_CB_ID
@ HAL_DFSDM_FILTER_REGCONV_HALFCOMPLETE_CB_ID
@ HAL_DFSDM_FILTER_ERROR_CB_ID
@ HAL_DFSDM_FILTER_REGCONV_COMPLETE_CB_ID
@ HAL_DFSDM_FILTER_INJCONV_COMPLETE_CB_ID
struct __DFSDM_Channel_HandleTypeDef else typedef struct endif DFSDM_Channel_HandleTypeDef
DFSDM channel handle structure definition.
uint32_t DFSDM1BitClkDistribution
void(* pDFSDM_Channel_CallbackTypeDef)(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
DFSDM channel callback pointer definition.
HAL_DFSDM_Filter_StateTypeDef
HAL DFSDM Filter states definition.
@ HAL_DFSDM_FILTER_STATE_INJ
@ HAL_DFSDM_FILTER_STATE_ERROR
@ HAL_DFSDM_FILTER_STATE_REG
@ HAL_DFSDM_FILTER_STATE_REG_INJ
@ HAL_DFSDM_FILTER_STATE_READY
@ HAL_DFSDM_FILTER_STATE_RESET
void(* pDFSDM_Filter_CallbackTypeDef)(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
DFSDM filter callback pointer definition.
HAL_DFSDM_Channel_CallbackIDTypeDef
DFSDM channel callback ID enumeration definition.
@ HAL_DFSDM_CHANNEL_SCD_CB_ID
@ HAL_DFSDM_CHANNEL_CKAB_CB_ID
@ HAL_DFSDM_CHANNEL_MSPDEINIT_CB_ID
@ HAL_DFSDM_CHANNEL_MSPINIT_CB_ID
uint32_t DFSDM1DataDistribution
struct __DFSDM_Filter_HandleTypeDef else typedef struct endif DFSDM_Filter_HandleTypeDef
DFSDM filter handle structure definition.
uint32_t DFSDM2BitClkDistribution
DFSDM filter analog watchdog parameters structure definition.
Synchronization parameters structure definition for STM32F413xx/STM32F423xx devices.
DMA handle Structure definition.