Se você estiver dentro de 1%, você deve estar bem.
Suponha que o seu UART use um relógio de oversampling de 16x, por exemplo, você pode configurá-lo entre 1.843.200 Hz e 16x de 115.500 bps. (uma amostragem excessiva como essa é bastante comum) Isso permite que o UART conte 8 overclocks da borda de queda do bit inicial, para localizar o centro das células do bit dentro de +/- um período do overclock, após que conta 16 períodos do overclock para determinar quando coletar dados.
Se você presumir que ele pode atingir o centro do bit inicial, para manter a amostragem de dados seriais nas células de bits corretas em 8 bits de dados, a frequência do relógio deve permanecer entre (8-0,5) / 8 e (8 + 0,5 ) / 8 ou +/- 6,25% da taxa de bits pretendida. Um overclock mais alto aproxima-se da condição ideal de atingir o centro do bit inicial, mas 8x ou 16x geralmente estão próximos o suficiente para que você possa supor que uma incompatibilidade de 5% funcionará.
No entanto, você não pode contar com o outro lado perfeitamente na frequência. Se você conectar um dispositivo 4% mais rápido a um dispositivo 4% mais lento, terá um problema. Encontrei pelo menos um caso em que um PC estava um pouco lento, e um dispositivo um pouco rápido, e os dois só conseguiam se comunicar marginalmente, embora o mesmo dispositivo funcionasse bem com outros PCs e o PC funcionasse com outros dispositivos. (O escopo é de aproximadamente 112kbps e 119kbps). Por esse motivo, é bom tentar atingir a frequência nominal o mais próximo possível. Eu nunca vi nada dentro de 2% da nominal ter um problema.
O usual é usar uma taxa de clock mestre que forneça um número inteiro múltiplo da taxa de sobre-amostragem UART pretendida vezes a taxa de transmissão. Por exemplo, se você deseja uma CPU rodando a cerca de 8 MHz, use um oscilador de 7,3728 MHz, que pode ser dividido por 4 para obter 1,8432 MHz, que é exatamente 16 vezes 115200.
As menções de 1% @JustJeff não são necessárias. A maioria dos UARTs permite um erro de meio bit no último bit. Na maioria das vezes, um quadro consiste em 1 bit de início, 8 bancos de dados e 1 bit de parada, para um total de 10 bits. Meio bit em 10 bits é de 5% (os 6,25% de JustJeff não levam em consideração o bit inicial e o final).
fonte
JustJeff esqueceu o bit de início, mas Stevenh adicionou o bit de parada. Assumindo o protocolo comum de 8 bits de dados, 1 bit de início e sem bit de paridade (o número de bits de parada não importa), há tempos de 8 1/2 bits desde a borda principal do bit de início até o centro do último bit de dados. Geralmente, você deseja que o receptor experimente esse último bit dentro de 1/4 de tempo. Observe que 1/2 bit é o limite garantido para falhar. Qualquer coisa lá perto se torna irrealizável, pois sempre há algum ruído elétrico e instabilidade.
1/4 dividido por 8 1/2 = 2,94%.
Como JustJeff mencionou, a maioria das implementações de UART realmente mostra os dados recebidos com um relógio 16x assíncrono. Isso adiciona outra incerteza de tempo de 1/16 bits, já que esse é o erro com o qual a borda principal do bit inicial pode ser medida. O tempo de 1/16 bits em 8 1/2 bits é outro 0,74%. Isso sai do orçamento de erro calculado anteriormente. Você acaba com uma diferença de 2,2% permitida no relógio para que o receptor experimente o último bit dentro do tempo de 1/4 de bit do centro.
Como outros já disseram, usar um cristal de 7,3728 MHz é uma prática comum quando é necessária uma taxa de transmissão precisa. Geralmente, você pode executar a CPU perto da sua taxa máxima enquanto atinge a taxa de transmissão UART dentro de um erro de cristal.
fonte
Um ponto ainda não mencionado é que alguns dispositivos esperam transmitir um byte de dados para cada byte de dados que recebem. Se um dispositivo desse tipo alimenta dados continuamente, sua taxa de transmissão é até 0,1% mais lenta que a do dispositivo transmissor e não tem capacidade de enviar bits de parada ligeiramente encolhidos, sua saída ficará um byte atrasado a cada 1000 consecutivos bytes recebidos. Se o dispositivo estiver limitado a 16 bytes de buffer, ele eliminará um byte de dados após passar aproximadamente 16.000 e cairá aproximadamente um byte por mil a partir de então. Vale a pena notar que os chamados modems "1200 baud" realmente operam a uma taxa ligeiramente superior a 1200 bits / segundo (acho que é cerca de 1202) exatamente por esse motivo (de modo que, mesmo que o transmissor seja 0,15% mais rápido do que deveria) estar,
fonte