第 54卷第4 期,2020年 12月 UART :了解通用异步接收器/ 发送器的硬件通信协议 Eric Pe?a, 高级固件工程师 Mary Grace Legaspi, 固件工程师 嵌入式系统、微控制器和计算机大多将UART作为设备间硬件通 摘要 信协议的一种形式。在可用通信协议中,UART的发送和接收端 UART,即通用异步接收器/ 发送器,是最常用的设备间通信 协议之一。本文将UART用作硬件通信协议应遵循的标准步骤 仅使用两条线。 进行说明。 尽管它是一种广泛使用的硬件通信方法,但它并非在所有时候 正确配置后,UART可以配合许多不同类型的涉及发送和接收 都是完全优化的。在微控制器内部使用UART模块时,通常会忽 串行数据的串行协议工作。在串行通信中,数据通过单条 略帧协议的适当实现。 线路或导线逐位传输。在双向通信中,我们使用两根导线 来进行连续的串行数据传输。根据应用和系统要求,串行 根据定义,UART是一种硬件通信协议,以可配置的速度使用异 通信需要的电路和导线较少,可降低实现成本。 步串行通信。异步意味着没有时钟信号来同步从发送设备进入 接收端的输出位。 本文将讨论使用UART的基本原则,重点是数据包传输、标准帧 接口 协议和定制帧协议;定制帧协议将是安全合规性方面的增值特 UART1 UART2 性,尤其是在代码开发期间。在产品开发过程中,本文档还旨 RX RX 在分享一些基本步骤,以检查数据表的实际使用。 TX TX 最后,本文的目标是帮助更好地理解和遵循UART标准,以便最 大程度地发挥其能力和应用优势,特别是在开发新产品时。 图1. 两个UART彼此直接通信 “沟通最大的问题在于,人们想当然地认为已 每个UART设备的两个信号分别命名为: 经沟通了。” ? 发送器(Tx) —乔治 萧伯纳 ? ? 接收器(Rx) 通信协议在组织设备之间的通信时扮演着重要角色。它基于系 统要求而以不同方式进行设计。此类协议具有特定的规则,为 每个设备的发送器和接收器线的主要作用是用于串行通信的串 实现成功通信,不同设备都遵循该规则。 行数据的发送和接收。 请访问: analog.com/cnData Bus Data Bus 起始位 UART1 UART2 Bit 0 Bit 0 当不传输数据时,UART数据传输线通常保持高电压电平。若要 Bit 1 Bit 1 开始数据传输,发送UART会将传输线从高电平拉到低电平并保 Bit 2 Bit 2 Bit 3 Bit 3 RX RX 持1 个时钟周期。当接收UART检测到高到低电压跃迁时,便开始 Bit 4 Bit 4 TX TX 以波特率对应的频率读取数据帧中的位。 Bit 5 Bit 5 Bit 6 Bit 6 Bit 7 Bit 7 图4. 起始位 图2. 带数据总线的UART 数据帧 发送UART连接到以并行形式发送数据的控制数据总线。然后,数 数据帧包含所传输的实际数据。如果使用奇偶校验位,数据帧 据将在传输线路(导线)上一位一位地串行传输到接收UART。反 长度可以是5 位到8 位。如果不使用奇偶校验位,数据帧长度可 过来,对于接收设备,串行数据会被转换为并行数据。 以是9位。在大多数情况下,数据以最低有效位优先方式发送。 UART线用作发送和接收数据的通信介质。请注意,UART设备具有 专门用于发送或接收的发送和接收引脚。 图5. 数据帧 对于UART和大多数串行通信,发送和接收设备需要将波特率设 置为相同的值。波特率是指信息传输到信道的速率。对于串行 奇偶校验 端口,设定的波特率将用作每秒传输的最大位数。 奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收UART 表1总结了关于UART必须了解的几点。 判断传输期间是否有数据发生改变。电磁辐射、不一致的波特 率或长距离数据传输都可能改变数据位。 表1. UART概要 导线 2 接收UART读取数据帧后,将计数值为1 的位,检查总数是偶数还 是奇数。如果奇偶校验位为0 (偶数奇偶校验),则数据帧中的 9600、19200、38400、57600、115200、230400、 速度 460800、921600、1000000、1500000 1 或逻辑高位总计应为偶数。如果奇偶校验位为1 (奇数奇偶校 传输方法 异步 验),则数据帧中的1或逻辑高位总计应为奇数。 最大主机数 1 最大从机数 1 当奇偶校验位与数据匹配时,UART认为传输未出错。但是,如 果奇偶校验位为0 ,而总和为奇数,或者奇偶校验位为1 ,而总 UART接口不使用时钟信号来同步发送器和接收器设备,而是以 和为偶数,则UART认为数据帧中的位已改变。 异步方式传输数据。发送器根据其时钟信号生成的位流取代了 时钟信号,接收器使用其内部时钟信号对输入数据进行采样。 同步点是通过两个设备的相同波特率来管理的。如果波特率不 同,发送和接收数据的时序可能会受影响,导致数据处理过程 图6. 奇偶校验位 出现不一致。允许的波特率差异最大值为10%,超过此值,位的 时序就会脱节。 停止位 为了表示数据包结束,发送UART将数据传输线从低电压驱动到 数据传输 高电压并保持1到2位时间。 在UART中,传输模式为数据包形式。连接发送器和接收器的机 制包括串行数据包的创建和物理硬件线路的控制。数据包由起 始位、数据帧、奇偶校验位和停止位组成。 图7. 停止位 图3. UART数据包 2 UART :了解通用异步接收器/发送器的硬件通信协议第四步:接收UART丢弃数据帧中的起始位、奇偶校验位和停 UART 传输步骤 止位。 第一步:发送UART从数据总线并行接收数据。 Receiving UART Transmitting UART Data Bus 0 0 1 1 0 1 1 1 0 1 0 1 Data Frame 1 1 –0 –1 –0 Parity Stop Bit Start Bit 1 1 0 0 1 1 图11. Rx侧的UART数据帧 0 0 第五步:接收UART将串行数据转换回并行数据,并将其传输到 1 1 接收端的数据总线。 Receiving UART Data Bus 0 0 图8. 数据总线至发送UART 1 1 第二步:发送UART将起始位、奇偶校验位和停止位添加到数 1 1 据帧。 1 1 Transmitting UART 0 0 1 1 0 1 1 1 0 1 0 1 0 0 +0 +1 +0 Stop Bit Start Bit Parity 1 1 图12. 接收UART至数据总线 图9. Tx侧的UART数据帧 帧协议 第三步:从起始位到结束位,整个数据包以串行方式从发送 UART的一个关键特性是帧协议的实现,但还没有被充分使用。其 UART送至接收UART。接收UART以预配置的波特率对数据线进行 主要用途和重要性是为每台设备提供安全和保护方面的增值。 采样。 Transmitting Receiving 例如,当两个设备使用相同的UART帧协议时,有可能在没有检查 UART UART 配置的情况下连接到同一个UART,设备会连接到不同的引脚,这 1 0 1 0 1 0 1 1 1 0 0 可能导致系统故障。 另一方面,实现帧协议可确保安全性,因为需要根据设计帧协 TX RX 议解析接收到的信息。每个帧协议都经过专门设计,以确保唯 一性和安全性。 在设计帧协议时,设计人员可以给不同设备设置期望的报头和 报尾(包括CRC)。在图13中,2个字节被设置为报头的一部分。 图10. UART传输 请访问:analogdialogue.com/cn 3 第二步:在存储器映射下面检查UART地址。 图13. UART帧协议示例 根据示例,您可以给您的设备设置独有的报头、报尾和CRC。 报头 ( 为 )和报头 ( 为 ) 1 H1 0xAB 2 H2 0xCD 报头是确定您是否在与正确的设备通信的唯一标识符。 ( ) 命令 CMD 选择 命令将取决于用于创建两个设备之间通信的命令列表。 ( ) 每个命令的数据长度 DL 数据长度将取决于所选的命令。您可以根据所选的命令来使数 据长度最大化,因此它会随选择而变化。在这种情况下,数据 长度可以调整。 数据n(可变数据) 数据是要从设备传输的有效载荷。 图15. 微控制器存储器映射 报尾1(T1为0xE1)和报尾2(T2为0xE2) 第三步:检查UART端口的具体信息,例如工作模式、数据位长 报尾是在传输结束后添加的数据。就像报头一样,报尾也可以 度、奇偶校验位和停止位。 唯一标识符。 数据手册中的UART端口详细信息示例: 循环冗余校验( 公式) CRC UART端口 循环冗余校验公式是一种附加的错误检测模式,用于检测原始 示例MCU提供了一个全双工UART端口,其与PC标准UART完全兼 数据是否发生意外更改。发送设备的CRC值必须始终等于接收器 容。UART端口提供一个简化的UART接口用于连接其他外设或 端的CRC计算值。 主机,支持全双工、DMA和异步串行数据传输。UART端口支 持5 到8 个数据位,以及无校验、偶校验和奇校验。帧由一个 建议为每个UART设备实现帧协议来增加安全性。帧协议要求发 半或两个停止位终止。 送和接收设备使用相同的配置。 第四步:检查UART操作的详细信息,包括波特率计算。波特率 UART 工作原理 通过以下示例公式进行配置。此公式随微控制器而异。 使用任何硬件通信协议时,首先必须检查数据手册和硬件参考 UART操作的详细信息示例: 手册。 ? 5到8个数据位 以下是要遵循的步骤: ? 1、2或1 ?个停止位 ? 无、偶数或奇数奇偶校验 第一步:检查设备的数据手册接口。 ? 可编程过采样率为 4、8、16、32 OSR + 2 ? 波特率 = PCLK/((M + N/2048) × 2 × DIV 其中: OSR(过采样率) UART_LCR2.OSR = 0至3 图14. 微控制器数据手册 DIV (波特率分频器) UART_DIV = 1至65535 M(DIVM小数波特率M) UART_FBR.DIVM = 1至3 N(DIVM小数波特率M) UART_FBR.DIVN = 0至2047 4 UART :了解通用异步接收器/发送器的硬件通信协议第五步:对于波特率,务必检查要使用的外设时钟(PCLK)。此示 为何重要? 例有26 MHz PCLK和16 MHz PCLK可用。请注意,OSR、DIV、DIVM和DIVN 当开发稳健的、质量驱动的产品时,熟悉UART通信协议非常有 随设备而异。 优势。知道如何仅使用两条线发送数据,以及如何传输整个 数据包或有效载荷,将有助于确保数据正确无误地发送和接 表2. 基于26 MHz PCLK的波特率示例 收。UART是最常用的硬件通信协议,具备相关知识可以在将来 波特率 OSR DIV DIVM DIVN 的设计中实现设计灵活性。 9600 3 24 3 1078 115200 3 4 1 1563 用例 您可以将UART用于许多应用,例如: 表 基于 的波特率示例 3. 16 MHz PCLK 波特率 OSR DIV DIVM DIVN ? 调试:在开发过程中及早发现系统错误很重要。添加 UART 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通信基础 ”。Electronics Hub,2017年7月。 UART_LCR2 第二线路控制 Campbell, Scott。“UART通信基础 ”。电路基础。 第七步:检查每个寄存器下的详细信息,代入值以计算波特 Keim, Robert。“回到基础:通用异步接收器/发送器”。关于电路 率,然后开始实现UART。 的一切 ,2016年12月。 “何为UART协议?UART通信阐释 ”。Arrow。 作者简介 Eric Pe ňa 是一名高级固件工程师,隶属设计与布局团队,在ADI公司的消费者软件工程部门工作。2019年 4月加入ADI公司,工作地点位于菲律宾甲米地。毕业于马尼拉亚当森大学,获计算机工程学士学位。Eric 之前曾在Technology Enabler Designer担任固件工程师,还曾在Fujitsu Ten Solutions担任系统工程师。联系方式: eric.pena@analog.com 。 作者简介 Mary Grace Legaspi是一名固件工程师,隶属设计与布局团队,在ADI公司的消费者软件工程部门工作。2018 年9 月加入ADI公司,工作地点位于菲律宾甲米地。毕业于塔拉克州立大学,获电子工程学士学位。目 前正在攻读菲律宾大学管理硕士学位。联系方式:mary.legaspi@analog.com 。 如需了解区域总部、销售和分销商,或联系客户服务和 ?2020 Analog Devices, Inc. 保留所有权利。 请访问analog.com/cn 技术支持,请访问analog.com/cn/contact 。 商标和注册商标属各自所有人所有。 向我们的ADI技术专家提出棘手问题、浏览常见问题解 “超越一切可能”是ADI公司的商标。 答,或参与EngineerZone在线支持社区讨论。 请访问ez.analog.com/cn 。 |
|