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__)
360static HAL_StatusTypeDef I2C_RequestMemoryWrite(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
361static HAL_StatusTypeDef I2C_RequestMemoryRead(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
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;
1064 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) !=
HAL_OK)
1073 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1080 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1093 if (I2C_MasterRequestWrite(hi2c, DevAddress, Timeout, tickstart) !=
HAL_OK)
1104 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1109 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1138 if (I2C_WaitOnBTFFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1143 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1150 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1185 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) !=
HAL_OK)
1194 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
1201 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
1214 if (I2C_MasterRequestRead(hi2c, DevAddress, Timeout, tickstart) !=
HAL_OK)
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);
1266 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1285 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BTF, RESET, Timeout, tickstart) !=
HAL_OK)
1291 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1317 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BTF, RESET, Timeout, tickstart) !=
HAL_OK)
1323 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1336 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BTF, RESET, Timeout, tickstart) !=
HAL_OK)
1342 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
1368 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
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);
1491 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1494 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1524 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_AF, RESET, Timeout, tickstart) !=
HAL_OK)
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);
1608 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1611 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1641 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1644 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1653 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
1681 __IO uint32_t count = 0U;
1686 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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;
1763 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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;
1970 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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;
2125 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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);
2514 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) !=
HAL_OK)
2523 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2530 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2543 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
2551 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2556 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2586 if (I2C_WaitOnBTFFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2591 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2597 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2637 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) !=
HAL_OK)
2646 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
2653 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
2666 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
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);
2715 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2734 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BTF, RESET, Timeout, tickstart) !=
HAL_OK)
2740 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2766 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BTF, RESET, Timeout, tickstart) !=
HAL_OK)
2772 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2785 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BTF, RESET, Timeout, tickstart) !=
HAL_OK)
2791 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
2817 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2837 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
2880 __IO uint32_t count = 0U;
2888 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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;
2973 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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;
3068 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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)
3148 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
3154 UNUSED(dmaxferstatus);
3160 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3184 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
3240 __IO uint32_t count = 0U;
3249 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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)
3329 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
3335 UNUSED(dmaxferstatus);
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;
3396 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
3405 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
3436 uint32_t I2C_Trials = 0U;
3443 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) !=
HAL_OK)
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);
3471 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_SB, RESET, Timeout, tickstart) !=
HAL_OK)
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);
3511 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) !=
HAL_OK)
3526 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
3532 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart) !=
HAL_OK)
3541 while (I2C_Trials < Trials);
3570 __IO uint32_t Prev_State = 0x00U;
3571 __IO uint32_t count = 0x00U;
3582 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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;
3678 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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;
3858 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
3879 if ((hi2c->
Instance->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
3886 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
3903 if (Prev_State == I2C_STATE_MASTER_BUSY_RX)
3906 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
3909 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
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;
3980 count = I2C_TIMEOUT_BUSY_FLAG * (SystemCoreClock / 25U / 1000U);
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);
4030 if (Prev_State == I2C_STATE_MASTER_BUSY_RX)
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);
4696 tmp = (uint32_t)(hi2c->
State) & I2C_STATE_MSK;
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);
4808 I2C_ConvertOtherXferOptions(hi2c);
4810 I2C_Master_SB(hi2c);
4815 I2C_Master_ADD10(hi2c);
4820 I2C_Master_ADDR(hi2c);
4826 if (READ_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN) != I2C_CR2_DMAEN)
4831 I2C_MasterTransmit_TXE(hi2c);
4838 I2C_MasterTransmit_BTF(hi2c);
4844 I2C_MemoryTransmit_TXE_BTF(hi2c);
4858 if (READ_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN) != I2C_CR2_DMAEN)
4863 I2C_MasterReceive_RXNE(hi2c);
4868 I2C_MasterReceive_BTF(hi2c);
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);
4900 I2C_Slave_ADDR(hi2c, sr2itflags);
4905 I2C_Slave_STOPF(hi2c);
4913 I2C_SlaveTransmit_TXE(hi2c);
4918 I2C_SlaveTransmit_BTF(hi2c);
4931 I2C_SlaveReceive_RXNE(hi2c);
4936 I2C_SlaveReceive_BTF(hi2c);
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);
5102 UNUSED(AddrMatchCode);
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);
5327 I2C_MemoryTransmit_TXE_BTF(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;
5550 if (I2C_WaitOnSTOPRequestThroughIT(hi2c) ==
HAL_OK)
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);
5725#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5726 hi2c->MemRxCpltCallback(hi2c);
5742#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5743 hi2c->MasterRxCpltCallback(hi2c);
5800 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
5838 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
5868 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
5880 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5884 if (CurrentXferOptions == I2C_NO_OPTION_FRAME)
5887 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5889 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
5892 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5903 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5908 && ((Prev_State != I2C_STATE_MASTER_BUSY_RX) || (CurrentXferOptions ==
I2C_FIRST_FRAME)))
5913 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5918 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5927 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5933 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
5941 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5944 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_POS);
5949 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5955 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
5964 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
5969 SET_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
6019#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6020 hi2c->SlaveTxCpltCallback(hi2c);
6081#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6082 hi2c->SlaveRxCpltCallback(hi2c);
6121 uint16_t SlaveAddrCode;
6147#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6148 hi2c->AddrCallback(hi2c, TransferDirection, SlaveAddrCode);
6181 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6184 if ((hi2c->
Instance->CR2 & I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
6197 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
6225 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
6294#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6295 hi2c->SlaveRxCpltCallback(hi2c);
6309#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6310 hi2c->ListenCpltCallback(hi2c);
6323#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6324 hi2c->SlaveRxCpltCallback(hi2c);
6356 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6363#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6364 hi2c->ListenCpltCallback(hi2c);
6383 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6388#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6389 hi2c->SlaveTxCpltCallback(hi2c);
6412 uint32_t CurrentError;
6417 hi2c->
Instance->CR1 &= ~I2C_CR1_POS;
6439 if (READ_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN) == I2C_CR2_DMAEN)
6441 hi2c->
Instance->CR2 &= ~I2C_CR2_DMAEN;
6507#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6508 hi2c->AbortCpltCallback(hi2c);
6526#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6527 hi2c->ErrorCallback(hi2c);
6547 CurrentState = hi2c->
State;
6556#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6557 hi2c->ListenCpltCallback(hi2c);
6582 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6587 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6595 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_SB, RESET, Timeout, Tickstart) !=
HAL_OK)
6597 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6615 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADD10, Timeout, Tickstart) !=
HAL_OK)
6625 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADDR, Timeout, Tickstart) !=
HAL_OK)
6649 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6655 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6660 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6668 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_SB, RESET, Timeout, Tickstart) !=
HAL_OK)
6670 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6688 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADD10, Timeout, Tickstart) !=
HAL_OK)
6697 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADDR, Timeout, Tickstart) !=
HAL_OK)
6706 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6709 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_SB, RESET, Timeout, Tickstart) !=
HAL_OK)
6711 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6723 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADDR, Timeout, Tickstart) !=
HAL_OK)
6743static HAL_StatusTypeDef I2C_RequestMemoryWrite(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
6746 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6749 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_SB, RESET, Timeout, Tickstart) !=
HAL_OK)
6751 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6762 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADDR, Timeout, Tickstart) !=
HAL_OK)
6771 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
6776 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6794 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
6799 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6823static HAL_StatusTypeDef I2C_RequestMemoryRead(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
6826 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
6829 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6832 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_SB, RESET, Timeout, Tickstart) !=
HAL_OK)
6834 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6845 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADDR, Timeout, Tickstart) !=
HAL_OK)
6854 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
6859 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6877 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
6882 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6892 if (I2C_WaitOnTXEFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
6897 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
6903 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_START);
6906 if (I2C_WaitOnFlagUntilTimeout(hi2c,
I2C_FLAG_SB, RESET, Timeout, Tickstart) !=
HAL_OK)
6908 if (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_START) == I2C_CR1_START)
6919 if (I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c,
I2C_FLAG_ADDR, Timeout, Tickstart) !=
HAL_OK)
6945 if (hi2c->
hdmatx != NULL)
6949 if (hi2c->
hdmarx != NULL)
6957 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
6968#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6969 hi2c->SlaveTxCpltCallback(hi2c);
6981#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6982 hi2c->SlaveRxCpltCallback(hi2c);
7001 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
7011 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
7015 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_LAST);
7018 CLEAR_BIT(hi2c->
Instance->CR2, I2C_CR2_DMAEN);
7025#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7026 hi2c->ErrorCallback(hi2c);
7040#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7041 hi2c->MemRxCpltCallback(hi2c);
7058#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7059 hi2c->MasterRxCpltCallback(hi2c);
7082 if (hi2c->
hdmatx != NULL)
7086 if (hi2c->
hdmarx != NULL)
7095 hi2c->
Instance->CR1 &= ~I2C_CR1_ACK;
7104#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7105 hi2c->ErrorCallback(hi2c);
7120 __IO uint32_t count = 0U;
7128 count = I2C_TIMEOUT_FLAG * (SystemCoreClock / 25U / 1000U);
7138 while (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP) == I2C_CR1_STOP);
7141 if (hi2c->
hdmatx != NULL)
7145 if (hi2c->
hdmarx != NULL)
7151 CLEAR_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
7156 if (hi2c->
hdmatx != NULL)
7160 if (hi2c->
hdmarx != NULL)
7176#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7177 hi2c->AbortCpltCallback(hi2c);
7190 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_ACK);
7203#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
7204 hi2c->ErrorCallback(hi2c);
7229 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7265 SET_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP);
7284 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7317 if (I2C_IsAcknowledgeFailed(hi2c) !=
HAL_OK)
7325 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7358 if (I2C_IsAcknowledgeFailed(hi2c) !=
HAL_OK)
7366 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7399 if (I2C_IsAcknowledgeFailed(hi2c) !=
HAL_OK)
7405 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
7432 __IO uint32_t count = 0U;
7435 count = I2C_TIMEOUT_STOP_FLAG * (SystemCoreClock / 25U / 1000U);
7446 while (READ_BIT(hi2c->
Instance->CR1, I2C_CR1_STOP) == I2C_CR1_STOP);
7482 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)
HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma)
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
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)
HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
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)
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
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)
HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
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)
HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
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)
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
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)
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)
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)
HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)
HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)
HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c)
uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c)
HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c)
#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)
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
#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_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_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)
#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__)
volatile uint32_t EventCount
volatile uint16_t XferCount
volatile uint32_t Devaddress
volatile HAL_I2C_StateTypeDef State
volatile HAL_I2C_ModeTypeDef Mode
volatile uint32_t MemaddSize
volatile uint32_t XferOptions
DMA_HandleTypeDef * hdmarx
DMA_HandleTypeDef * hdmatx
volatile uint32_t Memaddress
volatile uint32_t ErrorCode
volatile uint32_t PreviousState
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
volatile HAL_DMA_StateTypeDef State
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferM1HalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferM1CpltCallback)(struct __DMA_HandleTypeDef *hdma)