Se sei entro l'1%, dovresti essere OK.
Supponiamo che il tuo UART utilizzi un clock di sovracampionamento 16x, ad esempio, puoi impostarlo da 1.843.200 Hz a 16x oltre i 115.200 bps. (il sovracampionamento in questo modo è abbastanza comune) Questo consente all'UART di contare 8 over-clock dal fronte di discesa del bit di inizio, in modo da poter localizzare il centro delle celle di bit entro +/- un periodo di over-clock, dopo che conta 16 periodi di over-clock per determinare quando campionare i dati.
Se si assume che possa colpire il centro del bit iniziale, quindi per mantenere il campionamento dei dati seriali nelle celle di bit corrette su 8 bit di dati, la frequenza di clock deve rimanere tra (8-0,5) / 8 e (8 + 0,5 ) / 8 o +/- 6,25% della velocità in bit prevista. L'overclocking più elevato si avvicina alla condizione ideale di colpire il centro del bit di partenza, ma 8x o 16x sono in genere abbastanza vicini da poter supporre che un disadattamento del 5% funzionerà.
Tuttavia, non puoi contare sul fatto che l'altra parte sia perfettamente in frequenza. Se colleghi un dispositivo con una velocità del 4% a un dispositivo con una lente del 4%, avrai un problema. Ho incontrato almeno un caso in cui un PC funzionava un po 'lentamente e un dispositivo un po' veloce, e i due potevano comunicare solo marginalmente, anche se lo stesso dispositivo andava bene con altri PC e il PC andava bene con altri dispositivi. (O-scoped questi a circa 112kbps e 119kbps) Per questo motivo è bene provare a colpire la frequenza nominale il più vicino possibile. Non ho mai visto nulla nel 2% del valore nominale avere un problema.
La solita cosa da fare è utilizzare una frequenza di clock principale che fornisce un numero intero multiplo della frequenza di sovracampionamento UART prevista per la velocità di trasmissione. Ad esempio, se si desidera una CPU in esecuzione a circa 8 MHz, è possibile utilizzare un oscillatore a 7,3728 MHz, che può essere diviso per 4 per ottenere 1,8432 MHz, che risulta esattamente 16 volte 115200.