UART或通用异步接收器 - 发送器是最常用的设备到设备通信协议之一。本文通过遵循标准过程,如何使用UART作为硬件通信协议。

正确配置时,UART可以使用许多不同类型的串行协议,涉及发送和接收串行数据。在串行通信中,使用单行或电线按比特传输数据。在双向通信中,我们使用两根电线成功串行数据传输。根据应用和系统要求,串行通信需要较少的电路和电线,从而降低实现成本。

在本文中,我们将在使用UART时讨论基本原则,重点关注数据包传输,标准框协议和自定义帧协议,这些帧协议在实现时是安全合规性的增值功能,尤其是在代码开发期间。在产品开发期间,本文档还旨在在检查数据表进行实际使用情况时共享一些基本步骤。

在本文结束时,目标是更好地理解和遵守UART标准,以最大限度地提高能力和应用,特别是在开发新产品时。

“通信中的单一最大问题是它发生的错觉。”

-regorge伯纳德肖

通信协议在组织设备之间的通信方面发挥着重要作用。它以不同的方式设计了基于系统要求的方式,这些协议具有在设备之间商定的特定规则来实现成功的沟通。

嵌入式系统,微控制器和计算机主要使用UART作为设备到设备硬件通信协议的形式。在可用的通信协议中,UART仅使用两根线用于其发送和接收端。

尽管是一种广泛使用的硬件通信协议方法,但它没有一直完全优化。在使用微控制器内的UART模块时通常忽略帧协议的正确实现。

根据定义,UART是一种硬件通信协议,使用具有可配置速度的异步串行通信。异步装置没有时钟信号可以将输出比特与进入接收端的发送装置同步。

界面


图1.两个UART直接相互通信。

每个UART设备的两个信号都命名为:

  • 变送器(TX)
  • 接收器(RX)

每个设备的发射机和接收机线的主要目的是发送和接收用于串行通信的串行数据。


图2.具有数据总线的UART。

发送UART连接到控制数据总线,该控制数据总线以并行形式发送数据。由此,现在数据将在传输线(电线)上串联,比特逐位传输到接收UART。反过来,这将串行数据转换为接收设备并行。

UART行用作传输和接收一个数据的通信媒介。注意注意,UART设备具有专用于发送或接收的发送和接收引脚。

对于UART和最串行通信,波特率需要在发送和接收设备上设置相同。波特率是信息转移到通信信道的速率。在串行端口上下文中,SET波特率将用作要传输的每秒最大比特数。

表1总结了我们必须了解UART的了解。

表1. UART摘要

电线 2
速度 9600,19200,38400,57600,115200,230400,460800,921600,1000000,1500000
传输方法 异步
最大数量的大师 1
最大奴隶数 1

UART接口不使用时钟信号来同步发射器和接收器设备;它异步传输数据。代替时钟信号,发送器基于其时钟信号产生比特流,而接收器使用其内部时钟信号以对输入数据进行采样。通过在两个设备上具有相同的波特率来管理同步点。此外可能会影响发送和接收数据处理期间会导致差异的数据的定时。在比特的定时变得太远之前,波特率的允许差异高达10%。

数据传输

在UART中,传输方式以分组的形式。连接发射器和接收器的部分包括创建串行数据包并控制这些物理硬件线。数据包由起始位,数据帧,奇偶校验位和停止位组成。


图3. UART数据包。

开始钻头

当它不发送数据时,UART数据传输线通常在高电压级别保持。要开始数据传输,发送UART将传输线从高到低电平到低电平,对于一个(1)个时钟周期。当接收UART检测到高到低电压转换时,它开始以波特率的频率读取数据帧中的比特。


图4.开始位。

数据帧

数据框包含正在传输的实际数据。如果使用奇偶校验位,则可以是五(5)位长达八(8)位长。如果没有使用奇偶校验位,则数据帧可以是九(9)位长。在大多数情况下,数据首先与最低有效位发送。


图5.数据帧。

平价

奇偶校验描述了数字的均匀性或奇数。奇偶校验位是接收UART判断在传输期间是否已更改的方法。可以通过电磁辐射,不匹配的波特率或长距离数据传输来改变位。

在接收UART读取数据帧之后,它将值为1的位数,并检查总数是否为偶数或奇数。如果奇偶校验位是0(偶数奇偶校验),则数据帧中的1或逻辑高位应总计到偶数。如果奇偶校验位是1(奇数奇偶校验),则数据帧中的1位或逻辑高度应总计到奇数。

当奇偶校验位与数据匹配时,UART知道传输是没有错误的。但是如果奇偶校验位是0,并且总数是奇数,或者奇偶校验位是1,并且总数均匀,UART知道数据帧中的位已经改变。


图6.奇偶校验位。

停止位

为了发出数据包的末端,发送UART将数据传输线从低电压驱动到一个(1)到两个(2)位持续时间的高电压。


图7.停止位。

UART传输的步骤

首先:发送UART从数据总线并行接收数据。


图8.发送UART的数据总线。

第二:发送UART将起始位,奇偶校验位和停止位添加到数据帧。


图9. TX侧的UART数据帧。

第三:整个数据包从起始位串行发起,以从发送UART停止到接收UART的比特。接收UART以预配置的波特率示例数据线。


图10. UART传输。

第四:接收UART丢弃来自数据帧的起始位,奇偶校验位和停止位。


图11. RX侧的UART数据帧。

第五:接收UART将串行数据转换回并行并将其传输到接收端上的数据总线。


图12.接收UART到数据总线。

帧协议

尚未充分使用的UART中可用的一个关键功能是实现帧协议的实现。主要使用和重要性是每个设备上的安全性和保护的附加值。

例如,当两个设备使用相同的UART帧协议时,存在趋势,当连接到同一UART而不检查配置时,该设备将连接到可能导致系统中发生故障的不同引脚。

另一方面,实现这一点可确保安全性,因为需要对与设计帧协议对齐地接收的信息进行解析。每个帧协议专门设计成独特且安全。

在设计帧协议时,设计人员可以将所需的标题和拖车设置为不同的设备,包括CRC。在图13中,两个(2)个字节被设置为标题的一部分。

二:在存储器映射下,检查UART地址。


图13.示例UART帧协议。

基于样本,您可以设置设备唯一的标题,预告片和CRC。

标题1(H1是0xAB)和头部2(H2为0xCD)

标题是唯一标识符,用于确定您是否正在通信

正确的设备。

命令(cmd)选择

命令将取决于旨在在两个设备之间创建通信的命令列表。

数据长度(DL)每个命令

数据长度将基于所选的命令。您可以根据所选的命令最大化数据的长度,因此它可以根据选择而异。在这种情况下,可以调整数据长度。

数据n(不同数据)

数据是要从设备传输的有效载荷。

拖车1(T1是0xE1)和拖车2(T2为0xE2)

拖车是传输结束后添加的数据。就像标题一样,它们可以唯一地识别。

循环冗余检查(CRC公式)

循环冗余校验公式是一个添加的错误检测模式,以检测原始数据的意外变化。传输设备的CRC值必须始终等于接收器端上的CRC计算。

建议通过为每个UART设备实现帧协议来添加安全性。帧协议在发送和接收设备上需要相同的配置。

UART操作

使用任何硬件通信协议时,检查数据表和硬件参考手册是一个先决条件。

以下是以下步骤:

首先:检查设备的数据表界面。


图14.微控制器数据表。


图15.微控制器存储器映射。

第三:检查UART端口的具体细节,如操作模式,数据位长度,奇偶校验位和停止位。数据表中的UART端口详细信息:

UART港口
示例MCU提供全双工UART端口,该端口与PC标准UART完全兼容。 UART端口为其他外围设备或主机提供简化的UART接口,支持全双工,DMA和串行数据的异步传输。 UART端口包括支持五到八个数据位,而不是,偶数或奇数奇偶校验。帧被一个半或两个停止位终止。

第四:检查UART操作细节,包括波特率计算。使用以下示例公式配置波特率。该公式根据微控制器而变化。

UART操作的示例详细信息:

  • 5到8个数据位
  • 1,2或1和½停止位
  • 没有,甚至或奇怪的平价
  • 可编程超自然率4,8,16,32
  • 波特率= PCLK /((M + N / 2048)×2osr + 2 ×div.

在哪里,

osr(超自然率)
UART_LCR2..OSR = 0到3
div(波特率分配器)
UART_DIV = 1到65535
M(Divm Fractional Baud率M)
uart_fbr.divm = 1到3
n(Divm Fractional Baud率m)
UART_FBR.divn = 0到2047

第五:对于波特率,请务必检查要使用的外围时钟(PCLK)。在这个例子中,有一个26 MHz PCLK和16 MHz PCLK可用。请注意,OSR,div,divm和divn每个设备都变化。

表2.基于26 MHz PCLK的波特率示例

波特率 osr. div DIMM. divN.
9600 3 24 3 1078
115200 3 4 1 1563

表3.基于16 MHz PCLK的波特率示例

波特率 osr. div DIMM. divN.
9600 3 17 3 1078
115200 3 2 2 348

第六:下一个部分是检查UART配置的详细寄存器。查看计算波特率(如UART_LCR2,UART_DIV和UART_FBR)中的参数。表4将导致特定的寄存器覆盖。

表4. UART注册说明

名称 描述
UART_DIV 波特率分配器
UART_FIBR. 分数波特率
UART_LCR2. 二线控制

第七:在每个寄存器下,检查详细信息并替换值为波特率计算,然后开始实现UART。

它为什么如此重要?

熟悉UART通信协议在开发强大的质量驱动的产品时是有利的。知道如何仅使用两条线发送数据,以及如何运输全包数据或有效载荷,有助于确保在没有错误的情况下传输和接收数据。由于UART是最常用的硬件通信协议,因此该知识可以在将来的设计中实现设计灵活性。

用例

您可以为许多应用程序使用UART,例如:

  • 调试:在开发期间,早期检测系统错误很重要。添加UART可以通过从系统捕获消息来帮助此方案。
  • 制造功能级跟踪:日志在制造中非常重要。他们通过警告运营商来确定制造业线上发生的事情来确定功能。
  • 客户或客户端更新:软件更新非常重要。拥有完整的软件功能完整的动态硬件对于拥有完整的系统非常重要。
  • 测试/验证:在他们离开制造过程之前验证产品有助于为客户提供最优质的产品。

参考

UART通信的基础知识。“电子集线器,2017年7月。

坎贝尔,斯科特。 “UART通信的基础知识。“ 电路基础知识。牛仔,罗伯特。

返回基础:通用异步接收器/发射机。“ 所有关于电路,2016年12月。

什么是UART协议? UART通信解释说明。“箭。


ericpeňa. 是一位高级固件工程师,以及在模拟设备上使用消费者软件工程组的设计和布局团队的一部分。他于2019年4月加入了菲律宾菲律宾的Adi。他在马尼拉毕业于Manila的Adamson University,并在计算机工程学士学位。 Eric以前在技术推动器设计师工作,作为固件工程师,也是富士通十件解决方案的系统工程师。他可以在[email protected]上到达他。
玛丽恩典legaspi 是一个固件工程师,以及与消费者软件工程集团合作的设计和布局团队的一部分 模拟设备。她于2018年9月在菲律宾加入Adi In Idi。她毕业于Tarlac州立大学,并获得电子工程学士学位。她目前正在菲律宾大学的管理硕士学位。她可以在[email protected]到达。

相关内容:

更嵌入, 订阅嵌入式’S每周电子邮件时事通讯.

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.

发布时间: 2021-05-13 14:18:53

最近发表