diff --git a/cores/arduino/SERCOM.cpp b/cores/arduino/SERCOM.cpp
index 71900689ee3bb8d91a438aa567c1bd013c565f75..a0e6c68918917879069b61bbb7d129cc806d653d 100644
--- a/cores/arduino/SERCOM.cpp
+++ b/cores/arduino/SERCOM.cpp
@@ -104,6 +104,8 @@ void SERCOM::enableUART()
 
 void SERCOM::flushUART()
 {
+  // Skip checking transmission completion if data register is empty
+  if(isDataRegisterEmptyUART()) return;
   // Wait for transmission to complete
   while(!sercom->USART.INTFLAG.bit.TXC);
 }