334#ifdef HAL_FMPI2C_MODULE_ENABLED 
  335#if defined(FMPI2C_CR1_PE) 
  343#define TIMING_CLEAR_MASK   (0xF0FFFFFFU)   
  344#define FMPI2C_TIMEOUT_ADDR    (10000U)        
  345#define FMPI2C_TIMEOUT_BUSY    (25U)           
  346#define FMPI2C_TIMEOUT_DIR     (25U)           
  347#define FMPI2C_TIMEOUT_RXNE    (25U)           
  348#define FMPI2C_TIMEOUT_STOPF   (25U)           
  349#define FMPI2C_TIMEOUT_TC      (25U)           
  350#define FMPI2C_TIMEOUT_TCR     (25U)           
  351#define FMPI2C_TIMEOUT_TXIS    (25U)           
  352#define FMPI2C_TIMEOUT_FLAG    (25U)           
  354#define MAX_NBYTE_SIZE      255U 
  355#define SLAVE_ADDR_SHIFT     7U 
  356#define SLAVE_ADDR_MSK       0x06U 
  359#define FMPI2C_STATE_MSK             ((uint32_t)((uint32_t)((uint32_t)HAL_FMPI2C_STATE_BUSY_TX | \ 
  360                                                            (uint32_t)HAL_FMPI2C_STATE_BUSY_RX) & \ 
  361                                                 (uint32_t)(~((uint32_t)HAL_FMPI2C_STATE_READY)))) 
 
  363#define FMPI2C_STATE_NONE            ((uint32_t)(HAL_FMPI2C_MODE_NONE)) 
  365#define FMPI2C_STATE_MASTER_BUSY_TX  ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_TX & FMPI2C_STATE_MSK) | \ 
  366                                                 (uint32_t)HAL_FMPI2C_MODE_MASTER)) 
 
  368#define FMPI2C_STATE_MASTER_BUSY_RX  ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_RX & FMPI2C_STATE_MSK) | \ 
  369                                                 (uint32_t)HAL_FMPI2C_MODE_MASTER)) 
 
  371#define FMPI2C_STATE_SLAVE_BUSY_TX   ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_TX & FMPI2C_STATE_MSK) | \ 
  372                                                 (uint32_t)HAL_FMPI2C_MODE_SLAVE)) 
 
  374#define FMPI2C_STATE_SLAVE_BUSY_RX   ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_RX & FMPI2C_STATE_MSK) | \ 
  375                                                 (uint32_t)HAL_FMPI2C_MODE_SLAVE)) 
 
  377#define FMPI2C_STATE_MEM_BUSY_TX     ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_TX & FMPI2C_STATE_MSK) | \ 
  378                                                 (uint32_t)HAL_FMPI2C_MODE_MEM)) 
 
  380#define FMPI2C_STATE_MEM_BUSY_RX     ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_RX & FMPI2C_STATE_MSK) | \ 
  381                                                 (uint32_t)HAL_FMPI2C_MODE_MEM)) 
 
  386#define FMPI2C_XFER_TX_IT          (uint16_t)(0x0001U)    
  388#define FMPI2C_XFER_RX_IT          (uint16_t)(0x0002U)    
  390#define FMPI2C_XFER_LISTEN_IT      (uint16_t)(0x8000U)    
  393#define FMPI2C_XFER_ERROR_IT       (uint16_t)(0x0010U)    
  395#define FMPI2C_XFER_CPLT_IT        (uint16_t)(0x0020U)    
  396#define FMPI2C_XFER_RELOAD_IT      (uint16_t)(0x0040U)    
  399#define FMPI2C_NO_OPTION_FRAME     (0xFFFF0000U) 
  409#define FMPI2C_GET_DMA_REMAIN_DATA(__HANDLE__)     __HAL_DMA_GET_COUNTER(__HANDLE__) 
  440                                                   uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
 
  443                                                  uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
 
  462                                                       uint32_t Timeout, uint32_t Tickstart);
 
  559#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
  572    if (hfmpi2c->MspInitCallback == NULL)
 
  578    hfmpi2c->MspInitCallback(hfmpi2c);
 
  596  hfmpi2c->
Instance->OAR1 &= ~FMPI2C_OAR1_OA1EN;
 
  612    SET_BIT(hfmpi2c->
Instance->CR2, FMPI2C_CR2_ADD10);
 
  617    CLEAR_BIT(hfmpi2c->
Instance->CR2, FMPI2C_CR2_ADD10);
 
  620  hfmpi2c->
Instance->CR2 |= (FMPI2C_CR2_AUTOEND | FMPI2C_CR2_NACK);
 
  624  hfmpi2c->
Instance->OAR2 &= ~FMPI2C_DUALADDRESS_ENABLE;
 
 
  667#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
  668  if (hfmpi2c->MspDeInitCallback == NULL)
 
  674  hfmpi2c->MspDeInitCallback(hfmpi2c);
 
 
  723#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
  748                                              pFMPI2C_CallbackTypeDef pCallback)
 
  752  if (pCallback == NULL)
 
  755    hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  764      case HAL_FMPI2C_MASTER_TX_COMPLETE_CB_ID :
 
  765        hfmpi2c->MasterTxCpltCallback = pCallback;
 
  768      case HAL_FMPI2C_MASTER_RX_COMPLETE_CB_ID :
 
  769        hfmpi2c->MasterRxCpltCallback = pCallback;
 
  772      case HAL_FMPI2C_SLAVE_TX_COMPLETE_CB_ID :
 
  773        hfmpi2c->SlaveTxCpltCallback = pCallback;
 
  776      case HAL_FMPI2C_SLAVE_RX_COMPLETE_CB_ID :
 
  777        hfmpi2c->SlaveRxCpltCallback = pCallback;
 
  780      case HAL_FMPI2C_LISTEN_COMPLETE_CB_ID :
 
  781        hfmpi2c->ListenCpltCallback = pCallback;
 
  784      case HAL_FMPI2C_MEM_TX_COMPLETE_CB_ID :
 
  785        hfmpi2c->MemTxCpltCallback = pCallback;
 
  788      case HAL_FMPI2C_MEM_RX_COMPLETE_CB_ID :
 
  789        hfmpi2c->MemRxCpltCallback = pCallback;
 
  792      case HAL_FMPI2C_ERROR_CB_ID :
 
  793        hfmpi2c->ErrorCallback = pCallback;
 
  796      case HAL_FMPI2C_ABORT_CB_ID :
 
  797        hfmpi2c->AbortCpltCallback = pCallback;
 
  800      case HAL_FMPI2C_MSPINIT_CB_ID :
 
  801        hfmpi2c->MspInitCallback = pCallback;
 
  804      case HAL_FMPI2C_MSPDEINIT_CB_ID :
 
  805        hfmpi2c->MspDeInitCallback = pCallback;
 
  810        hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  821      case HAL_FMPI2C_MSPINIT_CB_ID :
 
  822        hfmpi2c->MspInitCallback = pCallback;
 
  825      case HAL_FMPI2C_MSPDEINIT_CB_ID :
 
  826        hfmpi2c->MspDeInitCallback = pCallback;
 
  831        hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  841    hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  881      case HAL_FMPI2C_MASTER_TX_COMPLETE_CB_ID :
 
  885      case HAL_FMPI2C_MASTER_RX_COMPLETE_CB_ID :
 
  889      case HAL_FMPI2C_SLAVE_TX_COMPLETE_CB_ID :
 
  893      case HAL_FMPI2C_SLAVE_RX_COMPLETE_CB_ID :
 
  897      case HAL_FMPI2C_LISTEN_COMPLETE_CB_ID :
 
  901      case HAL_FMPI2C_MEM_TX_COMPLETE_CB_ID :
 
  905      case HAL_FMPI2C_MEM_RX_COMPLETE_CB_ID :
 
  909      case HAL_FMPI2C_ERROR_CB_ID :
 
  913      case HAL_FMPI2C_ABORT_CB_ID :
 
  917      case HAL_FMPI2C_MSPINIT_CB_ID :
 
  921      case HAL_FMPI2C_MSPDEINIT_CB_ID :
 
  927        hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  938      case HAL_FMPI2C_MSPINIT_CB_ID :
 
  942      case HAL_FMPI2C_MSPDEINIT_CB_ID :
 
  948        hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  958    hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  979  if (pCallback == NULL)
 
  982    hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
  989    hfmpi2c->AddrCallback = pCallback;
 
  994    hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
 1021    hfmpi2c->
ErrorCode |= HAL_FMPI2C_ERROR_INVALID_CALLBACK;
 
 1121                                             uint16_t Size, uint32_t Timeout)
 
 
 1262                                            uint16_t Size, uint32_t Timeout)
 
 
 1383  uint16_t tmpXferCount;
 
 1388    if ((pData == NULL) || (Size == 0U))
 
 1409    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 1415      hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1442        hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1454      hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1464        hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1495        hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1511        hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1524      hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1529    hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 
 1561    if ((pData == NULL) || (Size == 0U))
 
 1583    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 1589      hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1600      hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1610        hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1642      hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1653      hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 1658    hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 
 1855    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 
 1919    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 
 1964  uint32_t sizetoxfer = 0U;
 
 2013      if (hfmpi2c->
hdmatx != NULL)
 
 2044      if (dmaxferstatus == 
HAL_OK)
 
 2064        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
 
 
 2161      if (hfmpi2c->
hdmarx != NULL)
 
 2192      if (dmaxferstatus == 
HAL_OK)
 
 2211        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_RXDMAEN;
 
 
 2273    if ((pData == NULL) || (Size == 0U))
 
 2308      if (hfmpi2c->
hdmatx != NULL)
 
 2340      if (dmaxferstatus == 
HAL_OK)
 
 2343        hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 2355        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
 
 2375      hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 
 2409    if ((pData == NULL) || (Size == 0U))
 
 2428    if (hfmpi2c->
hdmarx != NULL)
 
 2459    if (dmaxferstatus == 
HAL_OK)
 
 2462      hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 2474      hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_RXDMAEN;
 
 
 2513                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
 
 2522    if ((pData == NULL) || (Size == 0U))
 
 
 2650                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
 
 2659    if ((pData == NULL) || (Size == 0U))
 
 
 2787                                          uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 
 2794    if ((pData == NULL) || (Size == 0U))
 
 
 2875                                         uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 
 2882    if ((pData == NULL) || (Size == 0U))
 
 
 2962                                           uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 
 2971    if ((pData == NULL) || (Size == 0U))
 
 3024    if (hfmpi2c->
hdmatx != NULL)
 
 3055    if (dmaxferstatus == 
HAL_OK)
 
 
 3108                                          uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 
 3117    if ((pData == NULL) || (Size == 0U))
 
 3170    if (hfmpi2c->
hdmarx != NULL)
 
 3201    if (dmaxferstatus == 
HAL_OK)
 
 
 3257  __IO uint32_t FMPI2C_Trials = 0UL;
 
 3287      while ((tmp1 == RESET) && (tmp2 == RESET))
 
 3291          if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
 
 3347    } 
while (FMPI2C_Trials < Trials);
 
 
 3379                                                    uint16_t Size, uint32_t XferOptions)
 
 3383  uint32_t sizetoxfer = 0U;
 
 
 3493                                                     uint16_t Size, uint32_t XferOptions)
 
 3498  uint32_t sizetoxfer = 0U;
 
 3567      if (hfmpi2c->
hdmatx != NULL)
 
 3598      if (dmaxferstatus == 
HAL_OK)
 
 3623        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
 
 
 3690                                                   uint16_t Size, uint32_t XferOptions)
 
 
 3777                                                    uint16_t Size, uint32_t XferOptions)
 
 3835      if (hfmpi2c->
hdmarx != NULL)
 
 3866      if (dmaxferstatus == 
HAL_OK)
 
 3884        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_RXDMAEN;
 
 
 3943                                                   uint32_t XferOptions)
 
 3953    if ((pData == NULL) || (Size == 0U))
 
 3973      if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_RXDMAEN) == FMPI2C_CR1_RXDMAEN)
 
 3975        hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 3977        if (hfmpi2c->
hdmarx != NULL)
 
 3998    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 
 4043                                                    uint32_t XferOptions)
 
 4054    if ((pData == NULL) || (Size == 0U))
 
 4073      if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_RXDMAEN) == FMPI2C_CR1_RXDMAEN)
 
 4076        if (hfmpi2c->
hdmarx != NULL)
 
 4078          hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 4095      if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_TXDMAEN) == FMPI2C_CR1_TXDMAEN)
 
 4097        hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 4100        if (hfmpi2c->
hdmatx != NULL)
 
 4125    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 4134    if (hfmpi2c->
hdmatx != NULL)
 
 4165    if (dmaxferstatus == 
HAL_OK)
 
 4200    hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
 
 
 4227                                                  uint32_t XferOptions)
 
 4237    if ((pData == NULL) || (Size == 0U))
 
 4256      if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_TXDMAEN) == FMPI2C_CR1_TXDMAEN)
 
 4258        hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 4261        if (hfmpi2c->
hdmatx != NULL)
 
 4282    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 
 4327                                                   uint32_t XferOptions)
 
 4338    if ((pData == NULL) || (Size == 0U))
 
 4357      if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_TXDMAEN) == FMPI2C_CR1_TXDMAEN)
 
 4360        if (hfmpi2c->
hdmatx != NULL)
 
 4362          hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 4379      if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_RXDMAEN) == FMPI2C_CR1_RXDMAEN)
 
 4381        hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 4384        if (hfmpi2c->
hdmarx != NULL)
 
 4409    hfmpi2c->
Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
 4418    if (hfmpi2c->
hdmarx != NULL)
 
 4432                                       (uint32_t)pData, hfmpi2c->
XferSize);
 
 4449    if (dmaxferstatus == 
HAL_OK)
 
 4484    hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_RXDMAEN;
 
 
 4628  uint32_t itflags   = READ_REG(hfmpi2c->
Instance->ISR);
 
 4629  uint32_t itsources = READ_REG(hfmpi2c->
Instance->CR1);
 
 4634    hfmpi2c->
XferISR(hfmpi2c, itflags, itsources);
 
 
 4646  uint32_t itflags   = READ_REG(hfmpi2c->
Instance->ISR);
 
 4647  uint32_t itsources = READ_REG(hfmpi2c->
Instance->CR1);
 
 
 4765  UNUSED(TransferDirection);
 
 
 4881  return hfmpi2c->
State;
 
 
 4892  return hfmpi2c->
Mode;
 
 
 4929  uint16_t devaddress;
 
 4930  uint32_t tmpITFlags = ITFlags;
 
 4953    tmpITFlags &= ~FMPI2C_FLAG_RXNE;
 
 4986      devaddress = (uint16_t)(hfmpi2c->
Instance->CR2 & FMPI2C_CR2_SADD);
 
 5043          hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_STOP;
 
 
 5089  uint32_t tmpITFlags = ITFlags;
 
 5112    tmpITFlags &= ~FMPI2C_FLAG_RXNE;
 
 
 5248  uint32_t tmpITFlags = ITFlags;
 
 
 5387  uint16_t devaddress;
 
 5419      devaddress = (uint16_t)(hfmpi2c->
Instance->CR2 & FMPI2C_CR2_SADD);
 
 5457        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_RXDMAEN;
 
 5461        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
 
 5491          hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_STOP;
 
 
 5605        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_RXDMAEN;
 
 5609        hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
 
 5664      hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_RXDMAEN;
 
 5668      hfmpi2c->
Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
 
 
 5700  uint32_t treatdmanack = 0U;
 
 5724      if (hfmpi2c->
hdmarx != NULL)
 
 5736      if (hfmpi2c->
hdmatx != NULL)
 
 5747      if (treatdmanack == 1U)
 
 5784        tmpstate = hfmpi2c->
State;
 
 
 5841                                                   uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
 
 
 5896                                                  uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
 
 
 5946  uint8_t transferdirection;
 
 5947  uint16_t slaveaddrcode;
 
 5948  uint16_t ownadd1code;
 
 5949  uint16_t ownadd2code;
 
 5967        slaveaddrcode = ownadd1code;
 
 5981#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 5982          hfmpi2c->AddrCallback(hfmpi2c, transferdirection, slaveaddrcode);
 
 5990        slaveaddrcode = ownadd2code;
 
 5999#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6000        hfmpi2c->AddrCallback(hfmpi2c, transferdirection, slaveaddrcode);
 
 6016#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6017      hfmpi2c->AddrCallback(hfmpi2c, transferdirection, slaveaddrcode);
 
 
 6059#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6060    hfmpi2c->MasterTxCpltCallback(hfmpi2c);
 
 6079#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6080    hfmpi2c->MasterRxCpltCallback(hfmpi2c);
 
 
 6094  uint32_t tmpcr1value = READ_REG(hfmpi2c->
Instance->CR1);
 
 6103    hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 6108    hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 6128#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6129    hfmpi2c->SlaveTxCpltCallback(hfmpi2c);
 
 6148#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6149    hfmpi2c->SlaveRxCpltCallback(hfmpi2c);
 
 
 6169  uint32_t tmpITFlags = ITFlags;
 
 6170  __IO uint32_t tmpreg;
 
 6211    tmpreg = (uint8_t)hfmpi2c->
Instance->RXDR;
 
 6241#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6242      hfmpi2c->MemTxCpltCallback(hfmpi2c);
 
 6255#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6256      hfmpi2c->MasterTxCpltCallback(hfmpi2c);
 
 6276#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6277      hfmpi2c->MemRxCpltCallback(hfmpi2c);
 
 6290#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6291      hfmpi2c->MasterRxCpltCallback(hfmpi2c);
 
 
 6311  uint32_t tmpcr1value = READ_REG(hfmpi2c->
Instance->CR1);
 
 6312  uint32_t tmpITFlags = ITFlags;
 
 6341  hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 6353    hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 6355    if (hfmpi2c->
hdmatx != NULL)
 
 6363    hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 6365    if (hfmpi2c->
hdmarx != NULL)
 
 6379    tmpITFlags &= ~FMPI2C_FLAG_RXNE;
 
 6480#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6481    hfmpi2c->ListenCpltCallback(hfmpi2c);
 
 6496#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6497    hfmpi2c->SlaveRxCpltCallback(hfmpi2c);
 
 6511#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6512    hfmpi2c->SlaveTxCpltCallback(hfmpi2c);
 
 
 6563#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6564  hfmpi2c->ListenCpltCallback(hfmpi2c);
 
 
 6580  uint32_t tmppreviousstate;
 
 6640    if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_TXDMAEN) == FMPI2C_CR1_TXDMAEN)
 
 6642      hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 6670    if ((hfmpi2c->
Instance->CR1 & FMPI2C_CR1_RXDMAEN) == FMPI2C_CR1_RXDMAEN)
 
 6672      hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 
 6718#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6719    hfmpi2c->AbortCpltCallback(hfmpi2c);
 
 6732#if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1) 
 6733    hfmpi2c->ErrorCallback(hfmpi2c);
 
 
 6772  hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 
 6826    hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_TXDMAEN;
 
 
 6852  hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 
 6915    hfmpi2c->
Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
 
 6936  uint32_t treatdmaerror = 0U;
 
 6940  if (hfmpi2c->
hdmatx != NULL)
 
 6948  if (hfmpi2c->
hdmarx != NULL)
 
 6960    hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_NACK;
 
 
 6980  if (hfmpi2c->
hdmatx != NULL)
 
 6984  if (hfmpi2c->
hdmarx != NULL)
 
 
 7005                                                       uint32_t Timeout, uint32_t Tickstart)
 
 7018      if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
 
 
 7058      if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
 
 
 7097    if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
 
 
 7175    if ((((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) && (status == 
HAL_OK))
 
 
 7203  uint32_t itflag   = hfmpi2c->
Instance->ISR;
 
 7204  uint32_t error_code = 0;
 
 7205  uint32_t tickstart = Tickstart;
 
 7221        if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
 
 7223          tmp1 = (uint32_t)(hfmpi2c->
Instance->CR2 & FMPI2C_CR2_STOP);
 
 7224          tmp2 = hfmpi2c->
Mode;
 
 7228              (tmp1 != FMPI2C_CR2_STOP) && \
 
 7232            hfmpi2c->
Instance->CR2 |= FMPI2C_CR2_STOP;
 
 
 7350  uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & FMPI2C_CR2_SADD) | \
 
 7351                             (((uint32_t)Size << FMPI2C_CR2_NBYTES_Pos) & FMPI2C_CR2_NBYTES) | \
 
 7352                             (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U));
 
 7355  MODIFY_REG(hfmpi2c->
Instance->CR2, \
 
 7356             ((FMPI2C_CR2_SADD | FMPI2C_CR2_NBYTES | FMPI2C_CR2_RELOAD | FMPI2C_CR2_AUTOEND | \
 
 7357               (FMPI2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - FMPI2C_CR2_RD_WRN_Pos))) | \
 
 7358               FMPI2C_CR2_START | FMPI2C_CR2_STOP)), tmp);
 
 
 7370  uint32_t tmpisr = 0U;
 
 
 7461  uint32_t tmpisr = 0U;
 
 
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt 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.
 
uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)
Return the DMA error code.
 
HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma)
Returns the DMA state.
 
#define FMPI2C_ADDRESSINGMODE_10BIT
 
#define FMPI2C_ADDRESSINGMODE_7BIT
 
#define HAL_FMPI2C_ERROR_DMA
 
#define HAL_FMPI2C_ERROR_DMA_PARAM
 
#define HAL_FMPI2C_ERROR_ARLO
 
#define HAL_FMPI2C_ERROR_NONE
 
#define HAL_FMPI2C_ERROR_AF
 
#define HAL_FMPI2C_ERROR_INVALID_PARAM
 
#define HAL_FMPI2C_ERROR_SIZE
 
#define HAL_FMPI2C_ERROR_BERR
 
#define HAL_FMPI2C_ERROR_OVR
 
#define HAL_FMPI2C_ERROR_TIMEOUT
 
HAL_StatusTypeDef HAL_FMPI2C_DeInit(FMPI2C_HandleTypeDef *hfmpi2c)
DeInitialize the FMPI2C peripheral.
 
void HAL_FMPI2C_MspDeInit(FMPI2C_HandleTypeDef *hfmpi2c)
DeInitialize the FMPI2C MSP.
 
void HAL_FMPI2C_MspInit(FMPI2C_HandleTypeDef *hfmpi2c)
Initialize the FMPI2C MSP.
 
HAL_StatusTypeDef HAL_FMPI2C_Init(FMPI2C_HandleTypeDef *hfmpi2c)
Initializes the FMPI2C according to the specified parameters in the FMPI2C_InitTypeDef and initialize...
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size)
Receive in slave mode an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in master FMPI2C mode an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Receive(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receive in slave mode an amount of data in blocking mode.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in master FMPI2C mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_IsDeviceReady(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
Checks if target device is ready for communication.
 
HAL_StatusTypeDef HAL_FMPI2C_Mem_Read(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Read an amount of data in blocking mode from a specific memory address.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Transmit in master mode an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Mem_Write_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Write an amount of data in non-blocking mode with DMA to a specific memory address.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in slave/device FMPI2C mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size)
Receive in slave mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_EnableListen_IT(FMPI2C_HandleTypeDef *hfmpi2c)
Enable the Address listen mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Transmit in master mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_Mem_Read_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Reads an amount of data in non-blocking mode with DMA from a specific memory address.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in master FMPI2C mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Receive in master mode an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Mem_Read_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Read an amount of data in non-blocking mode with Interrupt from a specific memory address.
 
HAL_StatusTypeDef HAL_FMPI2C_DisableListen_IT(FMPI2C_HandleTypeDef *hfmpi2c)
Disable the Address listen mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Receive(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receives in master mode an amount of data in blocking mode.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Transmits in master mode an amount of data in blocking mode.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Transmit(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Transmits in slave mode an amount of data in blocking mode.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in slave/device FMPI2C mode an amount of data in non-blocking mode with Interrupt...
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in master FMPI2C mode an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size)
Transmit in slave mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in slave/device FMPI2C mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size)
Transmit in slave mode an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in slave/device FMPI2C mode an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Mem_Write_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Write an amount of data in non-blocking mode with Interrupt to a specific memory address.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Abort_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress)
Abort a master FMPI2C IT or DMA process communication with Interrupt.
 
HAL_StatusTypeDef HAL_FMPI2C_Master_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Receive in master mode an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_FMPI2C_Mem_Write(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Write an amount of data in blocking mode to a specific memory address.
 
HAL_FMPI2C_StateTypeDef HAL_FMPI2C_GetState(const FMPI2C_HandleTypeDef *hfmpi2c)
Return the FMPI2C handle state.
 
uint32_t HAL_FMPI2C_GetError(const FMPI2C_HandleTypeDef *hfmpi2c)
Return the FMPI2C error code.
 
HAL_FMPI2C_ModeTypeDef HAL_FMPI2C_GetMode(const FMPI2C_HandleTypeDef *hfmpi2c)
Returns the FMPI2C Master, Slave, Memory or no mode.
 
#define __HAL_FMPI2C_DISABLE(__HANDLE__)
Disable the specified FMPI2C peripheral.
 
#define __HAL_FMPI2C_GET_FLAG(__HANDLE__, __FLAG__)
 
#define __HAL_FMPI2C_ENABLE(__HANDLE__)
Enable the specified FMPI2C peripheral.
 
#define __HAL_FMPI2C_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the specified FMPI2C interrupt.
 
#define __HAL_FMPI2C_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the specified FMPI2C interrupt.
 
#define __HAL_FMPI2C_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the FMPI2C pending flags which are cleared by writing 1 in a specific bit.
 
#define FMPI2C_FLAG_STOPF
 
void HAL_FMPI2C_ER_IRQHandler(FMPI2C_HandleTypeDef *hfmpi2c)
This function handles FMPI2C error interrupt request.
 
void HAL_FMPI2C_MasterTxCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
Master Tx Transfer completed callback.
 
void HAL_FMPI2C_ListenCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
Listen Complete callback.
 
void HAL_FMPI2C_AbortCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
FMPI2C abort callback.
 
void HAL_FMPI2C_MemTxCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
Memory Tx Transfer completed callback.
 
void HAL_FMPI2C_ErrorCallback(FMPI2C_HandleTypeDef *hfmpi2c)
FMPI2C error callback.
 
void HAL_FMPI2C_EV_IRQHandler(FMPI2C_HandleTypeDef *hfmpi2c)
This function handles FMPI2C event interrupt request.
 
void HAL_FMPI2C_SlaveTxCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
Slave Tx Transfer completed callback.
 
void HAL_FMPI2C_AddrCallback(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
 
void HAL_FMPI2C_MasterRxCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
Master Rx Transfer completed callback.
 
void HAL_FMPI2C_SlaveRxCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
Slave Rx Transfer completed callback.
 
void HAL_FMPI2C_MemRxCpltCallback(FMPI2C_HandleTypeDef *hfmpi2c)
Memory Rx Transfer completed callback.
 
#define FMPI2C_MEMADD_SIZE_8BIT
 
#define FMPI2C_NOSTRETCH_ENABLE
 
#define FMPI2C_XFER_ERROR_IT
 
#define FMPI2C_XFER_LISTEN_IT
 
#define FMPI2C_XFER_RELOAD_IT
 
#define FMPI2C_NO_OPTION_FRAME
 
#define FMPI2C_XFER_RX_IT
 
#define FMPI2C_TIMEOUT_BUSY
 
#define FMPI2C_STATE_MASTER_BUSY_TX
 
#define FMPI2C_XFER_TX_IT
 
#define FMPI2C_XFER_CPLT_IT
 
#define TIMING_CLEAR_MASK
 
#define FMPI2C_STATE_NONE
 
#define FMPI2C_TIMEOUT_STOPF
 
#define FMPI2C_STATE_MASTER_BUSY_RX
 
#define FMPI2C_STATE_SLAVE_BUSY_TX
 
#define FMPI2C_STATE_SLAVE_BUSY_RX
 
static HAL_StatusTypeDef FMPI2C_Master_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags, uint32_t ITSources)
Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA.
 
static HAL_StatusTypeDef FMPI2C_RequestMemoryWrite(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
Master sends target device address followed by internal memory address for write request.
 
static HAL_StatusTypeDef FMPI2C_Mem_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags, uint32_t ITSources)
Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt.
 
static HAL_StatusTypeDef FMPI2C_WaitOnRXNEFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles FMPI2C Communication Timeout for specific usage of RXNE flag.
 
static HAL_StatusTypeDef FMPI2C_Slave_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags, uint32_t ITSources)
Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA.
 
static HAL_StatusTypeDef FMPI2C_Master_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags, uint32_t ITSources)
Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt.
 
static void FMPI2C_ITAddrCplt(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags)
FMPI2C Address complete process callback.
 
static void FMPI2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma)
DMA FMPI2C master transmit process complete callback.
 
static void FMPI2C_Flush_TXDR(FMPI2C_HandleTypeDef *hfmpi2c)
FMPI2C Tx data register flush process.
 
static HAL_StatusTypeDef FMPI2C_IsErrorOccurred(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles errors detection during an FMPI2C Communication.
 
static void FMPI2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma)
DMA FMPI2C slave transmit process complete callback.
 
static void FMPI2C_ConvertOtherXferOptions(FMPI2C_HandleTypeDef *hfmpi2c)
Convert FMPI2Cx OTHER_xxx XferOptions to functional XferOptions.
 
static void FMPI2C_ITMasterSeqCplt(FMPI2C_HandleTypeDef *hfmpi2c)
FMPI2C Master sequential complete process.
 
static void FMPI2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma)
DMA FMPI2C master receive process complete callback.
 
static void FMPI2C_Disable_IRQ(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t InterruptRequest)
Manage the disabling of Interrupts.
 
static HAL_StatusTypeDef FMPI2C_WaitOnSTOPFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles FMPI2C Communication Timeout for specific usage of STOP flag.
 
static void FMPI2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma)
DMA FMPI2C slave receive process complete callback.
 
static void FMPI2C_ITSlaveSeqCplt(FMPI2C_HandleTypeDef *hfmpi2c)
FMPI2C Slave sequential complete process.
 
static HAL_StatusTypeDef FMPI2C_WaitOnTXISFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles FMPI2C Communication Timeout for specific usage of TXIS flag.
 
static void FMPI2C_TreatErrorCallback(FMPI2C_HandleTypeDef *hfmpi2c)
FMPI2C Error callback treatment.
 
static HAL_StatusTypeDef FMPI2C_Slave_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags, uint32_t ITSources)
Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt.
 
static HAL_StatusTypeDef FMPI2C_WaitOnFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart)
This function handles FMPI2C Communication Timeout. It waits until a flag is no longer in the specifi...
 
static void FMPI2C_Enable_IRQ(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t InterruptRequest)
Manage the enabling of Interrupts.
 
static void FMPI2C_ITMasterCplt(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags)
FMPI2C Master complete process.
 
static void FMPI2C_DMAError(DMA_HandleTypeDef *hdma)
DMA FMPI2C communication error callback.
 
static void FMPI2C_DMAAbort(DMA_HandleTypeDef *hdma)
DMA FMPI2C communication abort callback (To be called at end of DMA Abort procedure).
 
static void FMPI2C_ITSlaveCplt(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags)
FMPI2C Slave complete process.
 
static void FMPI2C_TransferConfig(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request)
Handles FMPI2Cx communication when starting transfer or during transfer (TC or TCR flag are set).
 
static void FMPI2C_ITListenCplt(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags)
FMPI2C Listen complete process.
 
static HAL_StatusTypeDef FMPI2C_RequestMemoryRead(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
Master sends target device address followed by internal memory address for read request.
 
static HAL_StatusTypeDef FMPI2C_Mem_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags, uint32_t ITSources)
Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA.
 
static void FMPI2C_ITError(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ErrorCode)
FMPI2C interrupts error process.
 
#define IS_TRANSFER_REQUEST(REQUEST)
 
#define IS_FMPI2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)
 
#define FMPI2C_GET_OWN_ADDRESS1(__HANDLE__)
 
#define IS_FMPI2C_TRANSFER_OPTIONS_REQUEST(REQUEST)
 
#define FMPI2C_CHECK_IT_SOURCE(__CR1__, __IT__)
 
#define FMPI2C_GET_ADDR_MATCH(__HANDLE__)
 
#define IS_FMPI2C_DUAL_ADDRESS(ADDRESS)
 
#define FMPI2C_MEM_ADD_LSB(__ADDRESS__)
 
#define FMPI2C_GENERATE_START(__ADDMODE__, __ADDRESS__)
 
#define FMPI2C_GET_DIR(__HANDLE__)
 
#define IS_FMPI2C_MEMADD_SIZE(SIZE)
 
#define FMPI2C_RESET_CR2(__HANDLE__)
 
#define IS_FMPI2C_OWN_ADDRESS2_MASK(MASK)
 
#define IS_FMPI2C_OWN_ADDRESS1(ADDRESS1)
 
#define FMPI2C_CHECK_FLAG(__ISR__, __FLAG__)
 
#define FMPI2C_MEM_ADD_MSB(__ADDRESS__)
 
#define IS_FMPI2C_OWN_ADDRESS2(ADDRESS2)
 
#define FMPI2C_GET_DMA_REMAIN_DATA(__HANDLE__)
 
#define IS_FMPI2C_NO_STRETCH(STRETCH)
 
#define FMPI2C_GET_STOP_MODE(__HANDLE__)
 
#define FMPI2C_GET_OWN_ADDRESS2(__HANDLE__)
 
#define IS_FMPI2C_ADDRESSING_MODE(MODE)
 
#define IS_FMPI2C_GENERAL_CALL(CALL)
 
#define IS_TRANSFER_MODE(MODE)
 
#define FMPI2C_RELOAD_MODE
 
#define FMPI2C_AUTOEND_MODE
 
#define FMPI2C_SOFTEND_MODE
 
#define FMPI2C_GENERATE_STOP
 
#define FMPI2C_NO_STARTSTOP
 
#define FMPI2C_GENERATE_START_READ
 
#define FMPI2C_GENERATE_START_WRITE
 
#define FMPI2C_DIRECTION_TRANSMIT
 
#define FMPI2C_DIRECTION_RECEIVE
 
#define FMPI2C_FIRST_FRAME
 
#define FMPI2C_OTHER_FRAME
 
#define FMPI2C_FIRST_AND_LAST_FRAME
 
#define FMPI2C_NEXT_FRAME
 
#define FMPI2C_OTHER_AND_LAST_FRAME
 
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
 
@ HAL_FMPI2C_STATE_LISTEN
 
@ HAL_FMPI2C_STATE_BUSY_RX
 
@ HAL_FMPI2C_STATE_BUSY_RX_LISTEN
 
@ HAL_FMPI2C_STATE_BUSY_TX_LISTEN
 
@ HAL_FMPI2C_STATE_BUSY_TX
 
#define assert_param(expr)
 
This file contains all the functions prototypes for the HAL module driver.
 
#define HAL_IS_BIT_SET(REG, BIT)
 
HAL_StatusTypeDef
HAL Status structures definition
 
#define __HAL_UNLOCK(__HANDLE__)
 
#define __HAL_LOCK(__HANDLE__)
 
uint32_t OwnAddress2Masks
 
DMA handle Structure definition.
 
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
 
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
 
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
 
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
 
__IO uint32_t PreviousState
 
__IO uint32_t AddrEventCount
 
FMPI2C_TypeDef * Instance
 
__IO HAL_FMPI2C_ModeTypeDef Mode
 
__IO HAL_FMPI2C_StateTypeDef State
 
__IO uint32_t XferOptions
 
DMA_HandleTypeDef * hdmarx
 
HAL_StatusTypeDef(* XferISR)(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags, uint32_t ITSources)
 
DMA_HandleTypeDef * hdmatx