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");
 }