Якщо ви знаходитесь в межах 1%, ви повинні бути в порядку.
Припустимо, ваш UART використовує 16-кратний тактовий сигнал, наприклад, ви можете встановити його на 1843 200 Гц до 16-кратного зразка 115 200 біт / с. (пересимплінг, подібний до цього, є досить поширеним) Це дозволяє UART відраховувати 8 надмірних годин від падаючого краю стартового біта, тому він може знаходити центр бітових комірок протягом +/- одного періоду над годинником після що він відлічує 16 періодів понаднормових годин, щоб визначити, коли слід вибирати дані.
Якщо ви припускаєте, що він може потрапити в центр стартового біта, то для того, щоб зберігати вибіркові послідовні дані у правильних бітових комірках через 8 бітів даних, тактова частота повинна залишатися між (8-0,5) / 8 та (8 + 0,5) ) / 8, або +/- 6,25% від запланованої швидкості передачі бітів. Більш високий розгін наближається до ідеальної умови удару по центру стартового біта, але 8x або 16x зазвичай досить близькі, щоб можна було припустити, що 5% невідповідності спрацює.
Однак ви не можете розраховувати, що інша сторона може бути ідеальною за частотою. Якщо ви підключите пристрій, який швидко на 4%, до пристрою, який повільно на 4%, у вас виникне проблема. Я натрапив на принаймні один випадок, коли ПК працював трохи повільно, а пристрій трохи швидше, і два могли лише незначно спілкуватися, хоча той самий пристрій було чудово з іншими ПК, а ПК з іншими пристрої. (О-діапазон їх становить приблизно 112 кбіт / с і 119 кбіт / с). З цієї причини добре намагатися максимально наблизити до номінальної частоти. Я ніколи не бачив нічого в межах 2% від номіналу.
Звичайне, що потрібно зробити, це використовувати головну тактову частоту, яка забезпечує ціле число, кратне передбачуваної частоти перебігу вибірки UART, меншої від швидкості передачі. Наприклад, якщо ви хотіли, щоб процесор працював на частоті близько 8 МГц, ви можете використовувати осцилятор 7,3728 МГц, який можна розділити на 4, щоб отримати 1,8432 МГц, а це рівно в 16 разів 115200.