配色: 字号:
ADI UART接口简介
2024-04-27 | 阅:  转:  |  分享 
  
第 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 。
献花(0)
+1
(本文系李清龙1023首藏)