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;
312DFSDM_Channel_HandleTypeDef* a_dfsdm1ChannelHandle[DFSDM1_CHANNEL_NUMBER] = {NULL};
314#if defined (DFSDM2_Channel0)
315__IO uint32_t v_dfsdm2ChannelCounter = 0U;
316DFSDM_Channel_HandleTypeDef* a_dfsdm2ChannelHandle[DFSDM2_CHANNEL_NUMBER] = {NULL};
326static uint32_t DFSDM_GetInjChannelsNbr(uint32_t Channels);
327static uint32_t DFSDM_GetChannelFromInstance(
const DFSDM_Channel_TypeDef *Instance);
328static void DFSDM_RegConvStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter);
329static void DFSDM_RegConvStop(DFSDM_Filter_HandleTypeDef* hdfsdm_filter);
330static void DFSDM_InjConvStart(DFSDM_Filter_HandleTypeDef* hdfsdm_filter);
331static void DFSDM_InjConvStop(DFSDM_Filter_HandleTypeDef* hdfsdm_filter);
367HAL_StatusTypeDef HAL_DFSDM_ChannelInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
369#if defined(DFSDM2_Channel0)
370 __IO uint32_t* channelCounterPtr;
371 DFSDM_Channel_HandleTypeDef **channelHandleTable;
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)
417 hdfsdm_channel->CkabCallback = HAL_DFSDM_ChannelCkabCallback;
418 hdfsdm_channel->ScdCallback = HAL_DFSDM_ChannelScdCallback;
421 if(hdfsdm_channel->MspInitCallback == NULL)
423 hdfsdm_channel->MspInitCallback = HAL_DFSDM_ChannelMspInit;
425 hdfsdm_channel->MspInitCallback(hdfsdm_channel);
428 HAL_DFSDM_ChannelMspInit(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)
496 hdfsdm_channel->CkabCallback = HAL_DFSDM_ChannelCkabCallback;
497 hdfsdm_channel->ScdCallback = HAL_DFSDM_ChannelScdCallback;
500 if(hdfsdm_channel->MspInitCallback == NULL)
502 hdfsdm_channel->MspInitCallback = HAL_DFSDM_ChannelMspInit;
504 hdfsdm_channel->MspInitCallback(hdfsdm_channel);
507 HAL_DFSDM_ChannelMspInit(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;
575HAL_StatusTypeDef HAL_DFSDM_ChannelDeInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
577#if defined(DFSDM2_Channel0)
578 __IO uint32_t* channelCounterPtr;
579 DFSDM_Channel_HandleTypeDef **channelHandleTable;
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)
629 hdfsdm_channel->MspDeInitCallback = HAL_DFSDM_ChannelMspDeInit;
631 hdfsdm_channel->MspDeInitCallback(hdfsdm_channel);
633 HAL_DFSDM_ChannelMspDeInit(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)
664 hdfsdm_channel->MspDeInitCallback = HAL_DFSDM_ChannelMspDeInit;
666 hdfsdm_channel->MspDeInitCallback(hdfsdm_channel);
668 HAL_DFSDM_ChannelMspDeInit(hdfsdm_channel);
672 hdfsdm_channel->State = HAL_DFSDM_CHANNEL_STATE_RESET;
675 a_dfsdm1ChannelHandle[DFSDM_GetChannelFromInstance(hdfsdm_channel->Instance)] = (DFSDM_Channel_HandleTypeDef *) NULL;
686__weak
void HAL_DFSDM_ChannelMspInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
700__weak
void HAL_DFSDM_ChannelMspDeInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
709#if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
723HAL_StatusTypeDef HAL_DFSDM_Channel_RegisterCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel,
724 HAL_DFSDM_Channel_CallbackIDTypeDef CallbackID,
725 pDFSDM_Channel_CallbackTypeDef pCallback)
729 if(pCallback == NULL)
736 if(HAL_DFSDM_CHANNEL_STATE_READY == hdfsdm_channel->State)
740 case HAL_DFSDM_CHANNEL_CKAB_CB_ID :
741 hdfsdm_channel->CkabCallback = pCallback;
743 case HAL_DFSDM_CHANNEL_SCD_CB_ID :
744 hdfsdm_channel->ScdCallback = pCallback;
746 case HAL_DFSDM_CHANNEL_MSPINIT_CB_ID :
747 hdfsdm_channel->MspInitCallback = pCallback;
749 case HAL_DFSDM_CHANNEL_MSPDEINIT_CB_ID :
750 hdfsdm_channel->MspDeInitCallback = pCallback;
758 else if(HAL_DFSDM_CHANNEL_STATE_RESET == hdfsdm_channel->State)
762 case HAL_DFSDM_CHANNEL_MSPINIT_CB_ID :
763 hdfsdm_channel->MspInitCallback = pCallback;
765 case HAL_DFSDM_CHANNEL_MSPDEINIT_CB_ID :
766 hdfsdm_channel->MspDeInitCallback = pCallback;
795HAL_StatusTypeDef HAL_DFSDM_Channel_UnRegisterCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel,
796 HAL_DFSDM_Channel_CallbackIDTypeDef CallbackID)
800 if(HAL_DFSDM_CHANNEL_STATE_READY == hdfsdm_channel->State)
804 case HAL_DFSDM_CHANNEL_CKAB_CB_ID :
805 hdfsdm_channel->CkabCallback = HAL_DFSDM_ChannelCkabCallback;
807 case HAL_DFSDM_CHANNEL_SCD_CB_ID :
808 hdfsdm_channel->ScdCallback = HAL_DFSDM_ChannelScdCallback;
810 case HAL_DFSDM_CHANNEL_MSPINIT_CB_ID :
811 hdfsdm_channel->MspInitCallback = HAL_DFSDM_ChannelMspInit;
813 case HAL_DFSDM_CHANNEL_MSPDEINIT_CB_ID :
814 hdfsdm_channel->MspDeInitCallback = HAL_DFSDM_ChannelMspDeInit;
822 else if(HAL_DFSDM_CHANNEL_STATE_RESET == hdfsdm_channel->State)
826 case HAL_DFSDM_CHANNEL_MSPINIT_CB_ID :
827 hdfsdm_channel->MspInitCallback = HAL_DFSDM_ChannelMspInit;
829 case HAL_DFSDM_CHANNEL_MSPDEINIT_CB_ID :
830 hdfsdm_channel->MspDeInitCallback = HAL_DFSDM_ChannelMspDeInit;
875HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStart(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
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));
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));
950 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CKABEN;
963HAL_StatusTypeDef HAL_DFSDM_ChannelPollForCkab(
const DFSDM_Channel_HandleTypeDef *hdfsdm_channel,
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)
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)
1030 if(((
HAL_GetTick()-tickstart) > Timeout) || (Timeout == 0U))
1039 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
1051HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStop(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
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));
1111HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStart_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
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)
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)
1195 DFSDM1_Filter0->FLTCR2 |= DFSDM_FLTCR2_CKABIE;
1198 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CKABEN;
1212__weak
void HAL_DFSDM_ChannelCkabCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
1227HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStop_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
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);
1295HAL_StatusTypeDef HAL_DFSDM_ChannelScdStart(DFSDM_Channel_HandleTypeDef *hdfsdm_channel,
1297 uint32_t BreakSignal)
1302 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1303 assert_param(IS_DFSDM_CHANNEL_SCD_THRESHOLD(Threshold));
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;
1332HAL_StatusTypeDef HAL_DFSDM_ChannelPollForScd(
const DFSDM_Channel_HandleTypeDef *hdfsdm_channel,
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)
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)
1396 if(((
HAL_GetTick()-tickstart) > Timeout) || (Timeout == 0U))
1405 DFSDM1_Filter0->FLTICR = (1U << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1418HAL_StatusTypeDef HAL_DFSDM_ChannelScdStop(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
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));
1473HAL_StatusTypeDef HAL_DFSDM_ChannelScdStart_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel,
1475 uint32_t BreakSignal)
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));
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;
1529__weak
void HAL_DFSDM_ChannelScdCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
1544HAL_StatusTypeDef HAL_DFSDM_ChannelScdStop_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
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);
1599int16_t HAL_DFSDM_ChannelGetAwdValue(
const DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
1601 return (int16_t) hdfsdm_channel->Instance->CHWDATAR;
1611HAL_StatusTypeDef HAL_DFSDM_ChannelModifyOffset(DFSDM_Channel_HandleTypeDef *hdfsdm_channel,
1617 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
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);
1658HAL_DFSDM_Channel_StateTypeDef HAL_DFSDM_ChannelGetState(
const DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
1661 return hdfsdm_channel->State;
1688HAL_StatusTypeDef HAL_DFSDM_FilterInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
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)
1732 hdfsdm_filter->AwdCallback = HAL_DFSDM_FilterAwdCallback;
1733 hdfsdm_filter->RegConvCpltCallback = HAL_DFSDM_FilterRegConvCpltCallback;
1734 hdfsdm_filter->RegConvHalfCpltCallback = HAL_DFSDM_FilterRegConvHalfCpltCallback;
1735 hdfsdm_filter->InjConvCpltCallback = HAL_DFSDM_FilterInjConvCpltCallback;
1736 hdfsdm_filter->InjConvHalfCpltCallback = HAL_DFSDM_FilterInjConvHalfCpltCallback;
1737 hdfsdm_filter->ErrorCallback = HAL_DFSDM_FilterErrorCallback;
1740 if(hdfsdm_filter->MspInitCallback == NULL)
1742 hdfsdm_filter->MspInitCallback = HAL_DFSDM_FilterMspInit;
1744 hdfsdm_filter->MspInitCallback(hdfsdm_filter);
1747 HAL_DFSDM_FilterMspInit(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;
1813 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_READY;
1823HAL_StatusTypeDef HAL_DFSDM_FilterDeInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
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)
1841 hdfsdm_filter->MspDeInitCallback = HAL_DFSDM_FilterMspDeInit;
1843 hdfsdm_filter->MspDeInitCallback(hdfsdm_filter);
1845 HAL_DFSDM_FilterMspDeInit(hdfsdm_filter);
1849 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_RESET;
1859__weak
void HAL_DFSDM_FilterMspInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
1873__weak
void HAL_DFSDM_FilterMspDeInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
1882#if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
1899HAL_StatusTypeDef HAL_DFSDM_Filter_RegisterCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
1900 HAL_DFSDM_Filter_CallbackIDTypeDef CallbackID,
1901 pDFSDM_Filter_CallbackTypeDef pCallback)
1905 if(pCallback == NULL)
1908 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1914 if(HAL_DFSDM_FILTER_STATE_READY == hdfsdm_filter->State)
1918 case HAL_DFSDM_FILTER_REGCONV_COMPLETE_CB_ID :
1919 hdfsdm_filter->RegConvCpltCallback = pCallback;
1921 case HAL_DFSDM_FILTER_REGCONV_HALFCOMPLETE_CB_ID :
1922 hdfsdm_filter->RegConvHalfCpltCallback = pCallback;
1924 case HAL_DFSDM_FILTER_INJCONV_COMPLETE_CB_ID :
1925 hdfsdm_filter->InjConvCpltCallback = pCallback;
1927 case HAL_DFSDM_FILTER_INJCONV_HALFCOMPLETE_CB_ID :
1928 hdfsdm_filter->InjConvHalfCpltCallback = pCallback;
1930 case HAL_DFSDM_FILTER_ERROR_CB_ID :
1931 hdfsdm_filter->ErrorCallback = pCallback;
1933 case HAL_DFSDM_FILTER_MSPINIT_CB_ID :
1934 hdfsdm_filter->MspInitCallback = pCallback;
1936 case HAL_DFSDM_FILTER_MSPDEINIT_CB_ID :
1937 hdfsdm_filter->MspDeInitCallback = pCallback;
1941 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1947 else if(HAL_DFSDM_FILTER_STATE_RESET == hdfsdm_filter->State)
1951 case HAL_DFSDM_FILTER_MSPINIT_CB_ID :
1952 hdfsdm_filter->MspInitCallback = pCallback;
1954 case HAL_DFSDM_FILTER_MSPDEINIT_CB_ID :
1955 hdfsdm_filter->MspDeInitCallback = pCallback;
1959 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1968 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1991HAL_StatusTypeDef HAL_DFSDM_Filter_UnRegisterCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
1992 HAL_DFSDM_Filter_CallbackIDTypeDef CallbackID)
1996 if(HAL_DFSDM_FILTER_STATE_READY == hdfsdm_filter->State)
2000 case HAL_DFSDM_FILTER_REGCONV_COMPLETE_CB_ID :
2001 hdfsdm_filter->RegConvCpltCallback = HAL_DFSDM_FilterRegConvCpltCallback;
2003 case HAL_DFSDM_FILTER_REGCONV_HALFCOMPLETE_CB_ID :
2004 hdfsdm_filter->RegConvHalfCpltCallback = HAL_DFSDM_FilterRegConvHalfCpltCallback;
2006 case HAL_DFSDM_FILTER_INJCONV_COMPLETE_CB_ID :
2007 hdfsdm_filter->InjConvCpltCallback = HAL_DFSDM_FilterInjConvCpltCallback;
2009 case HAL_DFSDM_FILTER_INJCONV_HALFCOMPLETE_CB_ID :
2010 hdfsdm_filter->InjConvHalfCpltCallback = HAL_DFSDM_FilterInjConvHalfCpltCallback;
2012 case HAL_DFSDM_FILTER_ERROR_CB_ID :
2013 hdfsdm_filter->ErrorCallback = HAL_DFSDM_FilterErrorCallback;
2015 case HAL_DFSDM_FILTER_MSPINIT_CB_ID :
2016 hdfsdm_filter->MspInitCallback = HAL_DFSDM_FilterMspInit;
2018 case HAL_DFSDM_FILTER_MSPDEINIT_CB_ID :
2019 hdfsdm_filter->MspDeInitCallback = HAL_DFSDM_FilterMspDeInit;
2023 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2029 else if(HAL_DFSDM_FILTER_STATE_RESET == hdfsdm_filter->State)
2033 case HAL_DFSDM_FILTER_MSPINIT_CB_ID :
2034 hdfsdm_filter->MspInitCallback = HAL_DFSDM_FilterMspInit;
2036 case HAL_DFSDM_FILTER_MSPDEINIT_CB_ID :
2037 hdfsdm_filter->MspDeInitCallback = HAL_DFSDM_FilterMspDeInit;
2041 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2050 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2064HAL_StatusTypeDef HAL_DFSDM_Filter_RegisterAwdCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
2065 pDFSDM_Filter_AwdCallbackTypeDef pCallback)
2069 if(pCallback == NULL)
2072 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2078 if(HAL_DFSDM_FILTER_STATE_READY == hdfsdm_filter->State)
2080 hdfsdm_filter->AwdCallback = pCallback;
2085 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2099HAL_StatusTypeDef HAL_DFSDM_Filter_UnRegisterAwdCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2103 if(HAL_DFSDM_FILTER_STATE_READY == hdfsdm_filter->State)
2105 hdfsdm_filter->AwdCallback = HAL_DFSDM_FilterAwdCallback;
2110 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
2145HAL_StatusTypeDef HAL_DFSDM_FilterConfigRegChannel(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
2147 uint32_t ContinuousMode)
2152 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2154 assert_param(IS_DFSDM_CONTINUOUS_MODE(ContinuousMode));
2157 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_RESET) &&
2158 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_ERROR))
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;
2190HAL_StatusTypeDef HAL_DFSDM_FilterConfigInjChannel(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
2196 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2200 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_RESET) &&
2201 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_ERROR))
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;
2260HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2265 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2268 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2269 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ))
2272 DFSDM_RegConvStart(hdfsdm_filter);
2289HAL_StatusTypeDef HAL_DFSDM_FilterPollForRegConversion(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
2295 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2298 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG) && \
2299 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
2310 while((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_REOCF) != DFSDM_FLTISR_REOCF)
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);
2330 HAL_DFSDM_FilterErrorCallback(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))
2340 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG) ? \
2341 HAL_DFSDM_FILTER_STATE_READY : HAL_DFSDM_FILTER_STATE_INJ;
2354HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2359 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2362 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG) && \
2363 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
2371 DFSDM_RegConvStop(hdfsdm_filter);
2384HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2389 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2392 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2393 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ))
2396 hdfsdm_filter->Instance->FLTCR2 |= (DFSDM_FLTCR2_REOCIE | DFSDM_FLTCR2_ROVRIE);
2399 DFSDM_RegConvStart(hdfsdm_filter);
2415HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2420 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2423 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG) && \
2424 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
2432 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_REOCIE | DFSDM_FLTCR2_ROVRIE);
2435 DFSDM_RegConvStop(hdfsdm_filter);
2453HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
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) && \
2487 else if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2488 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ))
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)
2501 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_ERROR;
2507 DFSDM_RegConvStart(hdfsdm_filter);
2530HAL_StatusTypeDef HAL_DFSDM_FilterRegularMsbStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
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) && \
2564 else if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2565 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ))
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)
2578 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_ERROR;
2584 DFSDM_RegConvStart(hdfsdm_filter);
2601HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2606 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2609 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG) && \
2610 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
2621 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_ERROR;
2627 DFSDM_RegConvStop(hdfsdm_filter);
2640int32_t HAL_DFSDM_FilterGetRegularValue(
const DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
2647 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2651 reg = hdfsdm_filter->Instance->FLTRDATAR;
2654 *Channel = (reg & DFSDM_FLTRDATAR_RDATACH);
2655 value = ((int32_t)(reg & DFSDM_FLTRDATAR_RDATA) >> DFSDM_FLTRDATAR_RDATA_Pos);
2668HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2673 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2676 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2677 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG))
2680 DFSDM_InjConvStart(hdfsdm_filter);
2697HAL_StatusTypeDef HAL_DFSDM_FilterPollForInjConversion(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
2703 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2706 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_INJ) && \
2707 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
2718 while((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_JEOCF) != DFSDM_FLTISR_JEOCF)
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);
2738 HAL_DFSDM_FilterErrorCallback(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)
2752 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ) ? \
2753 HAL_DFSDM_FILTER_STATE_READY : HAL_DFSDM_FILTER_STATE_REG;
2757 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
2758 hdfsdm_filter->InjectedChannelsNbr : 1U;
2772HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2777 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2780 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_INJ) && \
2781 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
2789 DFSDM_InjConvStop(hdfsdm_filter);
2802HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2807 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2810 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2811 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG))
2814 hdfsdm_filter->Instance->FLTCR2 |= (DFSDM_FLTCR2_JEOCIE | DFSDM_FLTCR2_JOVRIE);
2817 DFSDM_InjConvStart(hdfsdm_filter);
2833HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
2838 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2841 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_INJ) && \
2842 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
2850 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_JEOCIE | DFSDM_FLTCR2_JOVRIE);
2853 DFSDM_InjConvStop(hdfsdm_filter);
2871HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
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) && \
2903 else if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2904 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG))
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)
2917 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_ERROR;
2923 DFSDM_InjConvStart(hdfsdm_filter);
2946HAL_StatusTypeDef HAL_DFSDM_FilterInjectedMsbStart_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
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) && \
2978 else if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) || \
2979 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG))
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)
2992 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_ERROR;
2998 DFSDM_InjConvStart(hdfsdm_filter);
3015HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3020 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3023 if((hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_INJ) && \
3024 (hdfsdm_filter->State != HAL_DFSDM_FILTER_STATE_REG_INJ))
3035 hdfsdm_filter->State = HAL_DFSDM_FILTER_STATE_ERROR;
3041 DFSDM_InjConvStop(hdfsdm_filter);
3054int32_t HAL_DFSDM_FilterGetInjectedValue(
const DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
3061 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3065 reg = hdfsdm_filter->Instance->FLTJDATAR;
3068 *Channel = (reg & DFSDM_FLTJDATAR_JDATACH);
3069 value = ((int32_t)(reg & DFSDM_FLTJDATAR_JDATA) >> DFSDM_FLTJDATAR_JDATA_Pos);
3081HAL_StatusTypeDef HAL_DFSDM_FilterAwdStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
3082 const DFSDM_Filter_AwdParamTypeDef *awdParam)
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));
3092 assert_param(IS_DFSDM_BREAK_SIGNALS(awdParam->HighBreakSignal));
3093 assert_param(IS_DFSDM_BREAK_SIGNALS(awdParam->LowBreakSignal));
3096 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_RESET) || \
3097 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_ERROR))
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);
3130HAL_StatusTypeDef HAL_DFSDM_FilterAwdStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3135 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3138 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_RESET) || \
3139 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_ERROR))
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);
3170HAL_StatusTypeDef HAL_DFSDM_FilterExdStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
3176 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3180 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_RESET) || \
3181 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_ERROR))
3189 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_EXCH);
3190 hdfsdm_filter->Instance->FLTCR2 |= ((Channel & DFSDM_LSB_MASK) << DFSDM_FLTCR2_EXCH_Pos);
3201HAL_StatusTypeDef HAL_DFSDM_FilterExdStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3208 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3211 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_RESET) || \
3212 (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_ERROR))
3220 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_EXCH);
3223 reg1 = hdfsdm_filter->Instance->FLTEXMAX;
3224 reg2 = hdfsdm_filter->Instance->FLTEXMIN;
3239int32_t HAL_DFSDM_FilterGetExdMaxValue(
const DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
3246 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3250 reg = hdfsdm_filter->Instance->FLTEXMAX;
3253 *Channel = (reg & DFSDM_FLTEXMAX_EXMAXCH);
3254 value = ((int32_t)(reg & DFSDM_FLTEXMAX_EXMAX) >> DFSDM_FLTEXMAX_EXMAX_Pos);
3267int32_t HAL_DFSDM_FilterGetExdMinValue(
const DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
3274 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
3278 reg = hdfsdm_filter->Instance->FLTEXMIN;
3281 *Channel = (reg & DFSDM_FLTEXMIN_EXMINCH);
3282 value = ((int32_t)(reg & DFSDM_FLTEXMIN_EXMIN) >> DFSDM_FLTEXMIN_EXMIN_Pos);
3294uint32_t HAL_DFSDM_FilterGetConvTimeValue(
const DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
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);
3317void HAL_DFSDM_IRQHandler(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
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);
3333 HAL_DFSDM_FilterErrorCallback(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);
3350 HAL_DFSDM_FilterErrorCallback(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);
3361 HAL_DFSDM_FilterRegConvCpltCallback(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);
3372 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG) ? \
3373 HAL_DFSDM_FILTER_STATE_READY : HAL_DFSDM_FILTER_STATE_INJ;
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);
3384 HAL_DFSDM_FilterInjConvCpltCallback(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);
3398 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ) ? \
3399 HAL_DFSDM_FILTER_STATE_READY : HAL_DFSDM_FILTER_STATE_REG;
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);
3435 HAL_DFSDM_FilterAwdCallback(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]);
3463 HAL_DFSDM_ChannelCkabCallback(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]);
3497 HAL_DFSDM_ChannelCkabCallback(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]);
3529 HAL_DFSDM_ChannelScdCallback(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]);
3556 HAL_DFSDM_ChannelScdCallback(a_dfsdm2ChannelHandle[channel]);
3569__weak
void HAL_DFSDM_FilterRegConvCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3583__weak
void HAL_DFSDM_FilterRegConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3599__weak
void HAL_DFSDM_FilterInjConvCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3613__weak
void HAL_DFSDM_FilterInjConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3629__weak
void HAL_DFSDM_FilterAwdCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter,
3630 uint32_t Channel, uint32_t Threshold)
3647__weak
void HAL_DFSDM_FilterErrorCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3679HAL_DFSDM_Filter_StateTypeDef HAL_DFSDM_FilterGetState(
const DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3682 return hdfsdm_filter->State;
3690uint32_t HAL_DFSDM_FilterGetError(
const DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
3692 return hdfsdm_filter->ErrorCode;
3711#if defined(SYSCFG_MCHDLYCR_BSCKSEL)
3717void HAL_DFSDM_BitstreamClock_Start(
void)
3721 tmp = SYSCFG->MCHDLYCR;
3722 tmp = (tmp &(~SYSCFG_MCHDLYCR_BSCKSEL));
3724 SYSCFG->MCHDLYCR = (tmp|SYSCFG_MCHDLYCR_BSCKSEL);
3733void HAL_DFSDM_BitstreamClock_Stop(
void)
3737 tmp = SYSCFG->MCHDLYCR;
3738 tmp = (tmp &(~SYSCFG_MCHDLYCR_BSCKSEL));
3740 SYSCFG->MCHDLYCR = tmp;
3751void HAL_DFSDM_DisableDelayClock(uint32_t 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;
3778void HAL_DFSDM_EnableDelayClock(uint32_t MCHDLY)
3784 tmp = SYSCFG->MCHDLYCR;
3785 tmp = tmp & ~MCHDLY;
3787 SYSCFG->MCHDLYCR = (tmp|MCHDLY);
3798void HAL_DFSDM_ClockIn_SourceSelection(uint32_t 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);
3831void HAL_DFSDM_ClockOut_SourceSelection(uint32_t 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);
3864void HAL_DFSDM_DataIn0_SourceSelection(uint32_t 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);
3895void HAL_DFSDM_DataIn2_SourceSelection(uint32_t 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);
3924void HAL_DFSDM_DataIn4_SourceSelection(uint32_t source)
3930 tmp = SYSCFG->MCHDLYCR;
3931 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2D4SEL);
3933 SYSCFG->MCHDLYCR = (source|tmp);
3942void HAL_DFSDM_DataIn6_SourceSelection(uint32_t source)
3948 tmp = SYSCFG->MCHDLYCR;
3950 tmp = (tmp & ~SYSCFG_MCHDLYCR_DFSDM2D6SEL);
3952 SYSCFG->MCHDLYCR = (source|tmp);
3972void HAL_DFSDM_BitStreamClkDistribution_Config(uint32_t source)
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);
4030void HAL_DFSDM_ConfigMultiChannelDelay(DFSDM_MultiChannelConfigTypeDef* mchdlystruct)
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));
4038 assert_param(IS_DFSDM_DFSDM1_BIT_CLK((mchdlystruct->DFSDM1BitClkDistribution)));
4039 assert_param(IS_DFSDM_DFSDM2_BIT_CLK(mchdlystruct->DFSDM2BitClkDistribution));
4040 assert_param(IS_DFSDM_DFSDM1_DATA_DISTRIBUTION(mchdlystruct->DFSDM1DataDistribution));
4041 assert_param(IS_DFSDM_DFSDM2_DATA_DISTRIBUTION(mchdlystruct->DFSDM2DataDistribution));
4043 mchdlyreg = (SYSCFG->MCHDLYCR & 0x80103U);
4045 SYSCFG->MCHDLYCR = (mchdlyreg |(mchdlystruct->DFSDM1ClockOut)|(mchdlystruct->DFSDM2ClockOut)|
4046 (mchdlystruct->DFSDM1ClockIn)|(mchdlystruct->DFSDM2ClockIn)|
4047 (mchdlystruct->DFSDM1BitClkDistribution)| (mchdlystruct->DFSDM2BitClkDistribution)|
4048 (mchdlystruct->DFSDM1DataDistribution)| (mchdlystruct->DFSDM2DataDistribution));
4073 DFSDM_Filter_HandleTypeDef* hdfsdm_filter = (DFSDM_Filter_HandleTypeDef*) ((
DMA_HandleTypeDef*)hdma)->Parent;
4076#if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4077 hdfsdm_filter->RegConvHalfCpltCallback(hdfsdm_filter);
4079 HAL_DFSDM_FilterRegConvHalfCpltCallback(hdfsdm_filter);
4091 DFSDM_Filter_HandleTypeDef* hdfsdm_filter = (DFSDM_Filter_HandleTypeDef*) ((
DMA_HandleTypeDef*)hdma)->Parent;
4094#if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4095 hdfsdm_filter->RegConvCpltCallback(hdfsdm_filter);
4097 HAL_DFSDM_FilterRegConvCpltCallback(hdfsdm_filter);
4109 DFSDM_Filter_HandleTypeDef* hdfsdm_filter = (DFSDM_Filter_HandleTypeDef*) ((
DMA_HandleTypeDef*)hdma)->Parent;
4112#if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4113 hdfsdm_filter->InjConvHalfCpltCallback(hdfsdm_filter);
4115 HAL_DFSDM_FilterInjConvHalfCpltCallback(hdfsdm_filter);
4127 DFSDM_Filter_HandleTypeDef* hdfsdm_filter = (DFSDM_Filter_HandleTypeDef*) ((
DMA_HandleTypeDef*)hdma)->Parent;
4130#if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4131 hdfsdm_filter->InjConvCpltCallback(hdfsdm_filter);
4133 HAL_DFSDM_FilterInjConvCpltCallback(hdfsdm_filter);
4145 DFSDM_Filter_HandleTypeDef* hdfsdm_filter = (DFSDM_Filter_HandleTypeDef*) ((
DMA_HandleTypeDef*)hdma)->Parent;
4148 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_DMA;
4151#if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1)
4152 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
4154 HAL_DFSDM_FilterErrorCallback(hdfsdm_filter);
4163static 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);
4186static 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)
4252static void DFSDM_RegConvStart(DFSDM_Filter_HandleTypeDef* hdfsdm_filter)
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;
4272 if(hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ)
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;
4284 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) ? \
4285 HAL_DFSDM_FILTER_STATE_REG : HAL_DFSDM_FILTER_STATE_REG_INJ;
4293static void DFSDM_RegConvStop(DFSDM_Filter_HandleTypeDef* hdfsdm_filter)
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;
4308 if(hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG_INJ)
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;
4320 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG) ? \
4321 HAL_DFSDM_FILTER_STATE_READY : HAL_DFSDM_FILTER_STATE_INJ;
4329static void DFSDM_InjConvStart(DFSDM_Filter_HandleTypeDef* hdfsdm_filter)
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;
4357 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG) && \
4358 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
4360 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;
4364 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_READY) ? \
4365 HAL_DFSDM_FILTER_STATE_INJ : HAL_DFSDM_FILTER_STATE_REG_INJ;
4373static void DFSDM_InjConvStop(DFSDM_Filter_HandleTypeDef* hdfsdm_filter)
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;
4397 if((hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_REG_INJ) && \
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;
4408 hdfsdm_filter->State = (hdfsdm_filter->State == HAL_DFSDM_FILTER_STATE_INJ) ? \
4409 HAL_DFSDM_FILTER_STATE_READY : HAL_DFSDM_FILTER_STATE_REG;
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.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
DMA handle Structure definition.