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