Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode.
2090 uint8_t TransferDirection;
2091 uint16_t SlaveAddrCode;
2096 if (SMBUS_CHECK_FLAG(StatusFlags, SMBUS_FLAG_AF) != RESET)
2105 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF);
2114 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF);
2119 hsmbus->
State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_TX);
2120 hsmbus->
State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_RX);
2126 hsmbus->
ErrorCode |= HAL_SMBUS_ERROR_ACKF;
2132 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1) 2139 else if (SMBUS_CHECK_FLAG(StatusFlags, SMBUS_FLAG_ADDR) != RESET)
2141 TransferDirection = (uint8_t)(SMBUS_GET_DIR(hsmbus));
2142 SlaveAddrCode = (uint16_t)(SMBUS_GET_ADDR_MATCH(hsmbus));
2146 __HAL_SMBUS_DISABLE_IT(hsmbus, SMBUS_IT_ADDRI);
2152 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1) 2153 hsmbus->
AddrCallback(hsmbus, TransferDirection, SlaveAddrCode);
2158 else if ((SMBUS_CHECK_FLAG(StatusFlags, SMBUS_FLAG_RXNE) != RESET) || (SMBUS_CHECK_FLAG(StatusFlags, SMBUS_FLAG_TCR) != RESET))
2160 if ((hsmbus->
State & HAL_SMBUS_STATE_SLAVE_BUSY_RX) == HAL_SMBUS_STATE_SLAVE_BUSY_RX)
2186 hsmbus->
State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_RX);
2192 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1) 2204 hsmbus->
Instance->CR2 &= ~I2C_CR2_NACK;
2207 else if ((hsmbus->
State & HAL_SMBUS_STATE_SLAVE_BUSY_TX) == HAL_SMBUS_STATE_SLAVE_BUSY_TX)
2222 if (SMBUS_GET_PEC_MODE(hsmbus) != 0UL)
2235 else if (SMBUS_CHECK_FLAG(StatusFlags, SMBUS_FLAG_TXIS) != RESET)
2259 hsmbus->
State &= ~((uint32_t)HAL_SMBUS_STATE_SLAVE_BUSY_TX);
2265 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1) 2278 if (SMBUS_CHECK_FLAG(StatusFlags, SMBUS_FLAG_STOPF) != RESET)
2280 if ((hsmbus->
State & HAL_SMBUS_STATE_LISTEN) == HAL_SMBUS_STATE_LISTEN)
2283 if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_RXNE) != RESET)
2305 hsmbus->
Instance->CR2 |= I2C_CR2_NACK;
2308 SMBUS_RESET_CR2(hsmbus);
2311 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_STOPF);
2314 __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_ADDR);
2318 hsmbus->
State = HAL_SMBUS_STATE_READY;
2324 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1) void HAL_SMBUS_SlaveTxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Tx Transfer completed callback.
__IO uint32_t PreviousState
static void SMBUS_TransferConfig(struct __SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request)
Handle SMBUSx communication when starting transfer or during transfer (TC or TCR flag are set)...
void(* ListenCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void HAL_SMBUS_AddrCallback(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
void HAL_SMBUS_ListenCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Listen Complete callback.
void(* SlaveTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* ErrorCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void HAL_SMBUS_SlaveRxCpltCallback(SMBUS_HandleTypeDef *hsmbus)
Slave Rx Transfer completed callback.
static void SMBUS_Disable_IRQ(struct __SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest)
Manage the disabling of Interrupts.
void HAL_SMBUS_ErrorCallback(SMBUS_HandleTypeDef *hsmbus)
SMBUS error callback.
void(* SlaveRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus)
void(* AddrCallback)(struct __SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)
__IO uint32_t XferOptions