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)
394 uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
396 uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
406 uint32_t Timeout, uint32_t Tickstart);
423 static void I2C_TransferConfig(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t
Mode,
499 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
512 if (hi2c->MspInitCallback ==
NULL)
518 hi2c->MspInitCallback(hi2c);
601 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
602 if (hi2c->MspDeInitCallback ==
NULL)
608 hi2c->MspDeInitCallback(hi2c);
657 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
680 pI2C_CallbackTypeDef pCallback)
684 if (pCallback ==
NULL)
687 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
698 case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
699 hi2c->MasterTxCpltCallback = pCallback;
702 case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
703 hi2c->MasterRxCpltCallback = pCallback;
706 case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
707 hi2c->SlaveTxCpltCallback = pCallback;
710 case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
711 hi2c->SlaveRxCpltCallback = pCallback;
714 case HAL_I2C_LISTEN_COMPLETE_CB_ID :
715 hi2c->ListenCpltCallback = pCallback;
718 case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
719 hi2c->MemTxCpltCallback = pCallback;
722 case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
723 hi2c->MemRxCpltCallback = pCallback;
726 case HAL_I2C_ERROR_CB_ID :
727 hi2c->ErrorCallback = pCallback;
730 case HAL_I2C_ABORT_CB_ID :
731 hi2c->AbortCpltCallback = pCallback;
734 case HAL_I2C_MSPINIT_CB_ID :
735 hi2c->MspInitCallback = pCallback;
738 case HAL_I2C_MSPDEINIT_CB_ID :
739 hi2c->MspDeInitCallback = pCallback;
744 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
755 case HAL_I2C_MSPINIT_CB_ID :
756 hi2c->MspInitCallback = pCallback;
759 case HAL_I2C_MSPDEINIT_CB_ID :
760 hi2c->MspDeInitCallback = pCallback;
765 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
775 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
818 case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
822 case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
826 case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
830 case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
834 case HAL_I2C_LISTEN_COMPLETE_CB_ID :
838 case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
842 case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
846 case HAL_I2C_ERROR_CB_ID :
850 case HAL_I2C_ABORT_CB_ID :
854 case HAL_I2C_MSPINIT_CB_ID :
858 case HAL_I2C_MSPDEINIT_CB_ID :
864 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
875 case HAL_I2C_MSPINIT_CB_ID :
879 case HAL_I2C_MSPDEINIT_CB_ID :
885 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
895 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
918 if (pCallback ==
NULL)
921 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
930 hi2c->AddrCallback = pCallback;
935 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
967 hi2c->
ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
1093 hi2c->XferISR =
NULL;
1111 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1147 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1208 hi2c->XferISR =
NULL;
1226 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1263 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1303 if ((pData ==
NULL) || (Size == 0U))
1321 hi2c->XferISR =
NULL;
1363 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1380 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1440 if ((pData ==
NULL) || (Size == 0U))
1458 hi2c->XferISR =
NULL;
1485 if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1515 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1583 hi2c->XferISR = I2C_Master_ISR_IT;
1610 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
1652 hi2c->XferISR = I2C_Master_ISR_IT;
1679 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
1716 hi2c->XferISR = I2C_Slave_ISR_IT;
1728 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
1765 hi2c->XferISR = I2C_Slave_ISR_IT;
1777 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
1821 hi2c->XferISR = I2C_Master_ISR_DMA;
1866 if (dmaxferstatus ==
HAL_OK)
1882 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
1905 hi2c->XferISR = I2C_Master_ISR_IT;
1920 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
1965 hi2c->XferISR = I2C_Master_ISR_DMA;
2010 if (dmaxferstatus ==
HAL_OK)
2026 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2049 hi2c->XferISR = I2C_Master_ISR_IT;
2064 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
2089 if ((pData ==
NULL) || (Size == 0U))
2106 hi2c->XferISR = I2C_Slave_ISR_DMA;
2138 if (dmaxferstatus ==
HAL_OK)
2150 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
2192 if ((pData ==
NULL) || (Size == 0U))
2209 hi2c->XferISR = I2C_Slave_ISR_DMA;
2241 if (dmaxferstatus ==
HAL_OK)
2253 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
2294 uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
2303 if ((pData ==
NULL) || (Size == 0U))
2327 hi2c->XferISR =
NULL;
2330 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
2352 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2390 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2429 uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
2438 if ((pData ==
NULL) || (Size == 0U))
2462 hi2c->XferISR =
NULL;
2465 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
2525 if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
2562 uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
2572 if ((pData ==
NULL) || (Size == 0U))
2597 hi2c->XferISR = I2C_Master_ISR_IT;
2611 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2631 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
2654 uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
2664 if ((pData ==
NULL) || (Size == 0U))
2689 hi2c->XferISR = I2C_Master_ISR_IT;
2703 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2723 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
2745 uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
2756 if ((pData ==
NULL) || (Size == 0U))
2781 hi2c->XferISR = I2C_Master_ISR_DMA;
2795 if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2833 if (dmaxferstatus ==
HAL_OK)
2849 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2890 uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
2901 if ((pData ==
NULL) || (Size == 0U))
2926 hi2c->XferISR = I2C_Master_ISR_DMA;
2940 if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2977 if (dmaxferstatus ==
HAL_OK)
2992 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
3035 __IO uint32_t I2C_Trials = 0UL;
3069 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
3124 if (I2C_Trials == Trials)
3141 }
while (I2C_Trials < Trials);
3173 uint16_t Size, uint32_t XferOptions)
3194 hi2c->XferISR = I2C_Master_ISR_IT;
3217 I2C_ConvertOtherXferOptions(hi2c);
3227 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3235 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
3258 uint16_t Size, uint32_t XferOptions)
3280 hi2c->XferISR = I2C_Master_ISR_DMA;
3303 I2C_ConvertOtherXferOptions(hi2c);
3344 if (dmaxferstatus ==
HAL_OK)
3347 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3359 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
3382 hi2c->XferISR = I2C_Master_ISR_IT;
3397 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
3421 uint16_t Size, uint32_t XferOptions)
3442 hi2c->XferISR = I2C_Master_ISR_IT;
3465 I2C_ConvertOtherXferOptions(hi2c);
3475 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3483 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
3506 uint16_t Size, uint32_t XferOptions)
3528 hi2c->XferISR = I2C_Master_ISR_DMA;
3551 I2C_ConvertOtherXferOptions(hi2c);
3592 if (dmaxferstatus ==
HAL_OK)
3595 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->
XferSize, xfermode, xferrequest);
3607 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
3630 hi2c->XferISR = I2C_Master_ISR_IT;
3645 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
3667 uint32_t XferOptions)
3674 if ((pData ==
NULL) || (Size == 0U))
3681 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
3691 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
3726 hi2c->XferISR = I2C_Slave_ISR_IT;
3742 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
3763 uint32_t XferOptions)
3772 if ((pData ==
NULL) || (Size == 0U))
3782 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
3789 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
3850 hi2c->XferISR = I2C_Slave_ISR_DMA;
3882 if (dmaxferstatus ==
HAL_OK)
3919 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
3943 uint32_t XferOptions)
3950 if ((pData ==
NULL) || (Size == 0U))
3957 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
3967 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
4002 hi2c->XferISR = I2C_Slave_ISR_IT;
4018 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
4039 uint32_t XferOptions)
4048 if ((pData ==
NULL) || (Size == 0U))
4055 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
4065 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
4126 hi2c->XferISR = I2C_Slave_ISR_DMA;
4158 if (dmaxferstatus ==
HAL_OK)
4195 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
4219 hi2c->XferISR = I2C_Slave_ISR_IT;
4222 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
4246 tmp = (uint32_t)(hi2c->
State) & I2C_STATE_MSK;
4250 hi2c->XferISR =
NULL;
4253 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
4281 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
4286 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
4307 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
4340 if (hi2c->XferISR !=
NULL)
4342 hi2c->XferISR(hi2c, itflags, itsources);
4391 I2C_ITError(hi2c, tmperror);
4470 UNUSED(TransferDirection);
4633 uint16_t devaddress;
4634 uint32_t tmpITFlags = ITFlags;
4650 I2C_Flush_TXDR(hi2c);
4707 I2C_ITMasterSeqCplt(hi2c);
4732 I2C_ITMasterSeqCplt(hi2c);
4751 I2C_ITMasterCplt(hi2c, tmpITFlags);
4771 uint32_t tmpITFlags = ITFlags;
4780 I2C_ITSlaveCplt(hi2c, tmpITFlags);
4795 I2C_ITListenCplt(hi2c, tmpITFlags);
4803 I2C_Flush_TXDR(hi2c);
4807 I2C_ITSlaveSeqCplt(hi2c);
4846 (tmpoptions != I2C_NO_OPTION_FRAME))
4849 I2C_ITSlaveSeqCplt(hi2c);
4855 I2C_ITAddrCplt(hi2c, tmpITFlags);
4880 I2C_ITSlaveSeqCplt(hi2c);
4905 uint16_t devaddress;
4922 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
4925 I2C_Flush_TXDR(hi2c);
4978 I2C_ITMasterSeqCplt(hi2c);
5003 I2C_ITMasterSeqCplt(hi2c);
5017 I2C_ITMasterCplt(hi2c, ITFlags);
5041 uint32_t treatdmanack = 0U;
5051 I2C_ITSlaveCplt(hi2c, ITFlags);
5087 if (treatdmanack == 1U)
5093 I2C_ITListenCplt(hi2c, ITFlags);
5101 I2C_Flush_TXDR(hi2c);
5105 I2C_ITSlaveSeqCplt(hi2c);
5123 tmpstate = hi2c->
State;
5153 I2C_ITAddrCplt(hi2c, ITFlags);
5179 uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
5184 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5202 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5233 uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
5238 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5256 if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
5282 uint8_t transferdirection;
5283 uint16_t slaveaddrcode;
5284 uint16_t ownadd1code;
5285 uint16_t ownadd2code;
5301 if ((slaveaddrcode & SlaveAddr_MSK) == ((ownadd1code >> SlaveAddr_SHIFT) & SlaveAddr_MSK))
5303 slaveaddrcode = ownadd1code;
5304 hi2c->AddrEventCount++;
5305 if (hi2c->AddrEventCount == 2U)
5308 hi2c->AddrEventCount = 0U;
5317 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5318 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5326 slaveaddrcode = ownadd2code;
5329 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
5335 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5336 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5346 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
5352 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5353 hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5386 hi2c->XferISR =
NULL;
5389 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
5395 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5396 hi2c->MasterTxCpltCallback(hi2c);
5406 hi2c->XferISR =
NULL;
5409 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5415 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5416 hi2c->MasterRxCpltCallback(hi2c);
5458 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
5464 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5465 hi2c->SlaveTxCpltCallback(hi2c);
5478 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5484 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5485 hi2c->SlaveRxCpltCallback(hi2c);
5505 uint32_t tmpITFlags = ITFlags;
5506 __IO uint32_t tmpreg;
5514 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
5519 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5531 hi2c->XferISR =
NULL;
5552 I2C_Flush_TXDR(hi2c);
5577 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5578 hi2c->MemTxCpltCallback(hi2c);
5591 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5592 hi2c->MasterTxCpltCallback(hi2c);
5612 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5613 hi2c->MemRxCpltCallback(hi2c);
5626 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5627 hi2c->MasterRxCpltCallback(hi2c);
5648 uint32_t tmpITFlags = ITFlags;
5657 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
5662 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
5677 I2C_Flush_TXDR(hi2c);
5732 hi2c->XferISR =
NULL;
5743 I2C_ITListenCplt(hi2c, tmpITFlags);
5746 else if (hi2c->
XferOptions != I2C_NO_OPTION_FRAME)
5749 I2C_ITSlaveSeqCplt(hi2c);
5759 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5760 hi2c->ListenCpltCallback(hi2c);
5775 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5776 hi2c->SlaveRxCpltCallback(hi2c);
5790 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5791 hi2c->SlaveTxCpltCallback(hi2c);
5811 hi2c->XferISR =
NULL;
5833 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
5842 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5843 hi2c->ListenCpltCallback(hi2c);
5858 uint32_t tmppreviousstate;
5874 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT);
5878 hi2c->XferISR = I2C_Slave_ISR_IT;
5883 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
5892 hi2c->XferISR =
NULL;
5897 if ((hi2c->
hdmatx !=
NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \
5898 (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX)))
5923 I2C_TreatErrorCallback(hi2c);
5927 else if ((hi2c->
hdmarx !=
NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \
5928 (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX)))
5953 I2C_TreatErrorCallback(hi2c);
5958 I2C_TreatErrorCallback(hi2c);
5978 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5979 hi2c->AbortCpltCallback(hi2c);
5992 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5993 hi2c->ErrorCallback(hi2c);
6037 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
6064 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
6086 I2C_ITSlaveSeqCplt(hi2c);
6112 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
6139 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
6155 (tmpoptions != I2C_NO_OPTION_FRAME))
6161 I2C_ITSlaveSeqCplt(hi2c);
6178 uint32_t treatdmaerror = 0U;
6228 I2C_TreatErrorCallback(hi2c);
6242 uint32_t Timeout, uint32_t Tickstart)
6249 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6277 if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
6285 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6314 if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
6320 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6348 if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
6384 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6417 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
6438 I2C_Flush_TXDR(hi2c);
6474 static void I2C_TransferConfig(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t
Mode,
6499 uint32_t tmpisr = 0U;
6501 if ((hi2c->XferISR == I2C_Master_ISR_DMA) || \
6502 (hi2c->XferISR == I2C_Slave_ISR_DMA))
6504 if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
6510 if (InterruptRequest == I2C_XFER_ERROR_IT)
6516 if (InterruptRequest == I2C_XFER_CPLT_IT)
6522 if (InterruptRequest == I2C_XFER_RELOAD_IT)
6530 if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
6536 if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
6542 if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
6548 if (InterruptRequest == I2C_XFER_CPLT_IT)
6570 uint32_t tmpisr = 0U;
6572 if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
6584 if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
6596 if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
6602 if (InterruptRequest == I2C_XFER_ERROR_IT)
6608 if (InterruptRequest == I2C_XFER_CPLT_IT)
6614 if (InterruptRequest == I2C_XFER_RELOAD_IT)