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

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

3天内不再提示

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

Excelpoint世健 2023-02-02 10:46 次阅读

UART,即通用异步接收器/发送器,是最常用的设备间通信协议之一,正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行协议工作。在串行通信中,数据通过单条线路或导线逐位传输。在双向通信中,我们使用两根导线来进行连续的串行数据传输。根据应用和系统要求,串行通信需要的电路和导线较少,可降低实现成本。

本文将UART用作硬件通信协议应遵循的标准步骤进行说明,讨论使用UART的基本原则,重点是数据包传输、标准帧协议和定制帧协议;定制帧协议将是安全合规性方面的增值特性,尤其是在代码开发期间。在产品开发过程中,本文还将分享一些基本步骤,以检查数据表的实际使用,目标是帮助更好地理解和遵循UART标准,以便最大程度地发挥其能力和应用优势,特别是在开发新产品时。通信协议通信协议在组织设备之间的通信时扮演着重要角色。它基于系统要求而以不同方式进行设计。此类协议具有特定的规则,为实现成功通信,不同设备都遵循该规则。根据定义,UART是一种硬件通信协议,以可配置的速度使用异步串行通信。异步意味着没有时钟信号来同步从发送设备进入接收端的输出位。嵌入式系统微控制器和计算机大多将UART作为设备间硬件通信协议的一种形式。在可用通信协议中,UART的发送和接收端仅使用两条线。尽管它是一种广泛使用的硬件通信方法,但它并非在所有时候都是完全优化的。在微控制器内部使用UART模块时,通常会忽略帧协议的适当实现。

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

  • 发送器(Tx)
  • 接收器(Rx)

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

发送UART连接到以并行形式发送数据的控制数据总线。然后,数据将在传输线路(导线)上一位一位地串行传输到接收UART。反过来,对于接收设备,串行数据会被转换为并行数据。

UART线用作发送和接收数据的通信介质。请注意,UART设备具有专门用于发送或接收的发送和接收引脚。对于UART和大多数串行通信,发送和接收设备需要将波特率设置为相同的值。波特率是指信息传输到信道的速率。对于串行端口,设定的波特率将用作每秒传输的最大位数。表1总结了关于UART必须了解的几点。

5a7d9cf6-a271-11ed-ad0d-dac502259ad0.png

表1.UART概要

UART接口不使用时钟信号来同步发送器和接收器设备,而是以异步方式传输数据。发送器根据其时钟信号生成的位流取代了时钟信号,接收器使用其内部时钟信号对输入数据进行采样。同步点是通过两个设备的相同波特率来管理的。如果波特率不同,发送和接收数据的时序可能会受影响,导致数据处理过程出现不一致。允许的波特率差异最大值为10%,超过此值,位的时序就会脱节。数据传输在UART中,传输模式为数据包形式。连接发送器和接收器的机制包括串行数据包的创建和物理硬件线路的控制。数据包由起始位、数据帧、奇偶校验位和停止位组成。

起始位

当不传输数据时,UART数据传输线通常保持高电压电平。若要开始数据传输,发送UART会将传输线从高电平拉到低电平并保持1个时钟周期。当接收UART检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。

5a9941ea-a271-11ed-ad0d-dac502259ad0.jpg

图4.起始位

数据帧

数据帧包含所传输的实际数据。如果使用奇偶校验位,数据帧长度可以是5位到8位。如果不使用奇偶校验位,数据帧长度可以是9位。在大多数情况下,数据以最低有效位优先方式发送。

5aae83e8-a271-11ed-ad0d-dac502259ad0.jpg

图5.数据帧

奇偶校验

奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。接收UART读取数据帧后,将计数值为1的位,检查总数是偶数还是奇数。如果奇偶校验位为0(偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为1(奇数奇偶校验),则数据帧中的1或逻辑高位总计应为奇数。当奇偶校验位与数据匹配时,UART认为传输未出错。但是,如果奇偶校验位为0,而总和为奇数,或者奇偶校验位为1,而总和为偶数,则UART认为数据帧中的位已改变。

5ac25850-a271-11ed-ad0d-dac502259ad0.jpg

图6.奇偶校验位

停止位

为了表示数据包结束,发送UART将数据传输线从低电压驱动到高电压并保持1到2位时间。

5adefa96-a271-11ed-ad0d-dac502259ad0.jpg

图7.停止位UART传输步骤

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

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


数据帧第三步:从起始位到结束位,整个数据包以串行方式从发送UART送至接收UART。接收UART以预配置的波特率对数据线进行采样。

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

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

帧协议UART的一个关键特性是帧协议的实现,但还没有被充分使用。其主要用途和重要性是为每台设备提供安全和保护方面的增值。例如,当两个设备使用相同的UART帧协议时,有可能在没有检查配置的情况下连接到同一个UART,设备会连接到不同的引脚,这可能导致系统故障。另一方面,实现帧协议可确保安全性,因为需要根据设计帧协议解析接收到的信息。每个帧协议都经过专门设计,以确保唯一性和安全性。在设计帧协议时,设计人员可以给不同设备设置期望的报头和报尾(包括CRC)。在图13中,2个字节被设置为报头的一部分。

5b57d3bc-a271-11ed-ad0d-dac502259ad0.jpg

图13.UART帧协议示例根据示例,您可以给您的设备设置独有的报头、报尾和CRC。

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

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

命令(CMD)选择

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

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

数据长度将取决于所选的命令。您可以根据所选的命令来使数据长度最大化,因此它会随选择而变化。在这种情况下,数据长度可以调整。

  • 数据n(可变数据)

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

  • 报尾1(T1为0xE1)和报尾2(T2为0xE2)

报尾是在传输结束后添加的数据。就像报头一样,报尾也可以唯一标识符。

  • 循环冗余校验(CRC公式)

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

建议为每个UART设备实现帧协议来增加安全性,帧协议要求发送和接收设备使用相同的配置。

UART工作原理

使用任何硬件通信协议时,首先必须检查数据手册和硬件参考手册。以下是要遵循的步骤:

第一步:检查设备的数据手册接口。

5b6ad5d4-a271-11ed-ad0d-dac502259ad0.jpg

图14.微控制器数据手册

第二步:在存储器映射下面检查UART地址。

5b9f21c2-a271-11ed-ad0d-dac502259ad0.jpg

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

第三步:检查UART端口的具体信息,例如工作模式、数据位长度、奇偶校验位和停止位。示例MCU提供了一个全双工UART端口,其与PC标准UART完全兼容。UART端口提供一个简化的UART接口用于连接其他外设或主机,支持全双工、DMA和异步串行数据传输。UART端口支持5到8个数据位,以及无校验、偶校验和奇校验。帧由一个半或两个停止位终止。

第四步:检查UART操作的详细信息,包括波特率计算。波特率通过以下示例公式进行配置。此公式随微控制器而异。

数据手册中的UART端口详细信息示例:

  • 5到8个数据位
  • 1、2或1 ½个停止位
  • 无、偶数或奇数奇偶校验
  • 编程过采样率为4、8、16、32
  • 波特率 = PCLK/((M + N/2048) × 2OSR + 2× DIV

其中:OSR(过采样率)UART_LCR2.OSR = 0至3DIV(波特率分频器)UART_DIV = 1至65535M(DIVM小数波特率M)UART_FBR.DIVM = 1至3N(DIVM小数波特率M)UART_FBR.DIVN = 0至2047

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

5bacda42-a271-11ed-ad0d-dac502259ad0.png

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

5bbebdde-a271-11ed-ad0d-dac502259ad0.png

表3.基于16 MHz PCLK的波特率示例第六步:下一部分是检查UART配置的详细寄存器。了解计算波特率时的参数,例如UART_LCR2、UART_DIV和UART_FBR。表4要列出所涉及的具体寄存器。

5bd4fcfc-a271-11ed-ad0d-dac502259ad0.png

表4.UART寄存器描述第七步:检查每个寄存器下的详细信息,代入值以计算波特率,然后开始实现UART。应用范例当开发稳健的、质量驱动的产品时,熟悉UART通信协议非常有优势。知道如何仅使用两条线发送数据,以及如何传输整个数据包或有效载荷,将有助于确保数据正确无误地发送和接收。UART是最常用的硬件通信协议,具备相关知识可以在将来的设计中实现设计灵活性。

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

  • 调试:在开发过程中及早发现系统错误很重要。添加UART便可从系统捕捉消息,帮助排除错误。
  • 制造功能级追踪:日志在制造业中非常重要。通过日志可确定功能,提醒操作员生产线上正在发生的事情。
  • 客户更新:软件更新非常重要。完整的动态硬件和支持更新的软件对于拥有完整系统至关重要。
  • 测试/验证:在产品离开制造过程之前进行验证有助于为客户提供最优质的产品。


原文转自亚德诺半导体

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

    关注

    18

    文章

    5706

    浏览量

    134386
  • uart
    +关注

    关注

    22

    文章

    1159

    浏览量

    99955
收藏 人收藏

    评论

    相关推荐

    UART串口通信协议是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一种通信接口协议,用于实现串口通信。它是一种简单的、可靠的、广泛应用的串口
    的头像 发表于 03-19 17:26 281次阅读

    有关通信协议些问题?

    抗干扰就加强滤波,要求输入信号隔离就加隔离芯片或其他方式,总之这段电路不应该太夏杂吧,远不如芯片内部的信号处理电路?最后请推荐几本有关串行通信协议方面硬件方面的书,还有个问题,这些通信协议
    发表于 01-14 00:58

    SPI通信协议原理是什么

    Peripheral Interface,也就是串行外设接口,同样是一种通信协议,在很多芯片中都有集成。 相比之前学习的UART串口通信,他多了两根线,其中一个是时钟信号,另一个是设备使能信号,用来控制设备是否
    的头像 发表于 11-24 17:37 411次阅读
    SPI<b class='flag-5'>通信协议</b>原理是什么

    uart通信的详细讲解

    UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发器)是一种常用的串行通信协议,广泛应用于单片机或各种嵌入式设备之间的通信。本文将详细介绍
    的头像 发表于 09-22 08:22 1689次阅读
    <b class='flag-5'>uart</b><b class='flag-5'>通信</b>的详细讲解

    浅谈Modbus通信协议

    Modbus通信协议是一种工业现场总线协议标准,常用的Modbus协议有以下三种类型:Modbus TCP、Modbus RTU、Modbus ASCll。
    发表于 09-20 15:56 955次阅读
    浅谈Modbus<b class='flag-5'>通信协议</b>

    SPI、UART、I2C通信协议的区别

    电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议
    发表于 08-17 10:21 487次阅读
    SPI、<b class='flag-5'>UART</b>、I2C<b class='flag-5'>通信协议</b>的区别

    IP地址、端口号、通信协议的相关知识 TCP和UDP通信协议简述

    网络编程有三个要素,分别是IP地址、端口号和通信协议。本文主要讲述的是TCP与UDP这两种通信协议,以及编程的实现。首先,我们需要了解一下IP地址、端口号、通信协议的相关知识
    的头像 发表于 07-18 11:20 1446次阅读
    IP地址、端口号、<b class='flag-5'>通信协议</b>的相关<b class='flag-5'>知识</b> TCP和UDP<b class='flag-5'>通信协议</b>简述

    UART通信原理详解

    通用异步收发传输器,通常称作UART,是一种异步收发传输器。是异步通信协议。特性:两根线,全双工,异步通信,速度较慢。
    发表于 06-28 15:26 1336次阅读
    <b class='flag-5'>UART</b><b class='flag-5'>通信</b>原理详解

    CAN总线通信协议的基础知识

    本文将介绍CAN总线通信协议的基础知识,目前的内容仅为通用的协议部分,暂不涉及具体的外设模块的用法。研究通信协议的具体内容,主要是看建立通信
    的头像 发表于 06-16 10:58 4783次阅读
    CAN总线<b class='flag-5'>通信协议</b>的基础<b class='flag-5'>知识</b>

    通信协议的作用、类型及优缺点

      通信协议是指在计算机网络中,为了使不同的计算机或网络设备之间能够相互通信而制定的一套规则和标准。通信协议规定了数据传输的格式、传输速率、传输控制、错误检测和纠正等方面的内容,以确保数据能够正确、高效地传输。常见的
    发表于 05-10 16:09 2994次阅读

    通信协议的特点

    通信协议的种类和特点目前常见的通信协议主要有:NetBEUI、IPX/SPX、NWLink、TCP/IP,在这几种协议中用得最多、最为复杂的当然还是TCP/IP协议,最为简单的是Net
    发表于 05-06 14:57 984次阅读

    通信协议内容与功能

    通信协议不难理解,就是两个(或多个)设备之间进行通信,必须要遵循的一种协议通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。通过
    发表于 05-06 14:43 2122次阅读

    常用的通信协议有哪些

    通信协议(communications protocol)官方给出的定义是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序
    发表于 05-06 14:36 1.6w次阅读

    通信协议的概念

    通信协议是指在通信过程中,为了使得不同设备之间进行有效的数据交换,所约定的一整套规则和标准。通信协议中定义了通信双方的接口、数据格式、传输速率、传输控制和数据处理等细节,从而确保了
    发表于 05-06 14:32 1446次阅读

    浅析ModBus通信协议的相关知识

      概 述   Modbus是种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus
    发表于 05-05 15:51