254 #ifdef HAL_I2C_MODULE_ENABLED 262 #define TIMING_CLEAR_MASK ((uint32_t)0xF0FFFFFFU) 263 #define I2C_TIMEOUT_ADDR ((uint32_t)10000U) 264 #define I2C_TIMEOUT_BUSY ((uint32_t)25U) 265 #define I2C_TIMEOUT_DIR ((uint32_t)25U) 266 #define I2C_TIMEOUT_RXNE ((uint32_t)25U) 267 #define I2C_TIMEOUT_STOPF ((uint32_t)25U) 268 #define I2C_TIMEOUT_TC ((uint32_t)25U) 269 #define I2C_TIMEOUT_TCR ((uint32_t)25U) 270 #define I2C_TIMEOUT_TXIS ((uint32_t)25U) 271 #define I2C_TIMEOUT_FLAG ((uint32_t)25U) 273 #define MAX_NBYTE_SIZE 255U 274 #define SlaveAddr_SHIFT 7U 275 #define SlaveAddr_MSK 0x06U 278 #define I2C_STATE_MSK ((uint32_t)((HAL_I2C_STATE_BUSY_TX | HAL_I2C_STATE_BUSY_RX) & (~((uint32_t)HAL_I2C_STATE_READY)))) 279 #define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE)) 280 #define I2C_STATE_MASTER_BUSY_TX ((uint32_t)((HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | HAL_I2C_MODE_MASTER)) 281 #define I2C_STATE_MASTER_BUSY_RX ((uint32_t)((HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | HAL_I2C_MODE_MASTER)) 282 #define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)((HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | HAL_I2C_MODE_SLAVE)) 283 #define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)((HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | HAL_I2C_MODE_SLAVE)) 284 #define I2C_STATE_MEM_BUSY_TX ((uint32_t)((HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | HAL_I2C_MODE_MEM)) 285 #define I2C_STATE_MEM_BUSY_RX ((uint32_t)((HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | HAL_I2C_MODE_MEM)) 289 #define I2C_XFER_TX_IT ((uint32_t)0x00000001) 290 #define I2C_XFER_RX_IT ((uint32_t)0x00000002) 291 #define I2C_XFER_LISTEN_IT ((uint32_t)0x00000004) 293 #define I2C_XFER_ERROR_IT ((uint32_t)0x00000011) 294 #define I2C_XFER_CPLT_IT ((uint32_t)0x00000012) 295 #define I2C_XFER_RELOAD_IT ((uint32_t)0x00000012) 301 #define I2C_GET_DMA_REMAIN_DATA(__HANDLE__) ((((__HANDLE__)->State) == HAL_I2C_STATE_BUSY_TX) ? \ 302 ((uint32_t)((__HANDLE__)->hdmatx->Instance->NDTR)) : \ 303 ((uint32_t)((__HANDLE__)->hdmarx->Instance->NDTR))) 329 static HAL_StatusTypeDef I2C_RequestMemoryWrite(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
330 static HAL_StatusTypeDef I2C_RequestMemoryRead(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
353 static void I2C_TransferConfig(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request);
624 uint32_t tickstart = 0;
664 if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
703 if(I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
747 uint32_t tickstart = 0;
787 if(I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
827 if(I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
870 uint32_t tickstart = 0;
874 if((pData ==
NULL ) || (Size == 0))
933 if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
954 if(I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1010 uint32_t tickstart = 0;
1014 if((pData ==
NULL ) || (Size == 0))
1058 if(I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1087 if(I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1141 uint32_t xfermode = 0;
1161 hi2c->
XferISR = I2C_Master_ISR_IT;
1188 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
1209 uint32_t xfermode = 0;
1229 hi2c->
XferISR = I2C_Master_ISR_IT;
1256 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
1293 hi2c->
XferISR = I2C_Slave_ISR_IT;
1305 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
1342 hi2c->
XferISR = I2C_Slave_ISR_IT;
1354 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
1375 uint32_t xfermode = 0;
1395 hi2c->
XferISR = I2C_Master_ISR_DMA;
1435 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
1459 uint32_t xfermode = 0;
1479 hi2c->
XferISR = I2C_Master_ISR_DMA;
1521 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
1554 if((pData ==
NULL) || (Size == 0))
1570 hi2c->
XferISR = I2C_Slave_ISR_DMA;
1595 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
1620 if((pData ==
NULL) || (Size == 0))
1636 hi2c->
XferISR = I2C_Slave_ISR_DMA;
1661 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
1687 uint32_t tickstart = 0;
1694 if((pData ==
NULL) || (Size == 0))
1720 if(I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
1751 if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1792 if(I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1838 uint32_t tickstart = 0;
1845 if((pData ==
NULL) || (Size == 0))
1871 if(I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) !=
HAL_OK)
1936 if(I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) !=
HAL_OK)
1980 uint32_t tickstart = 0;
1981 uint32_t xfermode = 0;
1988 if((pData ==
NULL) || (Size == 0))
2012 hi2c->
XferISR = I2C_Master_ISR_IT;
2026 if(I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2055 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
2078 uint32_t tickstart = 0;
2079 uint32_t xfermode = 0;
2086 if((pData ==
NULL) || (Size == 0))
2110 hi2c->
XferISR = I2C_Master_ISR_IT;
2124 if(I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2153 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
2175 uint32_t tickstart = 0;
2176 uint32_t xfermode = 0;
2183 if((pData ==
NULL) || (Size == 0))
2207 hi2c->
XferISR = I2C_Master_ISR_DMA;
2221 if(I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2264 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2290 uint32_t tickstart = 0;
2291 uint32_t xfermode = 0;
2298 if((pData ==
NULL) || (Size == 0))
2322 hi2c->
XferISR = I2C_Master_ISR_DMA;
2336 if(I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) !=
HAL_OK)
2381 I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2403 uint32_t tickstart = 0;
2405 __IO uint32_t I2C_Trials = 0;
2432 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
2479 if (I2C_Trials++ == Trials)
2493 }
while(I2C_Trials < Trials);
2521 uint32_t xfermode = 0;
2540 hi2c->
XferISR = I2C_Master_ISR_IT;
2562 I2C_TransferConfig(hi2c, DevAddress, hi2c->
XferSize, xfermode, xferrequest);
2570 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
2593 uint32_t xfermode = 0;
2612 hi2c->
XferISR = I2C_Master_ISR_IT;
2634 I2C_TransferConfig(hi2c,DevAddress, hi2c->
XferSize, xfermode, xferrequest);
2642 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
2669 if((pData ==
NULL) || (Size == 0))
2675 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
2692 hi2c->
XferISR = I2C_Slave_ISR_IT;
2708 I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
2735 if((pData ==
NULL) || (Size == 0))
2741 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
2758 hi2c->
XferISR = I2C_Slave_ISR_IT;
2774 I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
2795 hi2c->
XferISR = I2C_Slave_ISR_IT;
2798 I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
2822 tmp = (uint32_t)(hi2c->
State) & I2C_STATE_MSK;
2829 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
2854 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
2855 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
2870 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
2905 hi2c->
XferISR(hi2c, itflags, itsources);
3029 UNUSED(TransferDirection);
3192 uint16_t devaddress = 0;
3208 I2C_Flush_TXDR(hi2c);
3254 I2C_ITMasterSequentialCplt(hi2c);
3271 I2C_ITMasterSequentialCplt(hi2c);
3285 I2C_ITMasterCplt(hi2c, ITFlags);
3307 if(((ITFlags & I2C_FLAG_AF) !=
RESET) && ((ITSources & I2C_IT_NACKI) !=
RESET))
3319 I2C_ITListenCplt(hi2c, ITFlags);
3327 I2C_Flush_TXDR(hi2c);
3331 I2C_ITSlaveSequentialCplt(hi2c);
3349 else if(((ITFlags & I2C_FLAG_RXNE) !=
RESET) && ((ITSources & I2C_IT_RXI) !=
RESET))
3363 I2C_ITSlaveSequentialCplt(hi2c);
3368 I2C_ITAddrCplt(hi2c, ITFlags);
3389 I2C_ITSlaveSequentialCplt(hi2c);
3398 I2C_ITSlaveCplt(hi2c, ITFlags);
3417 uint16_t devaddress = 0;
3418 uint32_t xfermode = 0;
3423 if(((ITFlags & I2C_FLAG_AF) !=
RESET) && ((ITSources & I2C_IT_NACKI) !=
RESET))
3434 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
3437 I2C_Flush_TXDR(hi2c);
3439 else if(((ITFlags & I2C_FLAG_TCR) !=
RESET) && ((ITSources & I2C_IT_TCI) !=
RESET))
3487 I2C_ITMasterCplt(hi2c, ITFlags);
3509 if(((ITFlags & I2C_FLAG_AF) !=
RESET) && ((ITSources & I2C_IT_NACKI) !=
RESET))
3515 if(I2C_GET_DMA_REMAIN_DATA(hi2c) == 0)
3530 else if(((ITFlags & I2C_FLAG_ADDR) !=
RESET) && ((ITSources & I2C_IT_ADDRI) !=
RESET))
3538 I2C_ITSlaveCplt(hi2c, ITFlags);
3558 static HAL_StatusTypeDef I2C_RequestMemoryWrite(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
3563 if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
3588 if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
3605 if(I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR,
RESET, Timeout, Tickstart) !=
HAL_OK)
3624 static HAL_StatusTypeDef I2C_RequestMemoryRead(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
3629 if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
3654 if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) !=
HAL_OK)
3671 if(I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC,
RESET, Timeout, Tickstart) !=
HAL_OK)
3687 uint8_t transferdirection = 0;
3688 uint16_t slaveaddrcode = 0;
3689 uint16_t ownadd1code = 0;
3690 uint16_t ownadd2code = 0;
3703 if((slaveaddrcode & SlaveAddr_MSK) == ((ownadd1code >> SlaveAddr_SHIFT) & SlaveAddr_MSK))
3705 slaveaddrcode = ownadd1code;
3724 slaveaddrcode = ownadd2code;
3727 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
3740 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
3779 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
3795 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
3822 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
3838 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
3867 if((ITFlags & I2C_FLAG_AF) !=
RESET)
3877 I2C_Flush_TXDR(hi2c);
3880 I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT| I2C_XFER_RX_IT);
3955 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT);
3964 I2C_Flush_TXDR(hi2c);
3972 hi2c->
XferSize = I2C_GET_DMA_REMAIN_DATA(hi2c);
3981 if(((ITFlags & I2C_FLAG_RXNE) !=
RESET))
4058 if(((ITFlags & I2C_FLAG_RXNE) !=
RESET))
4074 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
4108 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT);
4113 hi2c->
XferISR = I2C_Slave_ISR_IT;
4118 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
4221 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
4243 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
4275 I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
4297 I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
4378 if((Timeout == 0)||((
HAL_GetTick() - Tickstart ) > Timeout))
4405 if(I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
4413 if((Timeout == 0)||((
HAL_GetTick() - Tickstart) > Timeout))
4442 if(I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
4448 if((Timeout == 0)||((
HAL_GetTick() - Tickstart) > Timeout))
4476 if(I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) !=
HAL_OK)
4501 if((Timeout == 0)||((
HAL_GetTick() - Tickstart) > Timeout))
4534 if((Timeout == 0)||((
HAL_GetTick() - Tickstart) > Timeout))
4553 I2C_Flush_TXDR(hi2c);
4582 static void I2C_TransferConfig(
I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request)
4584 uint32_t tmpreg = 0;
4599 (uint32_t)Mode | (uint32_t)Request);
4614 uint32_t tmpisr = 0;
4616 if((hi2c->
XferISR == I2C_Master_ISR_DMA) || \
4617 (hi2c->
XferISR == I2C_Slave_ISR_DMA))
4619 if((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
4625 if((InterruptRequest & I2C_XFER_ERROR_IT) == I2C_XFER_ERROR_IT)
4631 if((InterruptRequest & I2C_XFER_CPLT_IT) == I2C_XFER_CPLT_IT)
4637 if((InterruptRequest & I2C_XFER_RELOAD_IT) == I2C_XFER_RELOAD_IT)
4645 if((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
4651 if((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
4657 if((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
4663 if((InterruptRequest & I2C_XFER_CPLT_IT) == I2C_XFER_CPLT_IT)
4687 uint32_t tmpisr = 0;
4689 if((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
4701 if((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
4713 if((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
4719 if((InterruptRequest & I2C_XFER_ERROR_IT) == I2C_XFER_ERROR_IT)
4725 if((InterruptRequest & I2C_XFER_CPLT_IT) == I2C_XFER_CPLT_IT)
4731 if((InterruptRequest & I2C_XFER_RELOAD_IT) == I2C_XFER_RELOAD_IT)
HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
#define I2C_DIRECTION_RECEIVE
void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
DMA_HandleTypeDef * hdmatx
DMA_HandleTypeDef * hdmarx
#define HAL_I2C_ERROR_DMA
#define assert_param(expr)
Include module's header file.
#define HAL_I2C_ERROR_ARLO
#define HAL_I2C_ERROR_TIMEOUT
#define IS_I2C_DUAL_ADDRESS(ADDRESS)
#define I2C_MEM_ADD_LSB(__ADDRESS__)
#define IS_I2C_OWN_ADDRESS2(ADDRESS2)
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)
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c)
#define I2C_GET_DIR(__HANDLE__)
#define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the specified I2C interrupt.
HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
#define IS_I2C_ADDRESSING_MODE(MODE)
#define __HAL_UNLOCK(__HANDLE__)
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
#define I2C_GET_OWN_ADDRESS1(__HANDLE__)
HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c)
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
#define I2C_GENERATE_START_READ
HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
#define I2C_ADDRESSINGMODE_10BIT
#define I2C_NO_OPTION_FRAME
HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c)
HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
HAL_StatusTypeDef HAL_I2C_Slave_Sequential_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
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_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)
#define I2C_DIRECTION_TRANSMIT
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_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
#define HAL_I2C_ERROR_OVR
HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_I2C_Master_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
#define HAL_I2C_ERROR_NONE
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
#define __HAL_LOCK(__HANDLE__)
#define I2C_FIRST_AND_LAST_FRAME
__IO uint32_t XferOptions
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
#define __HAL_I2C_DISABLE(__HANDLE__)
Disable the specified I2C peripheral.
#define HAL_I2C_ERROR_ABORT
HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
#define IS_I2C_ALL_INSTANCE(__INSTANCE__)
#define IS_TRANSFER_MODE(MODE)
HAL_StatusTypeDef(* XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)
#define IS_I2C_OWN_ADDRESS2_MASK(MASK)
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
#define IS_I2C_NO_STRETCH(STRETCH)
#define IS_I2C_MEMADD_SIZE(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)
This file contains all the functions prototypes for the HAL module driver.
#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the I2C pending flags which are cleared by writing 1 in a specific bit.
#define IS_I2C_GENERAL_CALL(CALL)
#define I2C_MEM_ADD_MSB(__ADDRESS__)
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)
HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__)
Check whether the specified I2C flag is set or not.
#define I2C_MEMADD_SIZE_8BIT
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
#define I2C_GENERATE_STOP
__IO uint32_t AddrEventCount
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
#define I2C_GET_STOP_MODE(__HANDLE__)
__IO HAL_I2C_ModeTypeDef Mode
HAL_StatusTypeDef HAL_I2C_Slave_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
#define I2C_RESET_CR2(__HANDLE__)
HAL_StatusTypeDef HAL_I2C_Master_Sequential_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
DMA handle Structure definition.
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)
#define I2C_ADDRESSINGMODE_7BIT
#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST)
__IO HAL_I2C_StateTypeDef State
#define I2C_GET_OWN_ADDRESS2(__HANDLE__)
#define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the specified I2C interrupt.
HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)
__IO uint32_t PreviousState
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)
#define IS_TRANSFER_REQUEST(REQUEST)
HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
#define I2C_GENERATE_START(__ADDMODE__, __ADDRESS__)
uint32_t OwnAddress2Masks
HAL_StatusTypeDef
HAL Status structures definition.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
#define I2C_GET_ADDR_MATCH(__HANDLE__)
#define HAL_I2C_ERROR_BERR
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
#define HAL_I2C_ERROR_SIZE
#define IS_I2C_OWN_ADDRESS1(ADDRESS1)
#define __HAL_I2C_ENABLE(__HANDLE__)
Enable the specified I2C peripheral.
HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c)
#define I2C_GENERATE_START_WRITE