Na comunicação serial, a taxa de transmissão significa que precisamos usar a velocidade exata do relógio ou é uma gama de velocidades que podemos usar?
e se for um valor exato, quão exato deve ser? por exemplo, posso usar o 555 como relógio de um circuito de comunicação serial?
serial
clock-speed
baudrate
sonslikefiziks
fonte
fonte
Respostas:
Os tempos devem ser precisos o suficiente para não se separarem antes que o protocolo ressincronize.
A série UART ressincroniza em cada byte e um byte é de cerca de 10 bits (8 bits de dados mais início e parada). Assumimos que nosso UART tem como alvo o meio de cada bit. Se tudo estiver perfeito e apenas uma extremidade estiver imprecisa, isso permitirá uma diferença de aproximadamente 5% entre as duas extremidades do link.
Contudo:
A linha inferior é que 1% de erro no seu relógio é quase certo. 5% de erro é quase certamente um problema. Entre essas duas figuras, pode ou não ser um problema, dependendo da imagem geral.
Essa é uma tarefa difícil para um oscilador RC. Digamos que seu R tenha uma tolerância de 1% e seu C tenha uma tolerância de 2%. Isso fornece uma tolerância de cerca de 3% para a constante de tempo da rede RC e isso é antes de você pensar em quaisquer erros introduzidos pelo seu chip de driver.
Portanto, o ponto principal é que você deve procurar um ressonador de cristal ou cerâmica.
Quanto ao USB, não tenho experiência para analisar desde os primeiros princípios, mas https://www.silabs.com/community/interface/knowledge-base.entry.html/2004/03/15/usb_clock_tolerance-gVai diz 1,5% para baixa velocidade e 0,25% para velocidade máxima.
fonte
Os UARTs normalmente usados em sistemas seriais do tipo RS232 funcionam amostrando a linha de dados em algum ponto intermediário de acordo com uma divisão do relógio de freqüência base da taxa de transmissão predefinida. Como tal, se os dados e o receptor enviados não estiverem na mesma frequência, o "ponto de amostragem" se aproximará da borda do quadro de bits em bits sucessivos.
Com um UART normal, o comprimento de bit para um byte é 10 ou 11 bits. 1 Iniciar, 8 dados e 1 ou 2 bits de parada. Meio desvio no décimo bit se traduz em erro de 0,5 / 10 = 5%.
No entanto, na realidade, sua tolerância é menor do que isso, porque você também precisa adicionar a latência do seu período de frequência base, o que adicionará um deslocamento da borda anterior do bit inicial. Quanto maior a sua frequência base, menos efeito isso tem.
Quanto ao uso de um timer 555 para esse fim, eu não o recomendaria, a menos que você planeje fazer um ajuste manual no circuito 555.
Um USART, por outro lado, usa um método de controle mais complexo que tenta sincronizar a transmissão com os dados recebidos. Isso pode ser feito usando um padrão de dados que possui um relógio incorporado, usando um relógio passado ou por alguma forma de bloqueio de fase nas bordas dos dados recebidos. (Embora sem dúvida o último seja realmente pseudo-síncrono.)
fonte