Wenn Du nur darauf vertraust, das beide gleich schnell getaktet werden, kann es bei längeren Übertragungen schon zu einem (Bit-)Versatz kommen, denn die Verarbeitung zwischen den Bytes kann ja (bei Master und Slave) unterschiedlich sein ! Deswegen gibts bei UART Start- und Stoppbits, um den Empfänger vor jedem Byte zu synchronisieren.

Die Übertragung ist immer Asynchron wenn keine Taktleitung vorhanden ist, egal wie die µCs getaktet werden.
Die Fehlerrate ist natürlich am geringsten wenn beide gleich schnell takten.

Evtl. musst Du noch ein paar Experimente zum herausfinden der optimalen, max., Geschwidigkeit machen, auch um die Verzögerungen zwischen den Bytes anzugleichen.