diff --git a/cpu/samd21/periph/i2c.c b/cpu/samd21/periph/i2c.c index a18de8f1179eb9d1c3be06ea2129c1ba15bcb52a..037dbf81a42cd351b3edc722113e1e35b61c2dff 100644 --- a/cpu/samd21/periph/i2c.c +++ b/cpu/samd21/periph/i2c.c @@ -489,6 +489,8 @@ static inline void _stop(SercomI2cm *dev) while(dev->SYNCBUSY.reg & SERCOM_I2CM_SYNCBUSY_MASK) {} /* Stop command */ dev->CTRLB.reg |= SERCOM_I2CM_CTRLB_CMD(3); + /* Wait for bus to be idle again */ + while(dev->STATUS.reg & SERCOM_I2CM_STATUS_BUSSTATE(1)) {} DEBUG("Stop sent\n"); }