312#ifdef HAL_I2C_MODULE_ENABLED
319#define I2C_TIMEOUT_FLAG 35U
320#define I2C_TIMEOUT_BUSY_FLAG 25U
321#define I2C_TIMEOUT_STOP_FLAG 5U
322#define I2C_NO_OPTION_FRAME 0xFFFF0000U
325#define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | (uint32_t)HAL_I2C_STATE_BUSY_RX) & (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY))))
326#define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE))
327#define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER))
328#define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER))
329#define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE))
330#define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE))
341#define I2C_GET_DMA_REMAIN_DATA(__HANDLE__) __HAL_DMA_GET_COUNTER(__HANDLE__)
472#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
485 if (hi2c->MspInitCallback == NULL)
491 hi2c->MspInitCallback(hi2c);
504 hi2c->
Instance->CR1 |= I2C_CR1_SWRST;
505 hi2c->
Instance->CR1 &= ~I2C_CR1_SWRST;
521 MODIFY_REG(hi2c->
Instance->CR2, I2C_CR2_FREQ, freqrange);
576#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
577 if (hi2c->MspDeInitCallback == NULL)
583 hi2c->MspDeInitCallback(hi2c);
632#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
658 if (pCallback == NULL)
661 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
672 case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
673 hi2c->MasterTxCpltCallback = pCallback;
676 case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
677 hi2c->MasterRxCpltCallback = pCallback;
680 case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
681 hi2c->SlaveTxCpltCallback = pCallback;
684 case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
685 hi2c->SlaveRxCpltCallback = pCallback;
688 case HAL_I2C_LISTEN_COMPLETE_CB_ID :
689 hi2c->ListenCpltCallback = pCallback;
692 case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
693 hi2c->MemTxCpltCallback = pCallback;
696 case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
697 hi2c->MemRxCpltCallback = pCallback;
700 case HAL_I2C_ERROR_CB_ID :
701 hi2c->ErrorCallback = pCallback;
704 case HAL_I2C_ABORT_CB_ID :
705 hi2c->AbortCpltCallback = pCallback;
708 case HAL_I2C_MSPINIT_CB_ID :
709 hi2c->MspInitCallback = pCallback;
712 case HAL_I2C_MSPDEINIT_CB_ID :
713 hi2c->MspDeInitCallback = pCallback;
718 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
729 case HAL_I2C_MSPINIT_CB_ID :
730 hi2c->MspInitCallback = pCallback;
733 case HAL_I2C_MSPDEINIT_CB_ID :
734 hi2c->MspDeInitCallback = pCallback;
739 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
749 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
792 case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
796 case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
800 case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
804 case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
808 case HAL_I2C_LISTEN_COMPLETE_CB_ID :
812 case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
816 case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
820 case HAL_I2C_ERROR_CB_ID :
824 case HAL_I2C_ABORT_CB_ID :
828 case HAL_I2C_MSPINIT_CB_ID :
832 case HAL_I2C_MSPDEINIT_CB_ID :
838 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
849 case HAL_I2C_MSPINIT_CB_ID :
853 case HAL_I2C_MSPDEINIT_CB_ID :
859 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
869 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
892 if (pCallback == NULL)
895 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
904 hi2c->AddrCallback = pCallback;
909 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
941 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
1073 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1080 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1109 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1143 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1150 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1194 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1201 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1225 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1230 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1236 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1241 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1244 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1252 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1291 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1323 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1342 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1389 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1435 if ((pData == NULL) || (Size == 0U))
1444 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1451 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1464 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1494 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1533 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1565 if ((pData == NULL) || (Size == (uint16_t)0))
1574 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1581 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1594 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1611 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1644 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1653 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1681 __IO uint32_t count = 0U;
1706 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1713 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1736 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
1758 __IO uint32_t count = 0U;
1783 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1790 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1815 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1818 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
1841 if ((pData == NULL) || (Size == 0U))
1850 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1857 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1870 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1903 if ((pData == NULL) || (Size == 0U))
1912 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1919 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1932 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1964 __IO uint32_t count = 0U;
1990 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1997 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2012 if (hi2c->
hdmatx != NULL)
2044 if (dmaxferstatus ==
HAL_OK)
2057 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
2060 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2063 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
2083 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2086 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
2119 __IO uint32_t count = 0U;
2145 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2152 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2167 if (hi2c->
hdmarx != NULL)
2199 if (dmaxferstatus ==
HAL_OK)
2202 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2205 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
2218 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
2248 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2251 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
2276 if ((pData == NULL) || (Size == 0U))
2285 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2292 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2304 if (hi2c->
hdmatx != NULL)
2336 if (dmaxferstatus ==
HAL_OK)
2339 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2351 hi2c->
Instance->CR2 |= I2C_CR2_DMAEN;
2390 if ((pData == NULL) || (Size == 0U))
2399 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2406 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2418 if (hi2c->
hdmarx != NULL)
2450 if (dmaxferstatus ==
HAL_OK)
2453 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2465 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
2523 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2530 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2556 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2591 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2597 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2646 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2653 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2677 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2682 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2688 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2693 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2696 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2740 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2772 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2791 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2837 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2880 __IO uint32_t count = 0U;
2908 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2915 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2932 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
2965 __IO uint32_t count = 0U;
2993 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3000 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3017 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3020 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
3056 __IO uint32_t count = 0U;
3088 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3095 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3113 if (hi2c->
hdmatx != NULL)
3145 if (dmaxferstatus ==
HAL_OK)
3160 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3184 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
3240 __IO uint32_t count = 0U;
3269 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3276 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3294 if (hi2c->
hdmarx != NULL)
3326 if (dmaxferstatus ==
HAL_OK)
3341 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3355 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3360 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
3376 hi2c->
Instance->CR2 |= I2C_CR2_DMAEN;
3405 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
3436 uint32_t I2C_Trials = 0U;
3452 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3459 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3468 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
3473 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
3491 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
3505 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
3526 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
3541 while (I2C_Trials < Trials);
3570 __IO uint32_t Prev_State = 0x00U;
3571 __IO uint32_t count = 0x00U;
3603 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3610 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3630 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
3665 __IO uint32_t Prev_State = 0x00U;
3666 __IO uint32_t count = 0x00U;
3699 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3706 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3723 if (hi2c->
hdmatx != NULL)
3753 if (dmaxferstatus ==
HAL_OK)
3756 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3763 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
3778 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
3802 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3809 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
3845 __IO uint32_t Prev_State = 0x00U;
3846 __IO uint32_t count = 0U;
3879 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3886 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3906 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3909 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3912 enableIT &= ~I2C_IT_BUF;
3917 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3923 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3931 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
3966 __IO uint32_t Prev_State = 0x00U;
3967 __IO uint32_t count = 0U;
4001 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
4008 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
4011 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
4033 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4036 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
4039 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
4044 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4050 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4055 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
4058 if (hi2c->
hdmarx != NULL)
4087 if (dmaxferstatus ==
HAL_OK)
4094 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
4117 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
4141 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4148 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
4186 if ((pData == NULL) || (Size == 0U))
4195 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
4202 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
4254 if ((pData == NULL) || (Size == 0U))
4269 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
4272 if (hi2c->
hdmarx != NULL)
4274 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
4291 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
4293 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
4296 if (hi2c->
hdmatx != NULL)
4317 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
4324 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
4336 if (hi2c->
hdmatx != NULL)
4366 if (dmaxferstatus ==
HAL_OK)
4369 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4384 hi2c->
Instance->CR2 |= I2C_CR2_DMAEN;
4426 if ((pData == NULL) || (Size == 0U))
4435 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
4442 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
4494 if ((pData == NULL) || (Size == 0U))
4509 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
4512 if (hi2c->
hdmarx != NULL)
4514 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
4531 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
4533 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
4536 if (hi2c->
hdmatx != NULL)
4557 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
4564 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
4576 if (hi2c->
hdmarx != NULL)
4606 if (dmaxferstatus ==
HAL_OK)
4609 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4618 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
4662 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
4669 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4702 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4742 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
4745 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
4785 uint32_t sr1itflags;
4786 uint32_t sr2itflags = 0U;
4787 uint32_t itsources = READ_REG(hi2c->
Instance->CR2);
4795 sr2itflags = READ_REG(hi2c->
Instance->SR2);
4796 sr1itflags = READ_REG(hi2c->
Instance->SR1);
4826 if (READ_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN) != I2C_CR2_DMAEN)
4858 if (READ_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN) != I2C_CR2_DMAEN)
4884 sr1itflags = READ_REG(hi2c->
Instance->SR1);
4888 sr2itflags = READ_REG(hi2c->
Instance->SR2);
4889 sr1itflags = READ_REG(hi2c->
Instance->SR1);
4898 sr2itflags = READ_REG(hi2c->
Instance->SR2);
4958 uint32_t sr1itflags = READ_REG(hi2c->
Instance->SR1);
4959 uint32_t itsources = READ_REG(hi2c->
Instance->CR2);
5005 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5101 UNUSED(TransferDirection);
5278#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5279 hi2c->MasterTxCpltCallback(hi2c);
5290 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5298#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5299 hi2c->MemTxCpltCallback(hi2c);
5307#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5308 hi2c->MasterTxCpltCallback(hi2c);
5383#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5384 hi2c->MasterTxCpltCallback(hi2c);
5395 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5402#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5403 hi2c->MemTxCpltCallback(hi2c);
5412#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5413 hi2c->MasterTxCpltCallback(hi2c);
5469 hi2c->
Instance->CR1 |= I2C_CR1_START;
5491 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5496#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5497 hi2c->MemTxCpltCallback(hi2c);
5525 uint32_t CurrentXferOptions;
5553 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5574#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5575 hi2c->MemRxCpltCallback(hi2c);
5592#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5593 hi2c->MasterRxCpltCallback(hi2c);
5617#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5618 hi2c->ErrorCallback(hi2c);
5668 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5686 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5691 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5696 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5729#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5730 hi2c->MemRxCpltCallback(hi2c);
5746#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5747 hi2c->MasterRxCpltCallback(hi2c);
5804 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
5842 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
5872 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
5884 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5891 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5893 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
5896 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5907 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5917 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5922 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5931 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5937 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5945 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5948 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
5953 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5959 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
5968 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5973 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
6023#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6024 hi2c->SlaveTxCpltCallback(hi2c);
6085#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6086 hi2c->SlaveRxCpltCallback(hi2c);
6125 uint16_t SlaveAddrCode;
6151#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6152 hi2c->AddrCallback(hi2c, TransferDirection, SlaveAddrCode);
6185 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6188 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
6201 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
6229 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
6298#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6299 hi2c->SlaveRxCpltCallback(hi2c);
6313#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6314 hi2c->ListenCpltCallback(hi2c);
6327#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6328 hi2c->SlaveRxCpltCallback(hi2c);
6360 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6367#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6368 hi2c->ListenCpltCallback(hi2c);
6387 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6392#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6393 hi2c->SlaveTxCpltCallback(hi2c);
6416 uint32_t CurrentError;
6421 hi2c->
Instance->CR1 &= ~I2C_CR1_POS;
6443 if (READ_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
6445 hi2c->
Instance->CR2 &= ~I2C_CR2_DMAEN;
6511#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6512 hi2c->AbortCpltCallback(hi2c);
6530#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6531 hi2c->ErrorCallback(hi2c);
6551 CurrentState = hi2c->
State;
6560#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6561 hi2c->ListenCpltCallback(hi2c);
6586 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6591 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6601 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6653 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6659 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6664 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6674 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6710 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6715 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6750 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6755 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6780 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6803 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6830 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6833 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6838 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6863 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6886 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6901 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6907 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6912 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6949 if (hi2c->
hdmatx != NULL)
6953 if (hi2c->
hdmarx != NULL)
6961 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
6972#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6973 hi2c->SlaveTxCpltCallback(hi2c);
6985#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6986 hi2c->SlaveRxCpltCallback(hi2c);
7005 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
7015 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
7019 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
7022 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
7029#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7030 hi2c->ErrorCallback(hi2c);
7044#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7045 hi2c->MemRxCpltCallback(hi2c);
7062#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7063 hi2c->MasterRxCpltCallback(hi2c);
7086 if (hi2c->
hdmatx != NULL)
7090 if (hi2c->
hdmarx != NULL)
7099 hi2c->
Instance->CR1 &= ~I2C_CR1_ACK;
7108#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7109 hi2c->ErrorCallback(hi2c);
7124 __IO uint32_t count = 0U;
7142 while (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP) == I2C_CR1_STOP);
7145 if (hi2c->
hdmatx != NULL)
7149 if (hi2c->
hdmarx != NULL)
7155 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
7160 if (hi2c->
hdmatx != NULL)
7164 if (hi2c->
hdmarx != NULL)
7180#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7181 hi2c->AbortCpltCallback(hi2c);
7194 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
7207#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7208 hi2c->ErrorCallback(hi2c);
7233 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7269 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
7288 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7329 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7370 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7409 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7436 __IO uint32_t count = 0U;
7450 while (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP) == I2C_CR1_STOP);
7486 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 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.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
@ HAL_I2C_STATE_BUSY_TX_LISTEN
@ HAL_I2C_STATE_BUSY_RX_LISTEN
#define HAL_I2C_ERROR_ARLO
#define HAL_I2C_ERROR_NONE
#define HAL_I2C_WRONG_START
#define HAL_I2C_ERROR_OVR
#define HAL_I2C_ERROR_SIZE
#define HAL_I2C_ERROR_BERR
#define HAL_I2C_ERROR_DMA_PARAM
#define HAL_I2C_ERROR_DMA
#define HAL_I2C_ERROR_TIMEOUT
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
DeInitialize the I2C MSP.
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
Initialize the I2C MSP.
HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
Initializes the I2C according to the specified parameters in the I2C_InitTypeDef and initialize the a...
HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)
DeInitialize the I2C peripheral.
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in master I2C mode an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in slave mode an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, 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_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in slave mode an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, 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_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, 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_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, 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_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, 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_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Receive in slave mode an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, 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_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Transmit in slave mode an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in master I2C mode an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, 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_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in slave mode an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, 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_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in master mode an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Transmits in slave mode an amount of data in blocking mode.
HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receive in slave mode an amount of data in blocking mode.
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, 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_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, 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_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, 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_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, 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_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Transmit in slave mode an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)
Abort a master or memory I2C IT or DMA process communication with Interrupt.
HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)
Enable the Address listen mode with Interrupt.
HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Receive in slave mode an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
Checks if target device is ready for communication.
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Sequential receive in slave mode an amount of data in non-blocking mode with DMA.
HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)
Disable the Address listen mode with Interrupt.
HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c)
Returns the I2C Master, Slave, Memory or no mode.
uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c)
Return the I2C error code.
HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c)
Return the I2C handle state.
#define __HAL_I2C_CLEAR_ADDRFLAG(__HANDLE__)
Clears the I2C ADDR pending flag.
#define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__)
#define __HAL_I2C_DISABLE(__HANDLE__)
Disable the specified I2C peripheral.
#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clears the I2C pending flags which are cleared by writing 0 in a specific bit.
#define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable or disable the specified I2C interrupts.
#define __HAL_I2C_ENABLE(__HANDLE__)
Enable the specified I2C peripheral.
#define __HAL_I2C_CLEAR_STOPFLAG(__HANDLE__)
Clears the I2C STOPF pending flag.
#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__)
Checks whether the specified I2C flag is set or not.
void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c)
This function handles I2C event interrupt request.
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
Master Rx Transfer completed callback.
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
Memory Tx Transfer completed callback.
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
I2C abort callback.
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
I2C error callback.
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
Memory Rx Transfer completed callback.
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
Listen Complete callback.
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
Slave Rx Transfer completed callback.
void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
Master Tx Transfer completed callback.
void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)
This function handles I2C error interrupt request.
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
Slave Tx Transfer completed callback.
#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)
#define I2C_CHECK_FLAG(__ISR__, __FLAG__)
#define IS_I2C_GENERAL_CALL(CALL)
#define IS_I2C_OWN_ADDRESS2(ADDRESS2)
#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST)
#define IS_I2C_ADDRESSING_MODE(ADDRESS)
#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__)
#define IS_I2C_MEMADD_SIZE(SIZE)
#define IS_I2C_OWN_ADDRESS1(ADDRESS1)
#define IS_I2C_CLOCK_SPEED(SPEED)
#define IS_I2C_DUAL_ADDRESS(ADDRESS)
#define IS_I2C_DUTY_CYCLE(CYCLE)
#define IS_I2C_NO_STRETCH(STRETCH)
#define I2C_MEMADD_SIZE_8BIT
#define I2C_STATE_SLAVE_BUSY_TX
#define I2C_STATE_MASTER_BUSY_RX
#define I2C_STATE_SLAVE_BUSY_RX
#define I2C_STATE_MASTER_BUSY_TX
#define I2C_TIMEOUT_BUSY_FLAG
#define I2C_TIMEOUT_STOP_FLAG
#define I2C_NO_OPTION_FRAME
static HAL_StatusTypeDef I2C_MasterRequestWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Timeout, uint32_t Tickstart)
static HAL_StatusTypeDef I2C_WaitOnTXEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles I2C Communication Timeout for specific usage of TXE flag.
static void I2C_Master_SB(I2C_HandleTypeDef *hi2c)
Handle SB flag for Master.
static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart)
This function handles I2C Communication Timeout.
static HAL_StatusTypeDef I2C_WaitOnBTFFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles I2C Communication Timeout for specific usage of BTF flag.
static void I2C_DMAXferCplt(DMA_HandleTypeDef *hdma)
DMA I2C process complete callback.
static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, 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 I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, 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 void I2C_ITError(I2C_HandleTypeDef *hi2c)
I2C interrupts error process.
static void I2C_Master_ADDR(I2C_HandleTypeDef *hi2c)
Handle ADDR flag for Master.
static void I2C_SlaveReceive_RXNE(I2C_HandleTypeDef *hi2c)
Handle RXNE flag for Slave.
static void I2C_SlaveTransmit_TXE(I2C_HandleTypeDef *hi2c)
Handle TXE flag for Slave.
static void I2C_MemoryTransmit_TXE_BTF(I2C_HandleTypeDef *hi2c)
Handle TXE and BTF flag for Memory transmitter.
static void I2C_SlaveTransmit_BTF(I2C_HandleTypeDef *hi2c)
Handle BTF flag for Slave transmitter.
static void I2C_Slave_ADDR(I2C_HandleTypeDef *hi2c, uint32_t IT2Flags)
Handle ADD flag for Slave.
static void I2C_SlaveReceive_BTF(I2C_HandleTypeDef *hi2c)
Handle BTF flag for Slave receiver.
static HAL_StatusTypeDef I2C_WaitOnSTOPRequestThroughIT(I2C_HandleTypeDef *hi2c)
This function handles I2C Communication Timeout for specific usage of STOP request through Interrupt.
static void I2C_MasterReceive_BTF(I2C_HandleTypeDef *hi2c)
Handle BTF flag for Master receiver.
static void I2C_Slave_STOPF(I2C_HandleTypeDef *hi2c)
Handle STOPF flag for Slave.
static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles I2C Communication Timeout for specific usage of STOP flag.
static void I2C_MasterTransmit_TXE(I2C_HandleTypeDef *hi2c)
Handle TXE flag for Master.
static void I2C_MasterReceive_RXNE(I2C_HandleTypeDef *hi2c)
Handle RXNE flag for Master.
static void I2C_Flush_DR(I2C_HandleTypeDef *hi2c)
I2C data register flush process.
static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c)
This function handles Acknowledge failed detection during an I2C Communication.
static void I2C_DMAAbort(DMA_HandleTypeDef *hdma)
DMA I2C communication abort callback (To be called at end of DMA Abort procedure).
static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c)
Convert I2Cx OTHER_xxx XferOptions to functional XferOptions.
static void I2C_MasterTransmit_BTF(I2C_HandleTypeDef *hi2c)
Handle BTF flag for Master transmitter.
static HAL_StatusTypeDef I2C_WaitOnMasterAddressFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, uint32_t Timeout, uint32_t Tickstart)
This function handles I2C Communication Timeout for Master addressing phase.
static void I2C_DMAError(DMA_HandleTypeDef *hdma)
DMA I2C communication error callback.
static void I2C_Slave_AF(I2C_HandleTypeDef *hi2c)
static HAL_StatusTypeDef I2C_MasterRequestRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Timeout, uint32_t Tickstart)
Master sends target device address for read request.
static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
This function handles I2C Communication Timeout for specific usage of RXNE flag.
static void I2C_Master_ADD10(I2C_HandleTypeDef *hi2c)
Handle ADD10 flag for Master.
#define I2C_SPEED(__PCLK__, __SPEED__, __DUTYCYCLE__)
#define I2C_10BIT_HEADER_WRITE(__ADDRESS__)
#define I2C_RISE_TIME(__FREQRANGE__, __SPEED__)
#define I2C_MEM_ADD_MSB(__ADDRESS__)
#define I2C_MIN_PCLK_FREQ(__PCLK__, __SPEED__)
#define I2C_10BIT_ADDRESS(__ADDRESS__)
#define I2C_10BIT_HEADER_READ(__ADDRESS__)
#define I2C_GET_DMA_REMAIN_DATA(__HANDLE__)
#define I2C_FREQRANGE(__PCLK__)
#define I2C_MEM_ADD_LSB(__ADDRESS__)
#define I2C_7BIT_ADD_READ(__ADDRESS__)
#define I2C_7BIT_ADD_WRITE(__ADDRESS__)
#define I2C_DIRECTION_TRANSMIT
#define I2C_DIRECTION_RECEIVE
#define I2C_FIRST_AND_NEXT_FRAME
#define I2C_OTHER_AND_LAST_FRAME
#define I2C_FIRST_AND_LAST_FRAME
#define I2C_LAST_FRAME_NO_STOP
#define I2C_ADDRESSINGMODE_10BIT
#define I2C_ADDRESSINGMODE_7BIT
uint32_t HAL_RCC_GetPCLK1Freq(void)
Returns the PCLK1 frequency.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
__IO HAL_I2C_StateTypeDef State
__IO HAL_I2C_ModeTypeDef Mode
DMA_HandleTypeDef * hdmarx
DMA_HandleTypeDef * hdmatx
__IO uint32_t XferOptions
__IO uint32_t PreviousState
DMA handle Structure definition.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
__IO HAL_DMA_StateTypeDef State
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferM1HalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferM1CpltCallback)(struct __DMA_HandleTypeDef *hdma)