Si vous êtes à moins de 1%, vous devriez être OK.
Supposons que votre UART utilise une horloge de suréchantillonnage 16x, par exemple, vous pouvez la régler sur 1 843 200 Hz pour un suréchantillonnage 16 x 115 200 bits / s. (un suréchantillonnage comme celui-ci est assez courant) Cela permet à l'UART de compter 8 sur-horloges à partir du front descendant du bit de démarrage, afin de pouvoir localiser le centre des cellules de bit à +/- une période de l'horloge, après dont il compte 16 périodes de l'over-clock pour déterminer quand échantillonner les données.
Si vous supposez qu'il peut frapper le centre du bit de départ, afin de continuer à échantillonner les données série dans les cellules binaires correctes sur 8 bits de données, la fréquence d'horloge doit rester entre (8-0,5) / 8 et (8 + 0,5 ) / 8, soit +/- 6,25% du débit binaire prévu. Un overclocking plus élevé se rapproche de la condition idéale de frapper le centre du bit de départ, mais 8x ou 16x est généralement suffisamment proche pour que vous puissiez supposer qu'une différence de 5% fonctionnera.
Cependant, vous ne pouvez pas compter sur l'autre côté étant parfaitement sur la fréquence. Si vous connectez un appareil 4% rapide à un appareil 4% lent, vous aurez un problème. J'ai rencontré au moins un cas où un PC fonctionnait un peu lentement et un appareil un peu rapide, et les deux ne pouvaient communiquer que de manière marginale, bien que le même appareil soit bien avec d'autres PC et que le PC soit bien avec d'autres dispositifs. (O-scoped ceux-ci à environ 112 kbps et 119 kbps) Pour cette raison, il est bon d'essayer d'atteindre la fréquence nominale aussi près que possible. Je n'ai jamais rien vu à moins de 2% du nominal avoir un problème.
La chose habituelle à faire est d'utiliser une fréquence d'horloge maître qui fournit un nombre entier multiple du taux de suréchantillonnage UART prévu multiplié par le débit en bauds. Par exemple, si vous vouliez un processeur fonctionnant à environ 8 MHz, vous pourriez utiliser un oscillateur à 7,3728 MHz, qui peut être divisé par 4 pour obtenir 1,8432 MHz, qui se trouve être exactement 16 fois 115200.