fn clear_bus_blocking(&self) {
        let mut future = ClearBusFuture::new(*self);
        let start = Instant::now();
        while future.poll_completion().is_pending() {
            if start.elapsed() > CLEAR_BUS_TIMEOUT_MS {
                break;
            }
        }
    }
Implements s_i2c_master_clear_bus

If a transaction ended incorrectly for some reason, the slave may drive
SDA indefinitely. This function forces the slave to release the
bus by sending 9 clock pulses.
esp-hal/src/i2c/master/mod.rs