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