SMBus is always busy after HAL_SMBUS_Master_Transmit_IT()
I am sure that the function HAL_SMBUS_IsDeviceReady() is not working correctly. I used a different solution to search for devices on the bus. Maybe this will be useful.

// produce Start 
HAL_result = HAL_SMBUS_Master_Transmit_IT(hsmbus, CheckingAddress, &amp;value, 0, SMBUS_FIRST_FRAME);
//HAL_result = HAL_SMBUS_IsDeviceReady(hsmbus, CheckingAddress, 3, 100);
//while(HAL_SMBUS_GetState(hsmbus) != HAL_SMBUS_STATE_READY); // work without this line
if ( HAL_result == HAL_OK)
{
    //device is ready to connect
    .................. 
}
// finish transaction (may be not needed)
HAL_result = HAL_SMBUS_Master_Transmit_IT(hsmbus, CheckingAddress, &amp;value, 0, SMBUS_LAST_FRAME_NO_PEC);