273 #ifdef HAL_DFSDM_MODULE_ENABLED 275 #if defined(STM32L451xx) || defined(STM32L452xx) || defined(STM32L462xx) || \ 276 defined(STM32L471xx) || defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx) || \ 277 defined(STM32L496xx) || defined(STM32L4A6xx) || \ 278 defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 290 #define DFSDM_FLTCR1_MSB_RCH_OFFSET 8 291 #define DFSDM_MSB_MASK 0xFFFF0000U 292 #define DFSDM_LSB_MASK 0x0000FFFFU 293 #define DFSDM_CKAB_TIMEOUT 5000U 294 #if defined(STM32L451xx) || defined(STM32L452xx) || defined(STM32L462xx) 295 #define DFSDM1_CHANNEL_NUMBER 4U 297 #define DFSDM1_CHANNEL_NUMBER 8U 361 if (hdfsdm_channel == NULL)
367 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
368 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_channel->Init.OutputClock.Activation));
369 assert_param(IS_DFSDM_CHANNEL_INPUT(hdfsdm_channel->Init.Input.Multiplexer));
370 assert_param(IS_DFSDM_CHANNEL_DATA_PACKING(hdfsdm_channel->Init.Input.DataPacking));
371 assert_param(IS_DFSDM_CHANNEL_INPUT_PINS(hdfsdm_channel->Init.Input.Pins));
372 assert_param(IS_DFSDM_CHANNEL_SERIAL_INTERFACE_TYPE(hdfsdm_channel->Init.SerialInterface.Type));
373 assert_param(IS_DFSDM_CHANNEL_SPI_CLOCK(hdfsdm_channel->Init.SerialInterface.SpiClock));
374 assert_param(IS_DFSDM_CHANNEL_FILTER_ORDER(hdfsdm_channel->Init.Awd.FilterOrder));
375 assert_param(IS_DFSDM_CHANNEL_FILTER_OVS_RATIO(hdfsdm_channel->Init.Awd.Oversampling));
376 assert_param(IS_DFSDM_CHANNEL_OFFSET(hdfsdm_channel->Init.Offset));
377 assert_param(IS_DFSDM_CHANNEL_RIGHT_BIT_SHIFT(hdfsdm_channel->Init.RightBitShift));
385 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 391 if (hdfsdm_channel->MspInitCallback == NULL)
395 hdfsdm_channel->MspInitCallback(hdfsdm_channel);
407 assert_param(IS_DFSDM_CHANNEL_OUTPUT_CLOCK(hdfsdm_channel->Init.OutputClock.Selection));
409 DFSDM1_Channel0->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKOUTSRC);
410 DFSDM1_Channel0->CHCFGR1 |= hdfsdm_channel->Init.OutputClock.Selection;
413 DFSDM1_Channel0->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKOUTDIV);
414 if (hdfsdm_channel->Init.OutputClock.Activation == ENABLE)
416 assert_param(IS_DFSDM_CHANNEL_OUTPUT_CLOCK_DIVIDER(hdfsdm_channel->Init.OutputClock.Divider));
418 DFSDM1_Channel0->CHCFGR1 |= (uint32_t)((hdfsdm_channel->Init.OutputClock.Divider - 1U) <<
419 DFSDM_CHCFGR1_CKOUTDIV_Pos);
423 DFSDM1_Channel0->CHCFGR1 |= DFSDM_CHCFGR1_DFSDMEN;
427 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_DATPACK | DFSDM_CHCFGR1_DATMPX |
428 DFSDM_CHCFGR1_CHINSEL);
429 hdfsdm_channel->Instance->CHCFGR1 |= (hdfsdm_channel->Init.Input.Multiplexer |
430 hdfsdm_channel->Init.Input.DataPacking |
431 hdfsdm_channel->Init.Input.Pins);
434 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_SITP | DFSDM_CHCFGR1_SPICKSEL);
435 hdfsdm_channel->Instance->CHCFGR1 |= (hdfsdm_channel->Init.SerialInterface.Type |
436 hdfsdm_channel->Init.SerialInterface.SpiClock);
439 hdfsdm_channel->Instance->CHAWSCDR &= ~(DFSDM_CHAWSCDR_AWFORD | DFSDM_CHAWSCDR_AWFOSR);
440 hdfsdm_channel->Instance->CHAWSCDR |= (hdfsdm_channel->Init.Awd.FilterOrder |
441 ((hdfsdm_channel->Init.Awd.Oversampling - 1U) << DFSDM_CHAWSCDR_AWFOSR_Pos));
444 hdfsdm_channel->Instance->CHCFGR2 &= ~(DFSDM_CHCFGR2_OFFSET | DFSDM_CHCFGR2_DTRBS);
445 hdfsdm_channel->Instance->CHCFGR2 |= (((uint32_t) hdfsdm_channel->Init.Offset << DFSDM_CHCFGR2_OFFSET_Pos) |
446 (hdfsdm_channel->Init.RightBitShift << DFSDM_CHCFGR2_DTRBS_Pos));
449 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CHEN;
468 if (hdfsdm_channel == NULL)
474 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
483 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CHEN);
491 DFSDM1_Channel0->CHCFGR1 &= ~(DFSDM_CHCFGR1_DFSDMEN);
495 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 496 if (hdfsdm_channel->MspDeInitCallback == NULL)
500 hdfsdm_channel->MspDeInitCallback(hdfsdm_channel);
522 UNUSED(hdfsdm_channel);
537 UNUSED(hdfsdm_channel);
544 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 562 HAL_StatusTypeDef status =
HAL_OK;
564 if (pCallback == NULL)
576 hdfsdm_channel->CkabCallback = pCallback;
579 hdfsdm_channel->ScdCallback = pCallback;
582 hdfsdm_channel->MspInitCallback = pCallback;
585 hdfsdm_channel->MspDeInitCallback = pCallback;
598 hdfsdm_channel->MspInitCallback = pCallback;
601 hdfsdm_channel->MspDeInitCallback = pCallback;
633 HAL_StatusTypeDef status =
HAL_OK;
713 HAL_StatusTypeDef status =
HAL_OK;
718 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
735 while ((((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) != 0U)
737 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
740 if ((
HAL_GetTick() - tickstart) > DFSDM_CKAB_TIMEOUT)
743 status = HAL_TIMEOUT;
751 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CKABEN;
771 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
788 while ((((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) == 0U)
791 if (Timeout != HAL_MAX_DELAY)
793 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
802 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
816 HAL_StatusTypeDef status =
HAL_OK;
820 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
831 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKABEN);
835 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
852 HAL_StatusTypeDef status =
HAL_OK;
857 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
874 while ((((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_CKABF) >> (DFSDM_FLTISR_CKABF_Pos + channel)) & 1U) != 0U)
876 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
879 if ((
HAL_GetTick() - tickstart) > DFSDM_CKAB_TIMEOUT)
882 status = HAL_TIMEOUT;
890 DFSDM1_Filter0->FLTCR2 |= DFSDM_FLTCR2_CKABIE;
893 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_CKABEN;
908 UNUSED(hdfsdm_channel);
923 HAL_StatusTypeDef status =
HAL_OK;
927 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
938 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_CKABEN);
942 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
945 DFSDM1_Filter0->FLTCR2 &= ~(DFSDM_FLTCR2_CKABIE);
963 uint32_t BreakSignal)
965 HAL_StatusTypeDef status =
HAL_OK;
968 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
969 assert_param(IS_DFSDM_CHANNEL_SCD_THRESHOLD(Threshold));
981 hdfsdm_channel->Instance->CHAWSCDR &= ~(DFSDM_CHAWSCDR_BKSCD | DFSDM_CHAWSCDR_SCDT);
982 hdfsdm_channel->Instance->CHAWSCDR |= ((BreakSignal << DFSDM_CHAWSCDR_BKSCD_Pos) | \
986 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_SCDEN;
1005 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1022 while (((DFSDM1_Filter0->FLTISR & DFSDM_FLTISR_SCDF) >> (DFSDM_FLTISR_SCDF_Pos + channel)) == 0U)
1025 if (Timeout != HAL_MAX_DELAY)
1027 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1036 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1050 HAL_StatusTypeDef status =
HAL_OK;
1054 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1065 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_SCDEN);
1069 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1087 uint32_t BreakSignal)
1089 HAL_StatusTypeDef status =
HAL_OK;
1092 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1093 assert_param(IS_DFSDM_CHANNEL_SCD_THRESHOLD(Threshold));
1105 DFSDM1_Filter0->FLTCR2 |= DFSDM_FLTCR2_SCDIE;
1108 hdfsdm_channel->Instance->CHAWSCDR &= ~(DFSDM_CHAWSCDR_BKSCD | DFSDM_CHAWSCDR_SCDT);
1109 hdfsdm_channel->Instance->CHAWSCDR |= ((BreakSignal << DFSDM_CHAWSCDR_BKSCD_Pos) | \
1113 hdfsdm_channel->Instance->CHCFGR1 |= DFSDM_CHCFGR1_SCDEN;
1127 UNUSED(hdfsdm_channel);
1142 HAL_StatusTypeDef status =
HAL_OK;
1146 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1157 hdfsdm_channel->Instance->CHCFGR1 &= ~(DFSDM_CHCFGR1_SCDEN);
1161 DFSDM1_Filter0->FLTICR = (1UL << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
1164 DFSDM1_Filter0->FLTCR2 &= ~(DFSDM_FLTCR2_SCDIE);
1177 return (int16_t) hdfsdm_channel->Instance->CHWDATAR;
1190 HAL_StatusTypeDef status =
HAL_OK;
1193 assert_param(IS_DFSDM_CHANNEL_ALL_INSTANCE(hdfsdm_channel->Instance));
1205 hdfsdm_channel->Instance->CHCFGR2 &= ~(DFSDM_CHCFGR2_OFFSET);
1206 hdfsdm_channel->Instance->CHCFGR2 |= ((uint32_t) Offset << DFSDM_CHCFGR2_OFFSET_Pos);
1237 return hdfsdm_channel->State;
1267 if (hdfsdm_filter == NULL)
1273 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1274 assert_param(IS_DFSDM_FILTER_REG_TRIGGER(hdfsdm_filter->Init.RegularParam.Trigger));
1275 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.RegularParam.FastMode));
1276 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.RegularParam.DmaMode));
1277 assert_param(IS_DFSDM_FILTER_INJ_TRIGGER(hdfsdm_filter->Init.InjectedParam.Trigger));
1278 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.InjectedParam.ScanMode));
1279 assert_param(IS_FUNCTIONAL_STATE(hdfsdm_filter->Init.InjectedParam.DmaMode));
1280 assert_param(IS_DFSDM_FILTER_SINC_ORDER(hdfsdm_filter->Init.FilterParam.SincOrder));
1281 assert_param(IS_DFSDM_FILTER_OVS_RATIO(hdfsdm_filter->Init.FilterParam.Oversampling));
1282 assert_param(IS_DFSDM_FILTER_INTEGRATOR_OVS_RATIO(hdfsdm_filter->Init.FilterParam.IntOversampling));
1285 if ((hdfsdm_filter->Instance == DFSDM1_Filter0) &&
1286 ((hdfsdm_filter->Init.RegularParam.Trigger == DFSDM_FILTER_SYNC_TRIGGER) ||
1287 (hdfsdm_filter->Init.InjectedParam.Trigger == DFSDM_FILTER_SYNC_TRIGGER)))
1293 hdfsdm_filter->RegularContMode = DFSDM_CONTINUOUS_CONV_OFF;
1294 hdfsdm_filter->InjectedChannelsNbr = 1;
1295 hdfsdm_filter->InjConvRemaining = 1;
1296 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_NONE;
1298 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 1308 if (hdfsdm_filter->MspInitCallback == NULL)
1312 hdfsdm_filter->MspInitCallback(hdfsdm_filter);
1319 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RSYNC);
1320 if (hdfsdm_filter->Init.RegularParam.FastMode == ENABLE)
1322 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_FAST;
1326 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_FAST);
1329 if (hdfsdm_filter->Init.RegularParam.DmaMode == ENABLE)
1331 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RDMAEN;
1335 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RDMAEN);
1339 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JSYNC | DFSDM_FLTCR1_JEXTEN | DFSDM_FLTCR1_JEXTSEL);
1340 if (hdfsdm_filter->Init.InjectedParam.Trigger == DFSDM_FILTER_EXT_TRIGGER)
1342 assert_param(IS_DFSDM_FILTER_EXT_TRIG(hdfsdm_filter->Init.InjectedParam.ExtTrigger));
1343 assert_param(IS_DFSDM_FILTER_EXT_TRIG_EDGE(hdfsdm_filter->Init.InjectedParam.ExtTriggerEdge));
1344 hdfsdm_filter->Instance->FLTCR1 |= (hdfsdm_filter->Init.InjectedParam.ExtTrigger);
1347 if (hdfsdm_filter->Init.InjectedParam.ScanMode == ENABLE)
1349 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSCAN;
1353 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JSCAN);
1356 if (hdfsdm_filter->Init.InjectedParam.DmaMode == ENABLE)
1358 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JDMAEN;
1362 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JDMAEN);
1366 hdfsdm_filter->Instance->FLTFCR &= ~(DFSDM_FLTFCR_FORD | DFSDM_FLTFCR_FOSR | DFSDM_FLTFCR_IOSR);
1367 hdfsdm_filter->Instance->FLTFCR |= (hdfsdm_filter->Init.FilterParam.SincOrder |
1368 ((hdfsdm_filter->Init.FilterParam.Oversampling - 1U) << DFSDM_FLTFCR_FOSR_Pos) |
1369 (hdfsdm_filter->Init.FilterParam.IntOversampling - 1U));
1372 hdfsdm_filter->RegularTrigger = hdfsdm_filter->Init.RegularParam.Trigger;
1373 hdfsdm_filter->InjectedTrigger = hdfsdm_filter->Init.InjectedParam.Trigger;
1374 hdfsdm_filter->ExtTriggerEdge = hdfsdm_filter->Init.InjectedParam.ExtTriggerEdge;
1375 hdfsdm_filter->InjectedScanMode = hdfsdm_filter->Init.InjectedParam.ScanMode;
1378 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
1394 if (hdfsdm_filter == NULL)
1400 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1403 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
1406 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 1407 if (hdfsdm_filter->MspDeInitCallback == NULL)
1411 hdfsdm_filter->MspDeInitCallback(hdfsdm_filter);
1430 UNUSED(hdfsdm_filter);
1445 UNUSED(hdfsdm_filter);
1452 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 1473 HAL_StatusTypeDef status =
HAL_OK;
1475 if (pCallback == NULL)
1478 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1489 hdfsdm_filter->RegConvCpltCallback = pCallback;
1492 hdfsdm_filter->RegConvHalfCpltCallback = pCallback;
1495 hdfsdm_filter->InjConvCpltCallback = pCallback;
1498 hdfsdm_filter->InjConvHalfCpltCallback = pCallback;
1501 hdfsdm_filter->ErrorCallback = pCallback;
1504 hdfsdm_filter->MspInitCallback = pCallback;
1507 hdfsdm_filter->MspDeInitCallback = pCallback;
1511 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1522 hdfsdm_filter->MspInitCallback = pCallback;
1525 hdfsdm_filter->MspDeInitCallback = pCallback;
1529 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1538 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1564 HAL_StatusTypeDef status =
HAL_OK;
1593 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1611 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1620 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1637 HAL_StatusTypeDef status =
HAL_OK;
1639 if (pCallback == NULL)
1642 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1650 hdfsdm_filter->AwdCallback = pCallback;
1655 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1671 HAL_StatusTypeDef status =
HAL_OK;
1680 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INVALID_CALLBACK;
1718 uint32_t ContinuousMode)
1720 HAL_StatusTypeDef status =
HAL_OK;
1723 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1725 assert_param(IS_DFSDM_CONTINUOUS_MODE(ContinuousMode));
1732 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RCH | DFSDM_FLTCR1_RCONT);
1733 if (ContinuousMode == DFSDM_CONTINUOUS_CONV_ON)
1735 hdfsdm_filter->Instance->FLTCR1 |= (uint32_t)(((Channel & DFSDM_MSB_MASK) << DFSDM_FLTCR1_MSB_RCH_OFFSET) |
1736 DFSDM_FLTCR1_RCONT);
1740 hdfsdm_filter->Instance->FLTCR1 |= (uint32_t)((Channel & DFSDM_MSB_MASK) << DFSDM_FLTCR1_MSB_RCH_OFFSET);
1743 hdfsdm_filter->RegularContMode = ContinuousMode;
1764 HAL_StatusTypeDef status =
HAL_OK;
1767 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1775 hdfsdm_filter->Instance->FLTJCHGR = (uint32_t)(Channel & DFSDM_LSB_MASK);
1779 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
1780 hdfsdm_filter->InjectedChannelsNbr : 1U;
1833 HAL_StatusTypeDef status =
HAL_OK;
1836 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1866 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1881 while ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_REOCF) != DFSDM_FLTISR_REOCF)
1884 if (Timeout != HAL_MAX_DELAY)
1886 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1894 if ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_ROVRF) == DFSDM_FLTISR_ROVRF)
1897 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_REGULAR_OVERRUN;
1898 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 1899 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
1905 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRROVRF;
1908 if ((hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
1909 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
1927 HAL_StatusTypeDef status =
HAL_OK;
1930 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1957 HAL_StatusTypeDef status =
HAL_OK;
1960 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
1967 hdfsdm_filter->Instance->FLTCR2 |= (DFSDM_FLTCR2_REOCIE | DFSDM_FLTCR2_ROVRIE);
1988 HAL_StatusTypeDef status =
HAL_OK;
1991 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2003 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_REOCIE | DFSDM_FLTCR2_ROVRIE);
2028 HAL_StatusTypeDef status =
HAL_OK;
2031 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2034 if ((pData == NULL) || (Length == 0U))
2039 else if ((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_RDMAEN) != DFSDM_FLTCR1_RDMAEN)
2044 else if ((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2045 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2046 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_NORMAL) && \
2051 else if ((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2052 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2053 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR))
2064 hdfsdm_filter->hdmaReg->XferHalfCpltCallback = (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR) ? \
2068 if (
HAL_DMA_Start_IT(hdfsdm_filter->hdmaReg, (uint32_t)&hdfsdm_filter->Instance->FLTRDATAR, \
2069 (uint32_t) pData, Length) !=
HAL_OK)
2105 HAL_StatusTypeDef status =
HAL_OK;
2108 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2111 if ((pData == NULL) || (Length == 0U))
2116 else if ((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_RDMAEN) != DFSDM_FLTCR1_RDMAEN)
2121 else if ((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2122 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2123 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_NORMAL) && \
2128 else if ((hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2129 (hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2130 (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR))
2141 hdfsdm_filter->hdmaReg->XferHalfCpltCallback = (hdfsdm_filter->hdmaReg->Init.Mode == DMA_CIRCULAR) ? \
2145 if (
HAL_DMA_Start_IT(hdfsdm_filter->hdmaReg, (uint32_t)(&hdfsdm_filter->Instance->FLTRDATAR) + 2U, \
2146 (uint32_t) pData, Length) !=
HAL_OK)
2174 HAL_StatusTypeDef status =
HAL_OK;
2177 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2218 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2222 reg = hdfsdm_filter->Instance->FLTRDATAR;
2225 *Channel = (reg & DFSDM_FLTRDATAR_RDATACH);
2228 reg &= DFSDM_FLTRDATAR_RDATA;
2229 value = ((int32_t)reg) / 256;
2244 HAL_StatusTypeDef status =
HAL_OK;
2247 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2277 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2292 while ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_JEOCF) != DFSDM_FLTISR_JEOCF)
2295 if (Timeout != HAL_MAX_DELAY)
2297 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
2305 if ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_JOVRF) == DFSDM_FLTISR_JOVRF)
2308 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INJECTED_OVERRUN;
2309 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 2310 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
2316 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRJOVRF;
2320 hdfsdm_filter->InjConvRemaining--;
2321 if (hdfsdm_filter->InjConvRemaining == 0U)
2324 if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
2331 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
2332 hdfsdm_filter->InjectedChannelsNbr : 1U;
2348 HAL_StatusTypeDef status =
HAL_OK;
2351 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2378 HAL_StatusTypeDef status =
HAL_OK;
2381 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2388 hdfsdm_filter->Instance->FLTCR2 |= (DFSDM_FLTCR2_JEOCIE | DFSDM_FLTCR2_JOVRIE);
2409 HAL_StatusTypeDef status =
HAL_OK;
2412 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2424 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_JEOCIE | DFSDM_FLTCR2_JOVRIE);
2449 HAL_StatusTypeDef status =
HAL_OK;
2452 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2455 if ((pData == NULL) || (Length == 0U))
2460 else if ((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_JDMAEN) != DFSDM_FLTCR1_JDMAEN)
2465 else if ((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2466 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_NORMAL) && \
2467 (Length > hdfsdm_filter->InjConvRemaining))
2471 else if ((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2472 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR))
2483 hdfsdm_filter->hdmaInj->XferHalfCpltCallback = (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR) ? \
2487 if (
HAL_DMA_Start_IT(hdfsdm_filter->hdmaInj, (uint32_t)&hdfsdm_filter->Instance->FLTJDATAR, \
2488 (uint32_t) pData, Length) !=
HAL_OK)
2524 HAL_StatusTypeDef status =
HAL_OK;
2527 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2530 if ((pData == NULL) || (Length == 0U))
2535 else if ((hdfsdm_filter->Instance->FLTCR1 & DFSDM_FLTCR1_JDMAEN) != DFSDM_FLTCR1_JDMAEN)
2540 else if ((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2541 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_NORMAL) && \
2542 (Length > hdfsdm_filter->InjConvRemaining))
2546 else if ((hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER) && \
2547 (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR))
2558 hdfsdm_filter->hdmaInj->XferHalfCpltCallback = (hdfsdm_filter->hdmaInj->Init.Mode == DMA_CIRCULAR) ? \
2562 if (
HAL_DMA_Start_IT(hdfsdm_filter->hdmaInj, (uint32_t)(&hdfsdm_filter->Instance->FLTJDATAR) + 2U, \
2563 (uint32_t) pData, Length) !=
HAL_OK)
2591 HAL_StatusTypeDef status =
HAL_OK;
2594 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2635 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2639 reg = hdfsdm_filter->Instance->FLTJDATAR;
2642 *Channel = (reg & DFSDM_FLTJDATAR_JDATACH);
2645 reg &= DFSDM_FLTJDATAR_JDATA;
2646 value = ((int32_t)reg) / 256;
2661 HAL_StatusTypeDef status =
HAL_OK;
2664 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2682 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_AWFSEL);
2683 hdfsdm_filter->Instance->FLTCR1 |= awdParam->
DataSource;
2686 hdfsdm_filter->Instance->FLTAWHTR &= ~(DFSDM_FLTAWHTR_AWHT | DFSDM_FLTAWHTR_BKAWH);
2687 hdfsdm_filter->Instance->FLTAWHTR |= (((uint32_t) awdParam->
HighThreshold << DFSDM_FLTAWHTR_AWHT_Pos) | \
2688 awdParam->HighBreakSignal);
2689 hdfsdm_filter->Instance->FLTAWLTR &= ~(DFSDM_FLTAWLTR_AWLT | DFSDM_FLTAWLTR_BKAWL);
2690 hdfsdm_filter->Instance->FLTAWLTR |= (((uint32_t) awdParam->
LowThreshold << DFSDM_FLTAWLTR_AWLT_Pos) | \
2691 awdParam->LowBreakSignal);
2694 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_AWDCH);
2695 hdfsdm_filter->Instance->FLTCR2 |= (((awdParam->
Channel & DFSDM_LSB_MASK) << DFSDM_FLTCR2_AWDCH_Pos) | \
2696 DFSDM_FLTCR2_AWDIE);
2709 HAL_StatusTypeDef status =
HAL_OK;
2712 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2724 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_AWDCH | DFSDM_FLTCR2_AWDIE);
2727 hdfsdm_filter->Instance->FLTAWCFR = (DFSDM_FLTAWCFR_CLRAWHTF | DFSDM_FLTAWCFR_CLRAWLTF);
2730 hdfsdm_filter->Instance->FLTAWHTR &= ~(DFSDM_FLTAWHTR_AWHT | DFSDM_FLTAWHTR_BKAWH);
2731 hdfsdm_filter->Instance->FLTAWLTR &= ~(DFSDM_FLTAWLTR_AWLT | DFSDM_FLTAWLTR_BKAWL);
2734 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_AWFSEL);
2750 HAL_StatusTypeDef status =
HAL_OK;
2753 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2766 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_EXCH);
2767 hdfsdm_filter->Instance->FLTCR2 |= ((Channel & DFSDM_LSB_MASK) << DFSDM_FLTCR2_EXCH_Pos);
2780 HAL_StatusTypeDef status =
HAL_OK;
2785 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2797 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_EXCH);
2800 reg1 = hdfsdm_filter->Instance->FLTEXMAX;
2801 reg2 = hdfsdm_filter->Instance->FLTEXMIN;
2823 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2827 reg = hdfsdm_filter->Instance->FLTEXMAX;
2830 *Channel = (reg & DFSDM_FLTEXMAX_EXMAXCH);
2833 reg &= DFSDM_FLTEXMAX_EXMAX;
2834 value = ((int32_t)reg) / 256;
2854 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2858 reg = hdfsdm_filter->Instance->FLTEXMIN;
2861 *Channel = (reg & DFSDM_FLTEXMIN_EXMINCH);
2864 reg &= DFSDM_FLTEXMIN_EXMIN;
2865 value = ((int32_t)reg) / 256;
2883 assert_param(IS_DFSDM_FILTER_ALL_INSTANCE(hdfsdm_filter->Instance));
2886 reg = hdfsdm_filter->Instance->FLTCNVTIMR;
2889 value = ((reg & DFSDM_FLTCNVTIMR_CNVCNT) >> DFSDM_FLTCNVTIMR_CNVCNT_Pos);
2903 const uint32_t temp_fltisr = hdfsdm_filter->Instance->FLTISR;
2904 const uint32_t temp_fltcr2 = hdfsdm_filter->Instance->FLTCR2;
2907 if (((temp_fltisr & DFSDM_FLTISR_ROVRF) != 0U) && \
2908 ((temp_fltcr2 & DFSDM_FLTCR2_ROVRIE) != 0U))
2911 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRROVRF;
2914 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_REGULAR_OVERRUN;
2917 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 2918 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
2924 else if (((temp_fltisr & DFSDM_FLTISR_JOVRF) != 0U) && \
2925 ((temp_fltcr2 & DFSDM_FLTCR2_JOVRIE) != 0U))
2928 hdfsdm_filter->Instance->FLTICR = DFSDM_FLTICR_CLRJOVRF;
2931 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_INJECTED_OVERRUN;
2934 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 2935 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
2941 else if (((temp_fltisr & DFSDM_FLTISR_REOCF) != 0U) && \
2942 ((temp_fltcr2 & DFSDM_FLTCR2_REOCIE) != 0U))
2945 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 2946 hdfsdm_filter->RegConvCpltCallback(hdfsdm_filter);
2952 if ((hdfsdm_filter->RegularContMode == DFSDM_CONTINUOUS_CONV_OFF) && \
2953 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
2956 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_REOCIE);
2964 else if (((temp_fltisr & DFSDM_FLTISR_JEOCF) != 0U) && \
2965 ((temp_fltcr2 & DFSDM_FLTCR2_JEOCIE) != 0U))
2968 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 2969 hdfsdm_filter->InjConvCpltCallback(hdfsdm_filter);
2975 hdfsdm_filter->InjConvRemaining--;
2976 if (hdfsdm_filter->InjConvRemaining == 0U)
2979 if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
2982 hdfsdm_filter->Instance->FLTCR2 &= ~(DFSDM_FLTCR2_JEOCIE);
2989 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
2990 hdfsdm_filter->InjectedChannelsNbr : 1U;
2994 else if (((temp_fltisr & DFSDM_FLTISR_AWDF) != 0U) && \
2995 ((temp_fltcr2 & DFSDM_FLTCR2_AWDIE) != 0U))
2999 uint32_t channel = 0;
3002 reg = hdfsdm_filter->Instance->FLTAWSR;
3003 threshold = ((reg & DFSDM_FLTAWSR_AWLTF) != 0U) ? DFSDM_AWD_LOW_THRESHOLD : DFSDM_AWD_HIGH_THRESHOLD;
3004 if (threshold == DFSDM_AWD_HIGH_THRESHOLD)
3006 reg = reg >> DFSDM_FLTAWSR_AWHTF_Pos;
3008 while (((reg & 1U) == 0U) && (channel < (DFSDM1_CHANNEL_NUMBER - 1U)))
3014 hdfsdm_filter->Instance->FLTAWCFR = (threshold == DFSDM_AWD_HIGH_THRESHOLD) ? \
3015 (1UL << (DFSDM_FLTAWSR_AWHTF_Pos + channel)) : \
3019 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3020 hdfsdm_filter->AwdCallback(hdfsdm_filter, channel, threshold);
3026 else if ((hdfsdm_filter->Instance == DFSDM1_Filter0) && \
3027 ((temp_fltisr & DFSDM_FLTISR_CKABF) != 0U) && \
3028 ((temp_fltcr2 & DFSDM_FLTCR2_CKABIE) != 0U))
3031 uint32_t channel = 0;
3033 reg = ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_CKABF) >> DFSDM_FLTISR_CKABF_Pos);
3035 while (channel < DFSDM1_CHANNEL_NUMBER)
3044 hdfsdm_filter->Instance->FLTICR = (1UL << (DFSDM_FLTICR_CLRCKABF_Pos + channel));
3047 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3059 else if ((hdfsdm_filter->Instance == DFSDM1_Filter0) && \
3060 ((temp_fltisr & DFSDM_FLTISR_SCDF) != 0U) && \
3061 ((temp_fltcr2 & DFSDM_FLTCR2_SCDIE) != 0U))
3064 uint32_t channel = 0;
3067 reg = ((hdfsdm_filter->Instance->FLTISR & DFSDM_FLTISR_SCDF) >> DFSDM_FLTISR_SCDF_Pos);
3068 while (((reg & 1U) == 0U) && (channel < (DFSDM1_CHANNEL_NUMBER - 1U)))
3075 hdfsdm_filter->Instance->FLTICR = (1UL << (DFSDM_FLTICR_CLRSCDF_Pos + channel));
3078 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3096 UNUSED(hdfsdm_filter);
3111 UNUSED(hdfsdm_filter);
3128 UNUSED(hdfsdm_filter);
3143 UNUSED(hdfsdm_filter);
3158 uint32_t Channel, uint32_t Threshold)
3161 UNUSED(hdfsdm_filter);
3178 UNUSED(hdfsdm_filter);
3211 return hdfsdm_filter->State;
3221 return hdfsdm_filter->ErrorCode;
3249 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3250 hdfsdm_filter->RegConvHalfCpltCallback(hdfsdm_filter);
3267 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3268 hdfsdm_filter->RegConvCpltCallback(hdfsdm_filter);
3285 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3286 hdfsdm_filter->InjConvHalfCpltCallback(hdfsdm_filter);
3303 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3304 hdfsdm_filter->InjConvCpltCallback(hdfsdm_filter);
3321 hdfsdm_filter->ErrorCode = DFSDM_FILTER_ERROR_DMA;
3324 #if (USE_HAL_DFSDM_REGISTER_CALLBACKS == 1) 3325 hdfsdm_filter->ErrorCallback(hdfsdm_filter);
3338 uint32_t nbChannels = 0;
3342 tmp = (uint32_t)(Channels & DFSDM_LSB_MASK);
3345 if ((tmp & 1U) != 0U)
3349 tmp = (uint32_t)(tmp >> 1);
3364 if (Instance == DFSDM1_Channel0)
3368 else if (Instance == DFSDM1_Channel1)
3372 else if (Instance == DFSDM1_Channel2)
3376 else if (Instance == DFSDM1_Channel3)
3380 #if defined(STM32L471xx) || defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx) || \ 3381 defined(STM32L496xx) || defined(STM32L4A6xx) || \ 3382 defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 3383 else if (Instance == DFSDM1_Channel4)
3387 else if (Instance == DFSDM1_Channel5)
3391 else if (Instance == DFSDM1_Channel6)
3395 else if (Instance == DFSDM1_Channel7)
3416 if (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER)
3419 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;
3424 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
3427 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSYNC;
3430 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
3435 if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
3437 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSWSTART;
3440 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
3441 hdfsdm_filter->InjectedChannelsNbr : 1U;
3457 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
3460 if (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SYNC_TRIGGER)
3462 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_RSYNC);
3466 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
3471 if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
3473 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSWSTART;
3476 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
3477 hdfsdm_filter->InjectedChannelsNbr : 1U;
3493 if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SW_TRIGGER)
3496 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSWSTART;
3501 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
3503 if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SYNC_TRIGGER)
3506 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_JSYNC;
3511 hdfsdm_filter->Instance->FLTCR1 |= hdfsdm_filter->ExtTriggerEdge;
3515 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
3519 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
3521 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;
3537 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_DFEN);
3540 if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_SYNC_TRIGGER)
3542 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JSYNC);
3544 else if (hdfsdm_filter->InjectedTrigger == DFSDM_FILTER_EXT_TRIGGER)
3547 hdfsdm_filter->Instance->FLTCR1 &= ~(DFSDM_FLTCR1_JEXTEN);
3555 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_DFEN;
3559 (hdfsdm_filter->RegularTrigger == DFSDM_FILTER_SW_TRIGGER))
3561 hdfsdm_filter->Instance->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;
3565 hdfsdm_filter->InjConvRemaining = (hdfsdm_filter->InjectedScanMode == ENABLE) ? \
3566 hdfsdm_filter->InjectedChannelsNbr : 1U;
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop regular conversion in polling mode.
static DFSDM_Channel_HandleTypeDef * a_dfsdm1ChannelHandle[DFSDM1_CHANNEL_NUMBER]
HAL_DFSDM_Filter_StateTypeDef
HAL DFSDM Filter states definition.
HAL_StatusTypeDef HAL_DFSDM_FilterDeInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
De-initializes the DFSDM filter.
struct __DFSDM_Channel_HandleTypeDef else typedef struct endif DFSDM_Channel_HandleTypeDef
DFSDM channel handle structure definition.
int32_t HAL_DFSDM_FilterGetInjectedValue(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get injected conversion value.
HAL_StatusTypeDef HAL_DFSDM_FilterPollForRegConversion(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Timeout)
This function allows to poll for the end of regular conversion.
static void DFSDM_RegConvStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to really stop regular conversion.
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...
static void DFSDM_DMARegularConvCplt(DMA_HandleTypeDef *hdma)
DMA transfer complete callback for regular conversion.
int16_t HAL_DFSDM_ChannelGetAwdValue(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to get channel analog watchdog value.
void HAL_DFSDM_ChannelScdCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
Short circuit detection callback.
void HAL_DFSDM_FilterErrorCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Error callback.
HAL_StatusTypeDef HAL_DFSDM_ChannelScdStop(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop short circuit detection in polling mode.
DMA handle Structure definition.
static void DFSDM_DMARegularHalfConvCplt(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback for regular conversion.
int32_t HAL_DFSDM_FilterGetExdMaxValue(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get extreme detector maximum value.
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.
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.
This file contains all the functions prototypes for the HAL module driver.
int32_t HAL_DFSDM_FilterGetExdMinValue(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get extreme detector minimum value.
HAL_StatusTypeDef HAL_DFSDM_FilterExdStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel)
This function allows to start extreme detector feature.
void HAL_DFSDM_ChannelMspDeInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
De-initialize the DFSDM channel MSP.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop injected conversion in polling mode.
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...
static void DFSDM_DMAError(DMA_HandleTypeDef *hdma)
DMA error callback.
static void DFSDM_InjConvStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to really stop injected conversion.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop regular conversion in interrupt mode.
int32_t HAL_DFSDM_FilterGetRegularValue(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t *Channel)
This function allows to get regular conversion value.
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_ChannelScdStop_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop short circuit detection in interrupt mode.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStart(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to start clock absence detection in polling mode.
struct __DFSDM_Filter_HandleTypeDef else typedef struct endif DFSDM_Filter_HandleTypeDef
DFSDM filter handle structure definition.
void HAL_DFSDM_FilterRegConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Half regular conversion complete callback.
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_DFSDM_Filter_StateTypeDef HAL_DFSDM_FilterGetState(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to get the current DFSDM filter handle state.
static uint32_t DFSDM_GetInjChannelsNbr(uint32_t Channels)
This function allows to get the number of injected channels.
static __IO uint32_t v_dfsdm1ChannelCounter
void HAL_DFSDM_ChannelCkabCallback(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
Clock absence detection callback.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to start regular conversion in polling mode.
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.
HAL_StatusTypeDef HAL_DFSDM_FilterConfigInjChannel(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel)
This function allows to select channels for injected conversion.
HAL_StatusTypeDef HAL_DFSDM_ChannelCkabStop(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop clock absence detection in polling mode.
uint32_t HAL_DFSDM_FilterGetError(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to get the current DFSDM filter error.
void HAL_DFSDM_FilterRegConvCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Regular conversion complete callback.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop injected conversion in interrupt mode.
DFSDM filter analog watchdog parameters structure definition.
static void DFSDM_DMAInjectedHalfConvCplt(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback for injected conversion.
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_FilterAwdStop_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop filter analog watchdog in interrupt mode.
void HAL_DFSDM_FilterInjConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Half injected conversion complete callback.
uint32_t HAL_DFSDM_FilterGetConvTimeValue(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to get conversion time value.
HAL_StatusTypeDef HAL_DFSDM_FilterAwdStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, DFSDM_Filter_AwdParamTypeDef *awdParam)
This function allows to start filter analog watchdog in interrupt mode.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
HAL_StatusTypeDef HAL_DFSDM_FilterExdStop(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop extreme detector feature.
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.
void(* pDFSDM_Filter_AwdCallbackTypeDef)(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel, uint32_t Threshold)
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_ChannelPollForScd(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, uint32_t Timeout)
This function allows to poll for the short circuit detection.
void HAL_DFSDM_IRQHandler(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function handles the DFSDM interrupts.
static void DFSDM_RegConvStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to really start regular conversion.
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_DFSDM_Channel_StateTypeDef HAL_DFSDM_ChannelGetState(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to get the current DFSDM channel handle state.
HAL_StatusTypeDef HAL_DFSDM_ChannelPollForCkab(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, uint32_t Timeout)
This function allows to poll for the clock absence detection.
static uint32_t DFSDM_GetChannelFromInstance(const DFSDM_Channel_TypeDef *Instance)
This function allows to get the channel number from channel instance.
void HAL_DFSDM_FilterAwdCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter, uint32_t Channel, uint32_t Threshold)
Filter analog watchdog callback.
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to start injected conversion in polling mode.
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_ChannelDeInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
De-initialize the DFSDM channel.
void(* pDFSDM_Channel_CallbackTypeDef)(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
DFSDM channel callback pointer definition.
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.
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...
static void DFSDM_DMAInjectedConvCplt(DMA_HandleTypeDef *hdma)
DMA transfer complete callback for injected conversion.
HAL_DFSDM_Channel_StateTypeDef
HAL DFSDM Channel states definition.
void HAL_DFSDM_ChannelMspInit(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
Initialize the DFSDM channel MSP.
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 ...
static void DFSDM_InjConvStart(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to really start injected conversion.
void(* pDFSDM_Filter_CallbackTypeDef)(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
DFSDM filter callback pointer definition.
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_ChannelCkabStop_IT(DFSDM_Channel_HandleTypeDef *hdfsdm_channel)
This function allows to stop clock absence detection in interrupt 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_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_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_ChannelModifyOffset(DFSDM_Channel_HandleTypeDef *hdfsdm_channel, int32_t Offset)
This function allows to modify channel offset value.
HAL_StatusTypeDef HAL_DFSDM_FilterRegularStart_IT(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to start regular conversion in interrupt mode.
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_FilterInjConvCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Injected conversion complete callback.
void HAL_DFSDM_FilterMspDeInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
De-initializes the DFSDM filter MSP.
void HAL_DFSDM_FilterMspInit(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
Initializes the DFSDM filter MSP.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
HAL_StatusTypeDef HAL_DFSDM_FilterInjectedStop_DMA(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
This function allows to stop injected conversion in DMA mode.
HAL_DFSDM_Filter_CallbackIDTypeDef
DFSDM filter callback ID enumeration definition.
HAL_DFSDM_Channel_CallbackIDTypeDef
DFSDM channel callback ID enumeration definition.