一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

如何确定异步通信中UARTs所需的时钟源精度

来源:analog 发布时间:2024-01-02

摘要: 了解如何确定异步通信中UARTs所需的时钟源精度。查找时钟精度要求的UART通信从Maxim。

本应用笔记讨论了在UARTs中实现的常用串行异步通信协议的时序要求。本文展示了如何确定异步链路两端的UART时钟源的容差。

背景

RS-232规范可以追溯到1962年,当时它首次由电子工业联盟(EIA)发布。随着时间的推移,该规范发生了变化,纳入了更高的数据速率,并缩小了电信行业协会(TIA)、国际电信联盟(ITU)和国际标准组织(ISO)要求之间的兼容性差距。RS-232规范的当前版本是EIA/TIA-232-F,于1997年10月发布。

RS-232得益于20世纪70年代末的微型集成电路的可用性,它具有以合理成本处理规格的复杂性。这些ic是通用异步接收发送器(UARTs)。现在许多大规模集成电路(LSI)集成电路(包括微控制器)都包含该功能。

通常情况下,UARTs的可用性促使业界以非RS-232方式使用RS-232串行协议。常见的例子是RS-485传输,光隔离传输和使用单端物理层(即0至3.3V而不是±5V或±10V)的传输。本文讨论串行接口的一般时序方面,而不是握手或物理层的应用程序细微差别。因此,应用说明适用于所有广义UART应用。

UART时机

典型的UART帧如图1所示。它由一个起始位、8个数据位和一个停止位组成。在RS-232应用程序中也可以使用其他变体。例如,数据包可以是5、6或7位长,可以有2个停止位,或者可以在数据包和停止位之间插入一个奇偶校验位,用于基本错误检测。图1显示了在UART的发送数据(TXD)或接收数据(RXD)引脚上看到的信令。RS-232总线驱动器反相以及电平移位,因此逻辑1是总线上的负电压,逻辑0是正电压。


图1所示。一个典型的UART数据帧。

当两个uart通信时,发射机和接收机都知道信令速度。接收端不知道何时发送数据包(没有接收端时钟);因此,该协议被称为“异步”。接收器的电路相应地比发射机的复杂。发射器只需要以指定的比特率输出一帧数据。相反,接收端必须识别帧的开始来同步自己,从而确定比特流的最佳数据采样点。

图2显示了UART接收器用于将自身与接收到的帧同步的常用方法。接收UART使用的时钟是数据速率的16倍。一个新的帧被在低激活起始位开始处的下降沿所识别。当信号从高电平停止位或总线空闲状态改变时,就会发生这种情况。接收UART在这个下降沿上重置它的计数器,期望在8个时钟周期后出现中间起始位,并期望此后每个后续位的中点每16个时钟周期出现一次。起始位通常在位时间的中间采样,以检查电平是否仍然很低,并确保检测到的下降沿是起始位,而不是噪声尖峰。另一个改进是对START位采样三次(时钟计数为7、8和9,共16次),而不是只在中间位采样(时钟计数为16次中的8次)。


图2。UART接收帧同步和数据采样点。

计时精度

接收UART时钟必须有多精确才能正确接收数据?由于绝对时钟速率对于准确接收来说是不重要的,因此更好的问题是询问发送和接收UART时钟的差异有多大。首先要理解的是,由于UART接收器将自身同步到每一帧的开始,因此我们只关心在一帧期间的准确数据采样。在帧的停止位之外没有错误的累积,这简化了分析,因为我们只需要考虑最坏情况下的一帧。

什么时候由于收发时钟不匹配而导致定时错误?我们的目标是在中点对每个比特进行采样(图2)。如果我们太早或太晚采样半个比特周期,我们将在比特过渡处采样并出现问题(图3)。


图3。UART接收采样范围。

在现实中,我们不能可靠地在比特过渡点附近采样。造成这种情况的主要原因是有限的(通常是缓慢的)传输上升和下降时间。如果使用过容性电缆,这些时间会变得更慢。长总线产生高衰减,这减少了噪声裕度,使得在位电平稳定时采样变得更加重要。

很难定量地评估一个比特周期内的最坏情况可接受采样范围。EIA/TIA-232-F确实规定了传输的最大转换时间为位周期的4%,但这在192kbps的长时间运行中很难实现。但出于本应用程序说明的目的,让我们定义两个数据路径场景。考虑一个“糟糕”的场景,它只能在中间50%的位时间内可靠地采样(图4)。这可能相当于长时间的电容性RS-232运行。“正常”场景可以在中间75%的位时间内采样(图5)。这相当于设备机箱内的相对良性总线(例如具有缓冲CMOS逻辑电平的米长总线或RS-485差分对)。


图4。UART“恶意链接”在50%的比特时间内可靠采样。


图5。UART“正常链路”在75%的比特时间内可靠采样。

对于图4和图5,我们可以确定,对于恶劣和正常场景,从最优位中心采样点出发,误差预算分别为±25%和±37.5%。这个误差相当于16x UART接收时钟的±4或±6个周期。这个预算中要包括的另一个错误是当检测到START位的下降沿时的同步错误。在检测到起始位后,UART很可能在其16倍时钟的下一个上升沿上启动。由于16x时钟和接收的数据流是异步的,因此START位的下降沿可能恰好发生在16x时钟上升沿之后。下降沿也可以在时钟上升沿之前出现,但没有足够的设置时间来使用它。这意味着UART在同步点具有±1位误差。所以我们的误差预算从±4或±6个时钟周期减少到±3或±5个周期。

我们假定短期时钟误差(本质上是抖动)非常小,因此我们只考虑中期和长期误差。这些错误指向发送UART和接收UART时间不匹配,在一个帧期间是一致的。由于定时是在START位的下降沿同步的,所以最坏情况下的定时误差将出现在最后一个数据采样点,即STOP位1。停止位的最佳采样点为其位中心,计算公式为:

(每比特16个内部时钟周期)×(1个起始位+ 8个数据位+(1/2)个停止位)= (16)×(9.5) = 152个UART接收时钟,在起始位原始下降沿之后。

现在我们可以计算允许误差的百分比。正常情况下,时钟失配误差为±5/152 =±3.3%。对于“恶劣”的场景,它可以是±3/152 =±2%。如前所述,虽然这个问题会出现在链路的接收端,但时钟不匹配实际上是发送和接收uart之间共享的容差问题。因此,假设两个uart都试图以完全相同的比特率(波特率)进行通信,则可以在两个uart之间以任意比例共享允许的错误。

在同时设计链路两端的系统中,利用允许误差预算是有帮助的。这部分是因为双方的容忍度是已知的,部分是因为可以进行权衡和节省成本。一般来说,标准的低成本陶瓷谐振器精度为±0.5%,温度和寿命漂移为±0.5%,可用于链路两端的时钟源。这符合前面讨论的2%的“糟糕”情况。如果系统使用带有标准100ppm晶体振荡器的UART时钟源的主控制器(通常是微控制器或PC),则链路误差可以减少大约一半。小心使用为其内部uart合成波特频率的微控制器。根据微控制器时钟的选择,波特率可能不准确。如果可以确定错误,则可以很容易地将其包含在链路错误预算中。

停止位被采样可能看起来很奇怪,但事实确实如此。如果停止位被检测为低电平而不是预期的高电平,UARTs通常报告一个帧错误。



声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: