308 #include "stm32h7xx_hal.h"
319 #ifdef HAL_I2C_MODULE_ENABLED
327 #define TIMING_CLEAR_MASK (0xF0FFFFFFU)
328 #define I2C_TIMEOUT_ADDR (10000U)
329 #define I2C_TIMEOUT_BUSY (25U)
330 #define I2C_TIMEOUT_DIR (25U)
331 #define I2C_TIMEOUT_RXNE (25U)
332 #define I2C_TIMEOUT_STOPF (25U)
333 #define I2C_TIMEOUT_TC (25U)
334 #define I2C_TIMEOUT_TCR (25U)
335 #define I2C_TIMEOUT_TXIS (25U)
336 #define I2C_TIMEOUT_FLAG (25U)
338 #define MAX_NBYTE_SIZE 255U
339 #define SlaveAddr_SHIFT 7U
340 #define SlaveAddr_MSK 0x06U
343 #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))))
344 #define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE))
345 #define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER))
346 #define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER))
347 #define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE))
348 #define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE))
349 #define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MEM))
350 #define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MEM))
354 #define I2C_XFER_TX_IT (uint16_t)(0x0001U)
355 #define I2C_XFER_RX_IT (uint16_t)(0x0002U)
356 #define I2C_XFER_LISTEN_IT (uint16_t)(0x8000U)
358 #define I2C_XFER_ERROR_IT (uint16_t)(0x0010U)
359 #define I2C_XFER_CPLT_IT (uint16_t)(0x0020U)
360 #define I2C_XFER_RELOAD_IT (uint16_t)(0x0040U)
363 #define I2C_NO_OPTION_FRAME (0xFFFF0000U)
393 static HAL_StatusTypeDef I2C_RequestMemoryWrite(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
394 static HAL_StatusTypeDef I2C_RequestMemoryRead(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
420 static void I2C_TransferConfig(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t
Mode, uint32_t Request);
495 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
508 if (hi2c->MspInitCallback ==
NULL)
514 hi2c->MspInitCallback(hi2c);
597 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
598 if (hi2c->MspDeInitCallback ==
NULL)
604 hi2c->MspDeInitCallback(hi2c);
653 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
679 if (pCallback ==
NULL)
682 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
693 case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
694 hi2c->MasterTxCpltCallback = pCallback;
697 case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
698 hi2c->MasterRxCpltCallback = pCallback;
701 case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
702 hi2c->SlaveTxCpltCallback = pCallback;
705 case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
706 hi2c->SlaveRxCpltCallback = pCallback;
709 case HAL_I2C_LISTEN_COMPLETE_CB_ID :
710 hi2c->ListenCpltCallback = pCallback;
713 case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
714 hi2c->MemTxCpltCallback = pCallback;
717 case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
718 hi2c->MemRxCpltCallback = pCallback;
721 case HAL_I2C_ERROR_CB_ID :
722 hi2c->ErrorCallback = pCallback;
725 case HAL_I2C_ABORT_CB_ID :
726 hi2c->AbortCpltCallback = pCallback;
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;
750 case HAL_I2C_MSPINIT_CB_ID :
751 hi2c->MspInitCallback = pCallback;
754 case HAL_I2C_MSPDEINIT_CB_ID :
755 hi2c->MspDeInitCallback = pCallback;
760 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
770 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
813 case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
817 case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
821 case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
825 case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
829 case HAL_I2C_LISTEN_COMPLETE_CB_ID :
833 case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
837 case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
841 case HAL_I2C_ERROR_CB_ID :
845 case HAL_I2C_ABORT_CB_ID :
849 case HAL_I2C_MSPINIT_CB_ID :
853 case HAL_I2C_MSPDEINIT_CB_ID :
859 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
870 case HAL_I2C_MSPINIT_CB_ID :
874 case HAL_I2C_MSPDEINIT_CB_ID :
880 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
890 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
913 if (pCallback ==
NULL)
916 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
925 hi2c->AddrCallback = pCallback;
930 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
962 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
1087 hi2c->XferISR =
NULL;
1105 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1141 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1201 hi2c->XferISR =
NULL;
1219 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1256 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1296 if ((pData ==
NULL) || (Size == 0U))
1314 hi2c->XferISR =
NULL;
1356 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1373 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1433 if ((pData ==
NULL) || (Size == 0U))
1451 hi2c->XferISR =
NULL;
1478 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1508 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1575 hi2c->XferISR = I2C_Master_ISR_IT;
1602 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
1644 hi2c->XferISR = I2C_Master_ISR_IT;
1671 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
1708 hi2c->XferISR = I2C_Slave_ISR_IT;
1720 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
1757 hi2c->XferISR = I2C_Slave_ISR_IT;
1769 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
1812 hi2c->XferISR = I2C_Master_ISR_DMA;
1857 if (dmaxferstatus ==
HAL_OK)
1873 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
1896 hi2c->XferISR = I2C_Master_ISR_IT;
1911 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
1955 hi2c->XferISR = I2C_Master_ISR_DMA;
2000 if (dmaxferstatus ==
HAL_OK)
2016 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2039 hi2c->XferISR = I2C_Master_ISR_IT;
2054 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
2079 if ((pData ==
NULL) || (Size == 0U))
2096 hi2c->XferISR = I2C_Slave_ISR_DMA;
2128 if (dmaxferstatus ==
HAL_OK)
2140 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
2182 if ((pData ==
NULL) || (Size == 0U))
2199 hi2c->XferISR = I2C_Slave_ISR_DMA;
2231 if (dmaxferstatus ==
HAL_OK)
2243 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
2292 if ((pData ==
NULL) || (Size == 0U))
2316 hi2c->XferISR =
NULL;
2319 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
2341 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2380 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2427 if ((pData ==
NULL) || (Size == 0U))
2451 hi2c->XferISR =
NULL;
2454 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
2515 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2561 if ((pData ==
NULL) || (Size == 0U))
2586 hi2c->XferISR = I2C_Master_ISR_IT;
2600 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2620 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
2652 if ((pData ==
NULL) || (Size == 0U))
2677 hi2c->XferISR = I2C_Master_ISR_IT;
2691 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2711 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
2743 if ((pData ==
NULL) || (Size == 0U))
2768 hi2c->XferISR = I2C_Master_ISR_DMA;
2782 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2820 if (dmaxferstatus ==
HAL_OK)
2836 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2887 if ((pData ==
NULL) || (Size == 0U))
2912 hi2c->XferISR = I2C_Master_ISR_DMA;
2926 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2963 if (dmaxferstatus ==
HAL_OK)
2978 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
3021 __IO uint32_t I2C_Trials = 0UL;
3055 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
3110 if (I2C_Trials == Trials)
3128 while (I2C_Trials < Trials);
3180 hi2c->XferISR = I2C_Master_ISR_IT;
3203 I2C_ConvertOtherXferOptions(hi2c);
3213 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3221 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
3265 hi2c->XferISR = I2C_Master_ISR_DMA;
3288 I2C_ConvertOtherXferOptions(hi2c);
3329 if (dmaxferstatus ==
HAL_OK)
3332 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3344 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
3367 hi2c->XferISR = I2C_Master_ISR_IT;
3382 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
3426 hi2c->XferISR = I2C_Master_ISR_IT;
3449 I2C_ConvertOtherXferOptions(hi2c);
3459 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3467 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
3511 hi2c->XferISR = I2C_Master_ISR_DMA;
3534 I2C_ConvertOtherXferOptions(hi2c);
3575 if (dmaxferstatus ==
HAL_OK)
3578 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3590 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
3613 hi2c->XferISR = I2C_Master_ISR_IT;
3628 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
3656 if ((pData ==
NULL) || (Size == 0U))
3663 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
3673 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
3708 hi2c->XferISR = I2C_Slave_ISR_IT;
3724 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
3753 if ((pData ==
NULL) || (Size == 0U))
3763 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
3770 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
3831 hi2c->XferISR = I2C_Slave_ISR_DMA;
3863 if (dmaxferstatus ==
HAL_OK)
3900 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
3930 if ((pData ==
NULL) || (Size == 0U))
3937 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
3947 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
3982 hi2c->XferISR = I2C_Slave_ISR_IT;
3998 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
4027 if ((pData ==
NULL) || (Size == 0U))
4034 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
4044 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
4105 hi2c->XferISR = I2C_Slave_ISR_DMA;
4137 if (dmaxferstatus ==
HAL_OK)
4174 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
4198 hi2c->XferISR = I2C_Slave_ISR_IT;
4201 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
4225 tmp = (uint32_t)(hi2c->
State) & I2C_STATE_MSK;
4229 hi2c->XferISR =
NULL;
4232 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
4260 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
4265 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
4286 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
4319 if (hi2c->XferISR !=
NULL)
4321 hi2c->XferISR(hi2c, itflags, itsources);
4370 I2C_ITError(hi2c, tmperror);
4449 UNUSED(TransferDirection);
4612 uint16_t devaddress;
4613 uint32_t tmpITFlags = ITFlags;
4629 I2C_Flush_TXDR(hi2c);
4686 I2C_ITMasterSeqCplt(hi2c);
4711 I2C_ITMasterSeqCplt(hi2c);
4730 I2C_ITMasterCplt(hi2c, tmpITFlags);
4750 uint32_t tmpITFlags = ITFlags;
4759 I2C_ITSlaveCplt(hi2c, tmpITFlags);
4773 I2C_ITListenCplt(hi2c, tmpITFlags);
4781 I2C_Flush_TXDR(hi2c);
4785 I2C_ITSlaveSeqCplt(hi2c);
4824 (tmpoptions != I2C_NO_OPTION_FRAME))
4827 I2C_ITSlaveSeqCplt(hi2c);
4832 I2C_ITAddrCplt(hi2c, tmpITFlags);
4857 I2C_ITSlaveSeqCplt(hi2c);
4882 uint16_t devaddress;
4899 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
4902 I2C_Flush_TXDR(hi2c);
4955 I2C_ITMasterSeqCplt(hi2c);
4980 I2C_ITMasterSeqCplt(hi2c);
4994 I2C_ITMasterCplt(hi2c, ITFlags);
5018 uint32_t treatdmanack = 0U;
5028 I2C_ITSlaveCplt(hi2c, ITFlags);
5064 if (treatdmanack == 1U)
5069 I2C_ITListenCplt(hi2c, ITFlags);
5077 I2C_Flush_TXDR(hi2c);
5081 I2C_ITSlaveSeqCplt(hi2c);
5099 tmpstate = hi2c->
State;
5129 I2C_ITAddrCplt(hi2c, ITFlags);
5154 static HAL_StatusTypeDef I2C_RequestMemoryWrite(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
5159 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5177 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5207 static HAL_StatusTypeDef I2C_RequestMemoryRead(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
5212 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5230 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5256 uint8_t transferdirection;
5257 uint16_t slaveaddrcode;
5258 uint16_t ownadd1code;
5259 uint16_t ownadd2code;
5275 if ((slaveaddrcode & SlaveAddr_MSK) == ((ownadd1code >> SlaveAddr_SHIFT) & SlaveAddr_MSK))
5277 slaveaddrcode = ownadd1code;
5278 hi2c->AddrEventCount++;
5279 if (hi2c->AddrEventCount == 2U)
5282 hi2c->AddrEventCount = 0U;
5291 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5292 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5300 slaveaddrcode = ownadd2code;
5303 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
5309 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5310 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5320 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
5326 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5327 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5360 hi2c->XferISR =
NULL;
5363 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
5369 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5370 hi2c->MasterTxCpltCallback(hi2c);
5380 hi2c->XferISR =
NULL;
5383 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5389 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5390 hi2c->MasterRxCpltCallback(hi2c);
5432 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
5438 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5439 hi2c->SlaveTxCpltCallback(hi2c);
5452 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5458 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5459 hi2c->SlaveRxCpltCallback(hi2c);
5479 uint32_t tmpITFlags = ITFlags;
5480 __IO uint32_t tmpreg;
5488 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
5493 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5505 hi2c->XferISR =
NULL;
5526 I2C_Flush_TXDR(hi2c);
5551 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5552 hi2c->MemTxCpltCallback(hi2c);
5565 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5566 hi2c->MasterTxCpltCallback(hi2c);
5586 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5587 hi2c->MemRxCpltCallback(hi2c);
5600 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5601 hi2c->MasterRxCpltCallback(hi2c);
5622 uint32_t tmpITFlags = ITFlags;
5631 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
5636 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
5651 I2C_Flush_TXDR(hi2c);
5706 hi2c->XferISR =
NULL;
5717 I2C_ITListenCplt(hi2c, tmpITFlags);
5720 else if (hi2c->
XferOptions != I2C_NO_OPTION_FRAME)
5723 I2C_ITSlaveSeqCplt(hi2c);
5733 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5734 hi2c->ListenCpltCallback(hi2c);
5749 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5750 hi2c->SlaveRxCpltCallback(hi2c);
5764 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5765 hi2c->SlaveTxCpltCallback(hi2c);
5785 hi2c->XferISR =
NULL;
5807 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
5816 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5817 hi2c->ListenCpltCallback(hi2c);
5832 uint32_t tmppreviousstate;
5848 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT);
5852 hi2c->XferISR = I2C_Slave_ISR_IT;
5857 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
5866 hi2c->XferISR =
NULL;
5871 if ((hi2c->
hdmatx !=
NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX)))
5896 I2C_TreatErrorCallback(hi2c);
5900 else if ((hi2c->
hdmarx !=
NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX)))
5925 I2C_TreatErrorCallback(hi2c);
5930 I2C_TreatErrorCallback(hi2c);
5950 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5951 hi2c->AbortCpltCallback(hi2c);
5964 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5965 hi2c->ErrorCallback(hi2c);
6009 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
6036 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
6058 I2C_ITSlaveSeqCplt(hi2c);
6084 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
6111 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
6127 (tmpoptions != I2C_NO_OPTION_FRAME))
6133 I2C_ITSlaveSeqCplt(hi2c);
6150 uint32_t treatdmaerror = 0U;
6200 I2C_TreatErrorCallback(hi2c);
6220 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6248 if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
6256 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6285 if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
6291 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6319 if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
6355 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6388 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6409 I2C_Flush_TXDR(hi2c);
6445 static void I2C_TransferConfig(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t
Mode, uint32_t Request)
6466 uint32_t tmpisr = 0U;
6468 if ((hi2c->XferISR == I2C_Master_ISR_DMA) || \
6469 (hi2c->XferISR == I2C_Slave_ISR_DMA))
6471 if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
6477 if (InterruptRequest == I2C_XFER_ERROR_IT)
6483 if (InterruptRequest == I2C_XFER_CPLT_IT)
6489 if (InterruptRequest == I2C_XFER_RELOAD_IT)
6497 if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
6503 if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
6509 if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
6515 if (InterruptRequest == I2C_XFER_CPLT_IT)
6537 uint32_t tmpisr = 0U;
6539 if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
6551 if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
6563 if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
6569 if (InterruptRequest == I2C_XFER_ERROR_IT)
6575 if (InterruptRequest == I2C_XFER_CPLT_IT)
6581 if (InterruptRequest == I2C_XFER_RELOAD_IT)