0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UART:了解通用异步接收器/发射器的硬件通信协议

星星科技指导员 来源:ADI 作者:Eric Peňa and Mary G 2022-12-16 15:42 次阅读

作者:Eric Peňa and Mary Grace Legaspi

UART或通用异步接收器-发射器是最常用的设备到设备通信协议之一。本文介绍如何按照标准过程将 UART 用作硬件通信协议。

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

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

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

“沟通中最大的一个问题是它已经发生的错觉。
——萧伯纳

通信协议在组织设备之间的通信方面起着重要作用。它根据系统要求以不同的方式设计,并且这些协议具有设备之间商定的特定规则以实现成功的通信。

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

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

根据定义,UART是一种硬件通信协议,它使用具有可配置速度的异步串行通信。异步意味着没有时钟信号来同步从发送设备到接收端的输出位。

接口

335962-fig-01.svg?h=270&hash=B065CFBC64504A18E932D2B8A4FA62EF&imgver=1

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

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

发射器(发射)

接收器(接收)

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

335962-fig-02.svg?h=270&hash=822F6D4489C5A7B5EA8209D4139D5955&imgver=1

图2.带数据总线的UART。

发送UART连接到以并行形式发送数据的控制数据总线。由此,数据现在将在传输线(线)上串行地一点一点地传输到接收UART。反过来,这将把串行数据转换为接收设备的并行数据。

UART线路用作向另一个数据发送和接收数据的通信介质。请注意,UART设备具有专用于发送或接收的发送和接收引脚。

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

表1总结了我们必须了解的有关UART的知识。

电线 2
速度 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1000000, 1500000
传输方法 异步
最大母版数量 1
最大从属数量 1

UART接口不使用时钟信号来同步发射器和接收器设备;它异步传输数据。发射器不是时钟信号,而是基于其时钟信号生成比特流,而接收器则使用其内部时钟信号对传入数据进行采样。通过在两个设备上具有相同的波特率来管理同步点。否则可能会影响发送和接收数据的时间,从而导致数据处理过程中出现差异。波特率的允许差异高达10%,在位的时序偏离太远之前。

数据传输

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

335962-fig-03.svg?h=270&hash=1CB514C169E8D354B2D74F94776ADF96&imgver=2

图3.UART 数据包。

起始位

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

pYYBAGOcIW-AOJXmAAAuynpVHXA321.jpg?h=270&hash=B99B0DFBC02B1141BEE6EACF6C88380D&imgver=1

图4.起始位。

数据框

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

pYYBAGOcIXCASytAAAAw1bAxxJE290.jpg?h=270&hash=EADAED6D03BE96EB6080B8E052563847&imgver=1

图5.数据框。

平价

奇偶校验描述了一个数字的偶数或奇数。奇偶校验位是接收UART判断传输过程中是否有任何数据更改的一种方式。位可以通过电磁辐射、不匹配的波特率或长距离数据传输来改变。

接收UART读取数据帧后,计算值为1的位数,并检查总数是偶数还是奇数。如果奇偶校验位为 0(偶数奇偶校验),则数据帧中的 1 或逻辑高位的总和应为偶数。如果奇偶校验位为 1(奇偶校验),则数据框中的 1 位或逻辑高电平之和应为奇数。

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

pYYBAGOcIXGAM4SMAAAyqJWwPNE525.jpg?h=270&hash=F48BD4EF4118E5700C1B0D3685E641DF&imgver=1

图6.奇偶校验位。

停止位

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

poYBAGOcIXKABTIjAAAxHbQJSjc467.jpg?h=270&hash=EC67F1307838CD967CEEE21BC59DCF77&imgver=1

图7.停止位。

UART传输的步骤

第一:发送UART从数据总线并行接收数据。

335962-fig-08.svg?h=270&hash=AE1B03A0ECF42204722E9B12E71E3B5F&imgver=1

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

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

335962-fig-09.svg?h=270&hash=8A06FEFF66A90D6C7A06B46CCF25CD93&imgver=1

图9.Tx 侧的 UART 数据帧。

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

335962-fig-10.svg?h=270&hash=04C8F78353D058A8B950BF323132CC0B&imgver=1

图 10.UART传输。

第四:接收UART丢弃数据框中的起始位、奇偶校验位和停止位。

335962-fig-11.svg?h=270&hash=B4EDA2D982611DD36FF1F969D4E527C1&imgver=1

图 11.接收端的 UART 数据框。

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

335962-fig-12.svg?h=270&hash=BB9680F74E40C33B4E7FBD0D1F4EC1E9&imgver=1

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

帧协议

UART中可用但尚未完全使用的一个关键功能是帧协议的实现。这样做的主要用途和重要性是为每个设备的安全性和保护增加值。

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

另一方面,实现这一点可确保安全性,因为需要根据设计框架协议解析收到的信息。每个帧协议都经过专门设计,具有唯一性和安全性。

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

第二:在内存映射下,检查UART地址。

pYYBAGOcIXSAdEl1AAA9QIKxEpc137.jpg?h=270&hash=46B34F9D8C7489357286DDB747D812F7&imgver=1

图 13.示例 UART 帧协议。

根据示例,可以设置设备唯一的标头、尾部和 CRC。

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

标头是确定您是否与正确的设备通信的唯一标识符。

命令 (CMD) 选择

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

每个命令的数据长度 (DL)

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

数据 n(可变数据)

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

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

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

循环冗余校验(CRC公式)

循环冗余检查公式是一种附加的错误检测模式,用于检测对原始数据的意外更改。发射设备的CRC值必须始终等于接收端的CRC计算。

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

UART操作

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

以下是要遵循的步骤:

首先:检查器件的数据手册接口。

poYBAGOcIXeAWSamAAFGUDzQ_I4350.jpg?h=270&hash=51B6ED0F48C19EF1F96CEF6632FBBD71&imgver=1

图 15.微控制器内存图。

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

示例MCU提供全双工UART端口,该端口与PC标准UART完全兼容。UART 端口为其他外设或主机提供简化的 UART 接口,支持串行数据的全双工、DMA 和异步传输。UART 端口包括对 5 到 8 个数据位的支持,以及无奇偶校验、偶数奇偶校验或奇偶校验。帧终止一个半或两个停止位。

第四:检查UART操作细节,包括波特率计算。波特率使用以下示例公式进行配置。此公式因微控制器而异。

UART 操作的示例详细信息:

5 至 8 个数据位

1、2 或 1 和 1/2 停止位

无,偶数或奇偶校验

编程过采样率 4、8、16、32

波特率 = PCLK/((M + N/2048) × 2OSR + 2×

哪里

OSR(过采样率)

UART_LCR2。OSR = 0 到 3

DIV(波特率分频器)

UART_DIV = 1 到 65535

M (DIVM 分数波特率 M)

UART_FBR。DIVM = 1 到 3

N(DIVM 分数波特率 M)

UART_FBR。DIVN = 0 到 2047

第五:对于波特率,请务必检查要使用的外设时钟(PCLK)。在本例中,有一个 26 MHz PCLK 和 16 MHz PCLK 可用。请注意,OSR、DIV、DIVM 和 DIVN 因设备而异。

波特率 OSR DIV 迪姆 迪文
9600 3 24 3 1078
115200 3 4 1 1563
波特率 OSR DIV 迪姆 迪文
9600 3 17 3 1078
115200 3 2 2 348

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

名字 描述
UART_DIV 波特率分频器
UART_FIBR 分数波特率
UART_LCR2 二线控制

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

为什么它很重要?

在开发稳健、质量驱动的产品时,熟悉UART通信协议是有利的。了解如何仅使用两条线发送数据,以及如何传输整个数据包或有效载荷,将有助于确保数据传输和接收无误。由于UART是最常用的硬件通信协议,因此这些知识可以在未来的设计中实现设计灵活性。

使用案例

您可以将UART用于许多应用程序,例如:

调试:在开发过程中及早检测系统错误非常重要。在这种情况下,添加 UART 可以通过从系统捕获消息来帮助。

制造功能级跟踪:日志在制造中非常重要。它们通过提醒操作员生产线上发生的情况来确定功能。

客户或客户端更新:软件更新非常重要。拥有完整的动态硬件和支持更新的软件对于拥有完整的系统非常重要。

测试/验证:在产品离开制造过程之前对其进行验证有助于向客户提供最优质的产品。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接收器
    +关注

    关注

    14

    文章

    2456

    浏览量

    71789
  • 发射器
    +关注

    关注

    6

    文章

    842

    浏览量

    53391
  • uart
    +关注

    关注

    22

    文章

    1227

    浏览量

    101161
收藏 人收藏

    评论

    相关推荐

    UART了解通用异步接收器/发送硬件通信协议

    通信协议在组织设备之间的通信时扮演着重要角色。它基于系统要求而以不同方式进行设计。此类协议具有特定的规则,为实现成功通信,不同设备都遵循该规则。
    发表于 05-14 14:32 3138次阅读
    <b class='flag-5'>UART</b>:<b class='flag-5'>了解</b><b class='flag-5'>通用</b><b class='flag-5'>异步</b><b class='flag-5'>接收器</b>/发送<b class='flag-5'>器</b>的<b class='flag-5'>硬件</b><b class='flag-5'>通信协议</b>

    发射器接收器及其特性介绍

    了解发射器接收器及其特性
    发表于 06-19 10:53

    通用异步接收器/发送UART

    在世界范围内,几乎没有电气工程师和电子爱好者中很少有人没有与通用异步接收器/发送UART)接口进行交互。在当今技术迅速淘汰的世界中,我们
    发表于 09-18 09:00

    通用异步接收器/发送UART

    在世界范围内,几乎没有电气工程师和电子爱好者中很少有人没有与通用异步接收器/发送UART)接口进行交互。在当今技术迅速淘汰的世界中,我们
    发表于 09-25 17:43

    通用异步收发传输UART串口通信协议有哪些特性呢

    什么是通用异步收发传输UART呢?通用异步收发传输
    发表于 11-01 07:03

    单片机常用的通信协议有哪些

    要求的不同,也产生了许多类型的适用于不同情况的通信协议,并被广泛的接受和使用。其实使用率最高的主要有以下几种:一、UART和USART分别名为通用异步收发
    发表于 11-18 06:57

    单片机常用的通信协议有哪几种呢

    要求的不同,也产生了许多类型的适用于不同情况的通信协议,并被广泛的接受和使用。其实使用率最高的主要有以下几种:  一、UART和USART  分别名为通用异步收发
    发表于 12-02 06:52

    基于射频/无线系统的发射器接收器的基本测试

    射频/无线系统会同时包含一个发射器接收器分别用于发送和接收信号。我们先介绍发射器的基本测试,接下来再介绍接收器的基本测试。
    发表于 11-24 16:12 7786次阅读

    通用异步收发UART的工作原理及协议格式

    通用异步收发(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行、异步
    发表于 06-18 10:22 2033次阅读

    讨论使用UART通信协议的基本原则

    UART,即通用异步接收器/发送,是最常用的设备间通信协议之一,正确配置后,
    的头像 发表于 02-01 17:54 997次阅读

    UART通信协议的工作原理

    通用异步接收器/发射器,通常称为UART,是一种串行,异步,全双工
    的头像 发表于 03-23 14:24 2653次阅读
    <b class='flag-5'>UART</b><b class='flag-5'>通信协议</b>的工作原理

    【世说知识】一文搞懂UART通信协议

    UART,即通用异步接收器/发送,是最常用的设备间通信协议之一,正确配置后,
    的头像 发表于 02-02 10:46 2137次阅读
    【世说知识】一文搞懂<b class='flag-5'>UART</b><b class='flag-5'>通信协议</b>

    微控制通信协议UART技术

    ART代表通用异步接收器和发送。同步协议具有独立的时钟和数据线路,时钟线路用于触发数据线的读取(或写入)。
    发表于 11-27 16:05 1242次阅读
    微控制<b class='flag-5'>器</b><b class='flag-5'>通信协议</b>之<b class='flag-5'>UART</b>技术

    TL28L92 3.3V/5V双通道通用异步接收器/发射器数据表

    电子发烧友网站提供《TL28L92 3.3V/5V双通道通用异步接收器/发射器数据表.pdf》资料免费下载
    发表于 07-09 09:34 0次下载
    TL28L92 3.3V/5V双通道<b class='flag-5'>通用</b><b class='flag-5'>异步</b><b class='flag-5'>接收器</b>/<b class='flag-5'>发射器</b>数据表

    简单认识UART通信协议

    UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输通信协议是一种常见的串
    的头像 发表于 07-25 18:07 1331次阅读