【技术专辑】返回基础:通用异步接收器/发送器(UART)

这个技术简介解释了广泛的一些低级细节 - 我甚至可以说普遍存在的UART通信接口。

 

相关信息

 

•使用RS-422和RS-485实现方便,稳健的数据传输

 

世界上的电气工程师和电子爱好者中很少有人没有以某种方式与通用异步接收器/发送器(UART)接口进行交互。在一个技术可以很快过时的世界里,我们必须赞扬那些创造了这种简单数字通信方案的人,这种方案已经存在了几十年并且仍然享有极大的知名度。

 

注意:术语“UART”相当模糊。接口的各个方面 - 数据位数,停止位数,逻辑电平,奇偶校验 - 可以适应系统的需要。在本文中,我将重点介绍现代微控制器应用中常见的UART实现。

 

能力和特征

 

您可能知道,基本的UART系统只提供三种信号的稳健,中速,全双工通信:Tx(传输串行数据),Rx(接收串行数据)和地。与SPI和I2C等其他协议相比,不需要时钟信号,因为用户可以为UART硬件提供必要的时序信息。

 

【技术专辑】返回基础:通用异步接收器/发送器(UART)

 

实际上,有一个时钟信号,但它不是从一个通信设备传输到另一个; 相反,接收器和发送器都有内部时钟信号,用于控制如何生成(在Tx侧)和解释(在Rx侧)更改逻辑电平。不出所料,如果发送器和接收器配置为不同的数据传输频率,则UART通信不起作用。此外,内部时钟信号必须1)相对于预期频率足够精确,并且2)随时间和温度足够稳定。

 

关键术语

 

让我们回顾一些术语,在此过程中,我们将介绍更多UART特性:

 

•起始位:单字节UART发送的第一位。它表示数据线正在离开其空闲状态。空闲状态通常为逻辑高,因此起始位为逻辑低。

 

•起始位是开销位; 这意味着它有助于接收器和发射器之间的通信,但不会传输有意义的数据。

 

•停止位:单字节UART传输的最后一位。其逻辑电平与信号的空闲状态相同,即逻辑高电平。这是另一个开销。

 

【技术专辑】返回基础:通用异步接收器/发送器(UART)

 

•波特率:可以传输数据的近似速率(以每秒位数为单位,或bps)。更精确的定义是对应于传输一位数字数据所需的时间(以秒为单位)的频率(以bps为单位)。例如,对于9600波特系统,一位需要1 /(9600 bps)≈104.2μs。系统实际上不能每秒传输9600位有意义的数据,因为开销位需要额外的时间,并且可能需要一个字节传输之间的延迟。

 

【技术专辑】返回基础:通用异步接收器/发送器(UART)

 

•奇偶校验位:错误检测位添加到字节的末尾。有两种类型 - “奇校验”意味着如果数据字节包含偶数个逻辑高位,则奇偶校验位将为逻辑高电平,而“偶校验”意味着如果数据字节则奇偶校验位将为逻辑高电平。包含奇数个逻辑高位。这似乎违反直觉,但其想法是奇偶校验位确保逻辑高位的数量始终为偶数(对于偶校验)或奇数(对于奇校验)。因此,如果您使用偶校验且字节有三个逻辑高位,则奇偶校验位将为逻辑高,以便传输数据中的逻辑高位总数(即字节本身加上校验位) ) 甚至。

 

•通过强制逻辑高位的数量始终为偶数(对于偶校验)或奇数(对于奇校验),奇偶校验位提供粗略的错误检测机制 - 如果在传输过程中某个位被翻转,则该数字逻辑高位的值与选择的奇偶校验模式不匹配。当然,如果两个位被翻转,策略就会崩溃,因此奇偶校验位远非防弹。如果您非常需要无差错通信,我建议使用CRC。

 

同步和采样

 

没有某种时钟机制,标准数字数据毫无意义。下图显示了原因:

 

【技术专辑】返回基础:通用异步接收器/发送器(UART)

 

典型的数据信号只是在逻辑低和逻辑高之间转换的电压。只有当接收器知道何时采样信号时,接收器才能正确地将这些逻辑状态转换为数字数据。这可以使用单独的时钟信号轻松完成 - 例如,发送器在时钟的每个上升沿更新数据信号,然后接收器在每个下降沿采样数据。

 

但是,正如名称“通用异步接收器/发送器”所暗示的那样,UART接口不使用时钟信号来同步Tx和Rx器件。那么接收器如何知道何时采样发射机的数据信号呢?

 

发送器根据其时钟信号生成比特流,然后接收器的目标是使用其内部时钟信号在每个比特周期的中间对输入数据进行采样。在比特周期的中间采样不是必要的,但它是最佳的,因为接近比特周期的开始或结束的采样使得系统对接收器和发射器之间的时钟频率差异不太稳健。

 

接收器序列从起始位的下降沿开始。这是关键同步过程发生的时间。接收器的内部时钟完全独立于发送器的内部时钟 - 换句话说,第一个下降沿可以对应于接收器时钟周期中的任何点:

 

【技术专辑】返回基础:通用异步接收器/发送器(UART)

 

为了确保接收器时钟的有效边沿能够在比特周期的中间附近发生,发送到接收器模块的波特率时钟的频率要高得多(比8或16或甚至32倍)。实际波特率。

 

假设一个比特周期对应于16个接收器时钟周期。在这种情况下,同步和采样可以按如下方式进行:

 

1.接收过程由起始位的下降沿启动。

 

2.接收器等待8个时钟周期,以便建立一个接近比特周期中间的采样点。

 

3.然后,接收器等待16个时钟周期,使其进入第一个数据位周期的中间。

 

4.第一个数据位被采样并存储在接收寄存器中,然后模块在采样第二个数据位之前等待另外16个时钟周期。

 

5.重复此过程直到所有数据位都被采样和存储,然后停止位的上升沿使UART接口返回其空闲状态。

 

【技术专辑】返回基础:通用异步接收器/发送器(UART)

 

结论

 

本文介绍了一些您可能已成功使用多次的通信协议的详细信息。在很少了解信号和硬件的实际行为的情况下实现UART接口是非常可能的,但除了这些知识提供的一般启发之外,还有一点额外的知识 - 当您的UART通信不工作时可能会有所帮助正如所料。

  • 【技术专辑】返回基础:通用异步接收器/发送器(UART)已关闭评论
    A+
发布日期:2019年03月04日  所属分类:参考设计