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