Answers:
时序必须足够准确,以使它们在协议重新同步之前不会漂移。
UART串行在每个字节上重新同步,一个字节约为10位(8位数据加上开始和停止位置)。我们假设我们的UART以每个位的中间为目标。如果一切都是完美的,并且只有一端不正确,则链接的两端之间可能会有大约5%的差异。
然而:
最重要的是,时钟上的1%误差几乎可以确定。5%的错误几乎可以肯定是一个问题。在这两个数字之间,根据整体情况,可能有问题也可能没有问题。
对于RC振荡器,这是一个很高的要求。假设您的R的公差为1%,而您的C的公差为2%。这样就为RC网络的时间常数提供了3%的容差,并且这是在考虑驱动程序芯片引入的任何错误之前的容差。
因此,最重要的是您应该查看晶体或陶瓷谐振器。
至于USB,我没有经验可以从第一条原则进行分析,但是https://www.silabs.com/community/interface/knowledge-base.entry.html/2004/03/15/usb_clock_tolerance-gVai表示1.5%低速时为0.25%,全速时为0.25%。
RS232型串行系统中通常使用的UART通过根据预定义的波特率基准频率时钟的分频对数据线的中间位进行采样来工作。这样,如果发送的数据和接收器不在相同的频率上,则“采样点”将在连续的位上更靠近位帧的边缘徘徊。
对于普通UART,一个字节的位长为10或11位。1个开始,8个数据和1或2个停止位。在第10位上的一半漂移会转化为0.5 / 10 = 5%的错误。
但是,实际上,您的容忍度小于该容忍度,因为您还需要增加基频周期的延迟,这会增加与起始位前沿的偏移量。基本频率越高,效果越差。
至于为此目的使用555计时器,除非您计划在555电路中进行手动调整,否则我不建议您使用它。
甲USART另一方面使用更复杂的控制方法,该方法尝试将发送接收到的数据同步。这可以通过使用具有嵌入式时钟的数据模式,通过使用的时钟或对接收到的数据沿进行某种形式的锁相来实现。(尽管可以说后者确实是伪同步的。)