STM32L4xx_HAL_Driver  1.14.0
Initialization and de-initialization functions

Initialization and Configuration functions. More...

Functions

HAL_StatusTypeDef HAL_SMBUS_Init (SMBUS_HandleTypeDef *hsmbus)
 Initialize the SMBUS according to the specified parameters in the SMBUS_InitTypeDef and initialize the associated handle. More...
 
HAL_StatusTypeDef HAL_SMBUS_DeInit (SMBUS_HandleTypeDef *hsmbus)
 DeInitialize the SMBUS peripheral. More...
 
void HAL_SMBUS_MspInit (SMBUS_HandleTypeDef *hsmbus)
 Initialize the SMBUS MSP. More...
 
void HAL_SMBUS_MspDeInit (SMBUS_HandleTypeDef *hsmbus)
 DeInitialize the SMBUS MSP. More...
 
HAL_StatusTypeDef HAL_SMBUS_ConfigAnalogFilter (SMBUS_HandleTypeDef *hsmbus, uint32_t AnalogFilter)
 Configure Analog noise filter. More...
 
HAL_StatusTypeDef HAL_SMBUS_ConfigDigitalFilter (SMBUS_HandleTypeDef *hsmbus, uint32_t DigitalFilter)
 Configure Digital noise filter. More...
 
HAL_StatusTypeDef HAL_SMBUS_RegisterCallback (SMBUS_HandleTypeDef *hsmbus, HAL_SMBUS_CallbackIDTypeDef CallbackID, pSMBUS_CallbackTypeDef pCallback)
 Register a User SMBUS Callback To be used instead of the weak predefined callback. More...
 
HAL_StatusTypeDef HAL_SMBUS_UnRegisterCallback (SMBUS_HandleTypeDef *hsmbus, HAL_SMBUS_CallbackIDTypeDef CallbackID)
 Unregister an SMBUS Callback SMBUS callback is redirected to the weak predefined callback. More...
 
HAL_StatusTypeDef HAL_SMBUS_RegisterAddrCallback (SMBUS_HandleTypeDef *hsmbus, pSMBUS_AddrCallbackTypeDef pCallback)
 Register the Slave Address Match SMBUS Callback To be used instead of the weak HAL_SMBUS_AddrCallback() predefined callback. More...
 
HAL_StatusTypeDef HAL_SMBUS_UnRegisterAddrCallback (SMBUS_HandleTypeDef *hsmbus)
 UnRegister the Slave Address Match SMBUS Callback Info Ready SMBUS Callback is redirected to the weak HAL_SMBUS_AddrCallback() predefined callback. More...
 

Detailed Description

Initialization and Configuration functions.

 ===============================================================================
              ##### Initialization and de-initialization functions #####
 ===============================================================================
    [..]  This subsection provides a set of functions allowing to initialize and
          deinitialize the SMBUSx peripheral:

      (+) User must Implement HAL_SMBUS_MspInit() function in which he configures
          all related peripherals resources (CLOCK, GPIO, IT and NVIC ).

      (+) Call the function HAL_SMBUS_Init() to configure the selected device with
          the selected configuration:
        (++) Clock Timing
        (++) Bus Timeout
        (++) Analog Filer mode
        (++) Own Address 1
        (++) Addressing mode (Master, Slave)
        (++) Dual Addressing mode
        (++) Own Address 2
        (++) Own Address 2 Mask
        (++) General call mode
        (++) Nostretch mode
        (++) Packet Error Check mode
        (++) Peripheral mode


      (+) Call the function HAL_SMBUS_DeInit() to restore the default configuration
          of the selected SMBUSx peripheral.

      (+) Enable/Disable Analog/Digital filters with HAL_SMBUS_ConfigAnalogFilter() and
          HAL_SMBUS_ConfigDigitalFilter().

Function Documentation

◆ HAL_SMBUS_ConfigAnalogFilter()

HAL_StatusTypeDef HAL_SMBUS_ConfigAnalogFilter ( SMBUS_HandleTypeDef hsmbus,
uint32_t  AnalogFilter 
)

Configure Analog noise filter.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
AnalogFilterThis parameter can be one of the following values:
  • SMBUS_ANALOGFILTER_ENABLE
  • SMBUS_ANALOGFILTER_DISABLE
Return values
HALstatus

Definition at line 474 of file stm32l4xx_hal_smbus.c.

475 {
476  /* Check the parameters */
477  assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance));
478  assert_param(IS_SMBUS_ANALOG_FILTER(AnalogFilter));
479 
480  if (hsmbus->State == HAL_SMBUS_STATE_READY)
481  {
482  /* Process Locked */
483  __HAL_LOCK(hsmbus);
484 
485  hsmbus->State = HAL_SMBUS_STATE_BUSY;
486 
487  /* Disable the selected SMBUS peripheral */
488  __HAL_SMBUS_DISABLE(hsmbus);
489 
490  /* Reset ANOFF bit */
491  hsmbus->Instance->CR1 &= ~(I2C_CR1_ANFOFF);
492 
493  /* Set analog filter bit*/
494  hsmbus->Instance->CR1 |= AnalogFilter;
495 
496  __HAL_SMBUS_ENABLE(hsmbus);
497 
498  hsmbus->State = HAL_SMBUS_STATE_READY;
499 
500  /* Process Unlocked */
501  __HAL_UNLOCK(hsmbus);
502 
503  return HAL_OK;
504  }
505  else
506  {
507  return HAL_BUSY;
508  }
509 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_SMBUS_ConfigDigitalFilter()

HAL_StatusTypeDef HAL_SMBUS_ConfigDigitalFilter ( SMBUS_HandleTypeDef hsmbus,
uint32_t  DigitalFilter 
)

Configure Digital noise filter.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
DigitalFilterCoefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F.
Return values
HALstatus

Definition at line 518 of file stm32l4xx_hal_smbus.c.

519 {
520  uint32_t tmpreg;
521 
522  /* Check the parameters */
523  assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance));
524  assert_param(IS_SMBUS_DIGITAL_FILTER(DigitalFilter));
525 
526  if (hsmbus->State == HAL_SMBUS_STATE_READY)
527  {
528  /* Process Locked */
529  __HAL_LOCK(hsmbus);
530 
531  hsmbus->State = HAL_SMBUS_STATE_BUSY;
532 
533  /* Disable the selected SMBUS peripheral */
534  __HAL_SMBUS_DISABLE(hsmbus);
535 
536  /* Get the old register value */
537  tmpreg = hsmbus->Instance->CR1;
538 
539  /* Reset I2C DNF bits [11:8] */
540  tmpreg &= ~(I2C_CR1_DNF);
541 
542  /* Set I2Cx DNF coefficient */
543  tmpreg |= DigitalFilter << I2C_CR1_DNF_Pos;
544 
545  /* Store the new register value */
546  hsmbus->Instance->CR1 = tmpreg;
547 
548  __HAL_SMBUS_ENABLE(hsmbus);
549 
550  hsmbus->State = HAL_SMBUS_STATE_READY;
551 
552  /* Process Unlocked */
553  __HAL_UNLOCK(hsmbus);
554 
555  return HAL_OK;
556  }
557  else
558  {
559  return HAL_BUSY;
560  }
561 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_SMBUS_DeInit()

HAL_StatusTypeDef HAL_SMBUS_DeInit ( SMBUS_HandleTypeDef hsmbus)

DeInitialize the SMBUS peripheral.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
Return values
HALstatus

Definition at line 394 of file stm32l4xx_hal_smbus.c.

395 {
396  /* Check the SMBUS handle allocation */
397  if (hsmbus == NULL)
398  {
399  return HAL_ERROR;
400  }
401 
402  /* Check the parameters */
403  assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance));
404 
405  hsmbus->State = HAL_SMBUS_STATE_BUSY;
406 
407  /* Disable the SMBUS Peripheral Clock */
408  __HAL_SMBUS_DISABLE(hsmbus);
409 
410 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
411  if (hsmbus->MspDeInitCallback == NULL)
412  {
413  hsmbus->MspDeInitCallback = HAL_SMBUS_MspDeInit; /* Legacy weak MspDeInit */
414  }
415 
416  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
417  hsmbus->MspDeInitCallback(hsmbus);
418 #else
419  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
420  HAL_SMBUS_MspDeInit(hsmbus);
421 #endif /* USE_HAL_SMBUS_REGISTER_CALLBACKS */
422 
423  hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE;
424  hsmbus->PreviousState = HAL_SMBUS_STATE_RESET;
425  hsmbus->State = HAL_SMBUS_STATE_RESET;
426 
427  /* Release Lock */
428  __HAL_UNLOCK(hsmbus);
429 
430  return HAL_OK;
431 }
__HAL_UNLOCK(hrtc)
return HAL_OK
void(* MspDeInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void HAL_SMBUS_MspDeInit(SMBUS_HandleTypeDef *hsmbus)
DeInitialize the SMBUS MSP.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_SMBUS_Init()

HAL_StatusTypeDef HAL_SMBUS_Init ( SMBUS_HandleTypeDef hsmbus)

Initialize the SMBUS according to the specified parameters in the SMBUS_InitTypeDef and initialize the associated handle.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
Return values
HALstatus

Definition at line 274 of file stm32l4xx_hal_smbus.c.

275 {
276  /* Check the SMBUS handle allocation */
277  if (hsmbus == NULL)
278  {
279  return HAL_ERROR;
280  }
281 
282  /* Check the parameters */
283  assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance));
284  assert_param(IS_SMBUS_ANALOG_FILTER(hsmbus->Init.AnalogFilter));
285  assert_param(IS_SMBUS_OWN_ADDRESS1(hsmbus->Init.OwnAddress1));
286  assert_param(IS_SMBUS_ADDRESSING_MODE(hsmbus->Init.AddressingMode));
287  assert_param(IS_SMBUS_DUAL_ADDRESS(hsmbus->Init.DualAddressMode));
288  assert_param(IS_SMBUS_OWN_ADDRESS2(hsmbus->Init.OwnAddress2));
289  assert_param(IS_SMBUS_OWN_ADDRESS2_MASK(hsmbus->Init.OwnAddress2Masks));
290  assert_param(IS_SMBUS_GENERAL_CALL(hsmbus->Init.GeneralCallMode));
291  assert_param(IS_SMBUS_NO_STRETCH(hsmbus->Init.NoStretchMode));
292  assert_param(IS_SMBUS_PEC(hsmbus->Init.PacketErrorCheckMode));
293  assert_param(IS_SMBUS_PERIPHERAL_MODE(hsmbus->Init.PeripheralMode));
294 
295  if (hsmbus->State == HAL_SMBUS_STATE_RESET)
296  {
297  /* Allocate lock resource and initialize it */
298  hsmbus->Lock = HAL_UNLOCKED;
299 
300 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
301  hsmbus->MasterTxCpltCallback = HAL_SMBUS_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */
302  hsmbus->MasterRxCpltCallback = HAL_SMBUS_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */
303  hsmbus->SlaveTxCpltCallback = HAL_SMBUS_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */
304  hsmbus->SlaveRxCpltCallback = HAL_SMBUS_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */
305  hsmbus->ListenCpltCallback = HAL_SMBUS_ListenCpltCallback; /* Legacy weak ListenCpltCallback */
306  hsmbus->ErrorCallback = HAL_SMBUS_ErrorCallback; /* Legacy weak ErrorCallback */
307  hsmbus->AddrCallback = HAL_SMBUS_AddrCallback; /* Legacy weak AddrCallback */
308 
309  if (hsmbus->MspInitCallback == NULL)
310  {
311  hsmbus->MspInitCallback = HAL_SMBUS_MspInit; /* Legacy weak MspInit */
312  }
313 
314  /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
315  hsmbus->MspInitCallback(hsmbus);
316 #else
317  /* Init the low level hardware : GPIO, CLOCK, NVIC */
318  HAL_SMBUS_MspInit(hsmbus);
319 #endif /* USE_HAL_SMBUS_REGISTER_CALLBACKS */
320  }
321 
322  hsmbus->State = HAL_SMBUS_STATE_BUSY;
323 
324  /* Disable the selected SMBUS peripheral */
325  __HAL_SMBUS_DISABLE(hsmbus);
326 
327  /*---------------------------- SMBUSx TIMINGR Configuration ------------------------*/
328  /* Configure SMBUSx: Frequency range */
329  hsmbus->Instance->TIMINGR = hsmbus->Init.Timing & TIMING_CLEAR_MASK;
330 
331  /*---------------------------- SMBUSx TIMEOUTR Configuration ------------------------*/
332  /* Configure SMBUSx: Bus Timeout */
333  hsmbus->Instance->TIMEOUTR &= ~I2C_TIMEOUTR_TIMOUTEN;
334  hsmbus->Instance->TIMEOUTR &= ~I2C_TIMEOUTR_TEXTEN;
335  hsmbus->Instance->TIMEOUTR = hsmbus->Init.SMBusTimeout;
336 
337  /*---------------------------- SMBUSx OAR1 Configuration -----------------------*/
338  /* Configure SMBUSx: Own Address1 and ack own address1 mode */
339  hsmbus->Instance->OAR1 &= ~I2C_OAR1_OA1EN;
340 
341  if (hsmbus->Init.OwnAddress1 != 0UL)
342  {
343  if (hsmbus->Init.AddressingMode == SMBUS_ADDRESSINGMODE_7BIT)
344  {
345  hsmbus->Instance->OAR1 = (I2C_OAR1_OA1EN | hsmbus->Init.OwnAddress1);
346  }
347  else /* SMBUS_ADDRESSINGMODE_10BIT */
348  {
349  hsmbus->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hsmbus->Init.OwnAddress1);
350  }
351  }
352 
353  /*---------------------------- SMBUSx CR2 Configuration ------------------------*/
354  /* Configure SMBUSx: Addressing Master mode */
355  if (hsmbus->Init.AddressingMode == SMBUS_ADDRESSINGMODE_10BIT)
356  {
357  hsmbus->Instance->CR2 = (I2C_CR2_ADD10);
358  }
359  /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process) */
360  /* AUTOEND and NACK bit will be manage during Transfer process */
361  hsmbus->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK);
362 
363  /*---------------------------- SMBUSx OAR2 Configuration -----------------------*/
364  /* Configure SMBUSx: Dual mode and Own Address2 */
365  hsmbus->Instance->OAR2 = (hsmbus->Init.DualAddressMode | hsmbus->Init.OwnAddress2 | (hsmbus->Init.OwnAddress2Masks << 8U));
366 
367  /*---------------------------- SMBUSx CR1 Configuration ------------------------*/
368  /* Configure SMBUSx: Generalcall and NoStretch mode */
369  hsmbus->Instance->CR1 = (hsmbus->Init.GeneralCallMode | hsmbus->Init.NoStretchMode | hsmbus->Init.PacketErrorCheckMode | hsmbus->Init.PeripheralMode | hsmbus->Init.AnalogFilter);
370 
371  /* Enable Slave Byte Control only in case of Packet Error Check is enabled and SMBUS Peripheral is set in Slave mode */
372  if ((hsmbus->Init.PacketErrorCheckMode == SMBUS_PEC_ENABLE)
373  && ((hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE) || (hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)))
374  {
375  hsmbus->Instance->CR1 |= I2C_CR1_SBC;
376  }
377 
378  /* Enable the selected SMBUS peripheral */
379  __HAL_SMBUS_ENABLE(hsmbus);
380 
381  hsmbus->ErrorCode = HAL_SMBUS_ERROR_NONE;
382  hsmbus->PreviousState = HAL_SMBUS_STATE_READY;
383  hsmbus->State = HAL_SMBUS_STATE_READY;
384 
385  return HAL_OK;
386 }
void HAL_SMBUS_SlaveTxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Tx Transfer completed callback.
void HAL_SMBUS_MspInit(SMBUS_HandleTypeDef *hsmbus)
Initialize the SMBUS MSP.
void HAL_SMBUS_MasterTxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Master Tx Transfer completed callback.
void(* ListenCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void HAL_SMBUS_AddrCallback(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
void HAL_SMBUS_ListenCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Listen Complete callback.
void HAL_SMBUS_MasterRxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Master Rx Transfer completed callback.
return HAL_OK
void(* MspInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* SlaveTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* ErrorCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* MasterTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void HAL_SMBUS_SlaveRxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Rx Transfer completed callback.
void HAL_SMBUS_ErrorCallback(SMBUS_HandleTypeDef *hsmbus)
SMBUS error callback.
void(* MasterRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* SlaveRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void(* AddrCallback)(struct __SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)

◆ HAL_SMBUS_MspDeInit()

__weak void HAL_SMBUS_MspDeInit ( SMBUS_HandleTypeDef hsmbus)

DeInitialize the SMBUS MSP.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
Return values
None

Definition at line 455 of file stm32l4xx_hal_smbus.c.

456 {
457  /* Prevent unused argument(s) compilation warning */
458  UNUSED(hsmbus);
459 
460  /* NOTE : This function should not be modified, when the callback is needed,
461  the HAL_SMBUS_MspDeInit could be implemented in the user file
462  */
463 }

◆ HAL_SMBUS_MspInit()

__weak void HAL_SMBUS_MspInit ( SMBUS_HandleTypeDef hsmbus)

Initialize the SMBUS MSP.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
Return values
None

Definition at line 439 of file stm32l4xx_hal_smbus.c.

440 {
441  /* Prevent unused argument(s) compilation warning */
442  UNUSED(hsmbus);
443 
444  /* NOTE : This function should not be modified, when the callback is needed,
445  the HAL_SMBUS_MspInit could be implemented in the user file
446  */
447 }

◆ HAL_SMBUS_RegisterAddrCallback()

HAL_StatusTypeDef HAL_SMBUS_RegisterAddrCallback ( SMBUS_HandleTypeDef hsmbus,
pSMBUS_AddrCallbackTypeDef  pCallback 
)

Register the Slave Address Match SMBUS Callback To be used instead of the weak HAL_SMBUS_AddrCallback() predefined callback.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
pCallbackpointer to the Address Match Callback function
Return values
HALstatus

Definition at line 790 of file stm32l4xx_hal_smbus.c.

791 {
792  HAL_StatusTypeDef status = HAL_OK;
793 
794  if (pCallback == NULL)
795  {
796  /* Update the error code */
797  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
798 
799  return HAL_ERROR;
800  }
801  /* Process locked */
802  __HAL_LOCK(hsmbus);
803 
804  if (HAL_SMBUS_STATE_READY == hsmbus->State)
805  {
806  hsmbus->AddrCallback = pCallback;
807  }
808  else
809  {
810  /* Update the error code */
811  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
812 
813  /* Return error status */
814  status = HAL_ERROR;
815  }
816 
817  /* Release Lock */
818  __HAL_UNLOCK(hsmbus);
819  return status;
820 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
void(* AddrCallback)(struct __SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)

◆ HAL_SMBUS_RegisterCallback()

HAL_StatusTypeDef HAL_SMBUS_RegisterCallback ( SMBUS_HandleTypeDef hsmbus,
HAL_SMBUS_CallbackIDTypeDef  CallbackID,
pSMBUS_CallbackTypeDef  pCallback 
)

Register a User SMBUS Callback To be used instead of the weak predefined callback.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
CallbackIDID of the callback to be registered This parameter can be one of the following values:
pCallbackpointer to the Callback function
Return values
HALstatus

Definition at line 582 of file stm32l4xx_hal_smbus.c.

583 {
584  HAL_StatusTypeDef status = HAL_OK;
585 
586  if (pCallback == NULL)
587  {
588  /* Update the error code */
589  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
590 
591  return HAL_ERROR;
592  }
593 
594  /* Process locked */
595  __HAL_LOCK(hsmbus);
596 
597  if (HAL_SMBUS_STATE_READY == hsmbus->State)
598  {
599  switch (CallbackID)
600  {
602  hsmbus->MasterTxCpltCallback = pCallback;
603  break;
604 
606  hsmbus->MasterRxCpltCallback = pCallback;
607  break;
608 
610  hsmbus->SlaveTxCpltCallback = pCallback;
611  break;
612 
614  hsmbus->SlaveRxCpltCallback = pCallback;
615  break;
616 
618  hsmbus->ListenCpltCallback = pCallback;
619  break;
620 
621  case HAL_SMBUS_ERROR_CB_ID :
622  hsmbus->ErrorCallback = pCallback;
623  break;
624 
626  hsmbus->MspInitCallback = pCallback;
627  break;
628 
630  hsmbus->MspDeInitCallback = pCallback;
631  break;
632 
633  default :
634  /* Update the error code */
635  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
636 
637  /* Return error status */
638  status = HAL_ERROR;
639  break;
640  }
641  }
642  else if (HAL_SMBUS_STATE_RESET == hsmbus->State)
643  {
644  switch (CallbackID)
645  {
647  hsmbus->MspInitCallback = pCallback;
648  break;
649 
651  hsmbus->MspDeInitCallback = pCallback;
652  break;
653 
654  default :
655  /* Update the error code */
656  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
657 
658  /* Return error status */
659  status = HAL_ERROR;
660  break;
661  }
662  }
663  else
664  {
665  /* Update the error code */
666  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
667 
668  /* Return error status */
669  status = HAL_ERROR;
670  }
671 
672  /* Release Lock */
673  __HAL_UNLOCK(hsmbus);
674  return status;
675 }
__HAL_UNLOCK(hrtc)
void(* ListenCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
__HAL_LOCK(hrtc)
return HAL_OK
void(* MspInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* SlaveTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* ErrorCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* MasterTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* MspDeInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* MasterRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* SlaveRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)

◆ HAL_SMBUS_UnRegisterAddrCallback()

HAL_StatusTypeDef HAL_SMBUS_UnRegisterAddrCallback ( SMBUS_HandleTypeDef hsmbus)

UnRegister the Slave Address Match SMBUS Callback Info Ready SMBUS Callback is redirected to the weak HAL_SMBUS_AddrCallback() predefined callback.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
Return values
HALstatus

Definition at line 829 of file stm32l4xx_hal_smbus.c.

830 {
831  HAL_StatusTypeDef status = HAL_OK;
832 
833  /* Process locked */
834  __HAL_LOCK(hsmbus);
835 
836  if (HAL_SMBUS_STATE_READY == hsmbus->State)
837  {
838  hsmbus->AddrCallback = HAL_SMBUS_AddrCallback; /* Legacy weak AddrCallback */
839  }
840  else
841  {
842  /* Update the error code */
843  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
844 
845  /* Return error status */
846  status = HAL_ERROR;
847  }
848 
849  /* Release Lock */
850  __HAL_UNLOCK(hsmbus);
851  return status;
852 }
__HAL_UNLOCK(hrtc)
void HAL_SMBUS_AddrCallback(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
__HAL_LOCK(hrtc)
return HAL_OK
void(* AddrCallback)(struct __SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)

◆ HAL_SMBUS_UnRegisterCallback()

HAL_StatusTypeDef HAL_SMBUS_UnRegisterCallback ( SMBUS_HandleTypeDef hsmbus,
HAL_SMBUS_CallbackIDTypeDef  CallbackID 
)

Unregister an SMBUS Callback SMBUS callback is redirected to the weak predefined callback.

Parameters
hsmbusPointer to a SMBUS_HandleTypeDef structure that contains the configuration information for the specified SMBUS.
CallbackIDID of the callback to be unregistered This parameter can be one of the following values: This parameter can be one of the following values:
Return values
HALstatus

Definition at line 695 of file stm32l4xx_hal_smbus.c.

696 {
697  HAL_StatusTypeDef status = HAL_OK;
698 
699  /* Process locked */
700  __HAL_LOCK(hsmbus);
701 
702  if (HAL_SMBUS_STATE_READY == hsmbus->State)
703  {
704  switch (CallbackID)
705  {
707  hsmbus->MasterTxCpltCallback = HAL_SMBUS_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */
708  break;
709 
711  hsmbus->MasterRxCpltCallback = HAL_SMBUS_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */
712  break;
713 
715  hsmbus->SlaveTxCpltCallback = HAL_SMBUS_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */
716  break;
717 
719  hsmbus->SlaveRxCpltCallback = HAL_SMBUS_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */
720  break;
721 
723  hsmbus->ListenCpltCallback = HAL_SMBUS_ListenCpltCallback; /* Legacy weak ListenCpltCallback */
724  break;
725 
726  case HAL_SMBUS_ERROR_CB_ID :
727  hsmbus->ErrorCallback = HAL_SMBUS_ErrorCallback; /* Legacy weak ErrorCallback */
728  break;
729 
731  hsmbus->MspInitCallback = HAL_SMBUS_MspInit; /* Legacy weak MspInit */
732  break;
733 
735  hsmbus->MspDeInitCallback = HAL_SMBUS_MspDeInit; /* Legacy weak MspDeInit */
736  break;
737 
738  default :
739  /* Update the error code */
740  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
741 
742  /* Return error status */
743  status = HAL_ERROR;
744  break;
745  }
746  }
747  else if (HAL_SMBUS_STATE_RESET == hsmbus->State)
748  {
749  switch (CallbackID)
750  {
752  hsmbus->MspInitCallback = HAL_SMBUS_MspInit; /* Legacy weak MspInit */
753  break;
754 
756  hsmbus->MspDeInitCallback = HAL_SMBUS_MspDeInit; /* Legacy weak MspDeInit */
757  break;
758 
759  default :
760  /* Update the error code */
761  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
762 
763  /* Return error status */
764  status = HAL_ERROR;
765  break;
766  }
767  }
768  else
769  {
770  /* Update the error code */
771  hsmbus->ErrorCode |= HAL_SMBUS_ERROR_INVALID_CALLBACK;
772 
773  /* Return error status */
774  status = HAL_ERROR;
775  }
776 
777  /* Release Lock */
778  __HAL_UNLOCK(hsmbus);
779  return status;
780 }
void HAL_SMBUS_SlaveTxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Tx Transfer completed callback.
void HAL_SMBUS_MspInit(SMBUS_HandleTypeDef *hsmbus)
Initialize the SMBUS MSP.
void HAL_SMBUS_MasterTxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Master Tx Transfer completed callback.
__HAL_UNLOCK(hrtc)
void(* ListenCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
__HAL_LOCK(hrtc)
void HAL_SMBUS_ListenCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Listen Complete callback.
void HAL_SMBUS_MasterRxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Master Rx Transfer completed callback.
return HAL_OK
void(* MspInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* SlaveTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* ErrorCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* MasterTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* MspDeInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void HAL_SMBUS_SlaveRxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Rx Transfer completed callback.
void HAL_SMBUS_ErrorCallback(SMBUS_HandleTypeDef *hsmbus)
SMBUS error callback.
void HAL_SMBUS_MspDeInit(SMBUS_HandleTypeDef *hsmbus)
DeInitialize the SMBUS MSP.
void(* MasterRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* SlaveRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)