diff --git a/cpu/sam0_common/periph/uart.c b/cpu/sam0_common/periph/uart.c
index ee3fb5cddd13b6a8e4aaa8273a0aca22596be08f..81997898286864d9fdd363ed60509925d545c967 100644
--- a/cpu/sam0_common/periph/uart.c
+++ b/cpu/sam0_common/periph/uart.c
@@ -121,8 +121,8 @@ void uart_write(uart_t uart, const uint8_t *data, size_t len)
     for (size_t i = 0; i < len; i++) {
         while (!(dev(uart)->INTFLAG.reg & SERCOM_USART_INTFLAG_DRE)) {}
         dev(uart)->DATA.reg = data[i];
-        while (dev(uart)->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) {}
     }
+    while (!(dev(uart)->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC)) {}
 }
 
 void uart_poweron(uart_t uart)