本帖最后由 水精灵 于 2025-3-19 09:27 编辑

掌握UART等通信接口的深入知识,对嵌入式初学者而言,不仅能够深化对通信协议与方式的认知,增强调试技巧及通信接口设计能力,还能拓宽应用范畴并培育系统级思考方式。因此本文将对UART接口进行全面解析,助力嵌入式初学者在智能硬件时代构建可靠、高效的嵌入式系统。
一、基本概念
UART的全称是Universal Asynchronous Receiver/Transmitter,译为通用异步收发传输器,是一种硬件设备,也是一种异步串口通信协议。它作为一种串行、异步、全双工的通信协议,将所需传输的数据一位接一位地传输,在协议中信号线上的状态位高电平代表‘1’,低电平代表‘0’。其特点是通信线路简单,只要一对传输线就可以实现双向通信,大大降低了成本,但传送速度较慢。
这里简单对比理解一下全双工和半双工、串行和并行、异步和同步几种通信方式的区别:
(1)全双工
指通信双方可以同时进行发送和接收数据,而且可以同时进行这两个操作而不会互相干扰。通常需要两条物理通信线(或通道),一条用于发送数据,另一条用于接收数据。典型的例子包括电话系统,其中两个人可以同时说话和听对方说话,而不会发生冲突。
(2)半双工
指通信双方可以交替进行发送和接收数据,但不能同时进行。当一个设备发送数据时,另一个设备必须处于接收模式,并且反之亦然。只需要一条物理通信线(或通道),这条线在不同时间段上被用于发送和接收操作。例如,对讲机就是典型的半双工通信设备,一个人说话时其他人必须等待,不能同时说话。
(3)串行
串行传输是指数据位按顺序一个接一个地传输,通过单一的通信线(通道)进行。每个数据位依次发送或接收,依据一个时钟信号进行同步。由于数据逐位传输,通常速度比较慢,但可以使用较少的物理线路,适合长距离通信和资源有限的情况。
(4)并行
并行传输是指同时传输多个数据位,每个数据位使用独立的通信线(通道)。每个数据位可以独立进行传输和接收。由于同时传输多个位,因此可以实现更高的数据传输速率,但也需要更多的物理线路和更复杂的硬件支持。
(5)同步
同步传输是指数据按照预定的时钟信号进行传输,发送和接收端设备需要共享时钟信号,以便正确地解释数据。通信双方需要通过时钟信号来同步数据的传输速率和时序。能够实现高速数据传输,并确保数据的时序一致性和准确性。常见于需要精确的时序控制和高速数据传输的应用,如内存总线、以太网等。
(6)异步
异步传输是指数据不需要通过外部的时钟信号来同步传输,而是通过在数据包中引入起始位和停止位来识别每个数据包的开始和结束。通信双方的时钟可以是独立的。更简单和灵活,适用于低速和不需要精确时序的通信。异步传输不需要严格的时钟同步,因此可以减少硬件复杂度和成本。
二、工作模式
UART 通道有两条数据线。每个设备上都有一个 RX 引脚和一个 TX 引脚(RX 用于接收,TX 用于发送)。每个设备的 RX 引脚都连接到另一个设备的 TX 引脚。此类型的设备连接是没有时钟线的。
图片1.png
连接好后,UART就会采用字节数据并以顺序方式发送各个位。在接收端,第二个UART将这些位重新组合成完整的字节。
在UART中,传输数据是以数据帧的方式进行的,一个标准的UART数据帧如下图所示:
图片2.png
起始位:先发出一个逻辑‘0’,表示传输字符开始。
数据位:可以是5~8位逻辑‘0’或‘1’。如ASCII码(7位),扩展BCD码(8位),采用小端传输。
校验位:数据位加上这一位后,使得‘1’的位数应为偶数(偶校验)或奇数(奇校验)。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑‘1’状态,表示当前线路上没有资料传送。
UART除了要关注以上的数据帧之外,还有很重要的一点就是波特率,波特率指UART传输的数据速率,以波特(Baud)为单位。波特率决定了每秒钟传输的比特数。通信的双方必须设置相同的波特率,以确保数据的正确传输,常见的波特率有9600、115200等。
三、常见类型
UART通信本身定义了数据传输的逻辑结构、帧格式和波特率等内容,但它并未对实际传输信号的电压范围做具体规定。电平标准决定了数据传输的信号电压范围、传输距离以及抗干扰性能,不同的电平标准实现UART通信,用来满足不同的应用需求。
常见的串行通信电平标准有TTL、RS-232和RS-485,它们的常见电压区别如下图所示:
图片3.png
(1)TTL
基于TTL的UART通信是UART协议应用最简单的使用场景,即直接把数字IO输出的高低电平作为实际的物理信号进行传输。TTL 使用的是标准的TTL逻辑电平(Transistor-Transistor Logic),常见的电平有5V、3.3V、1.8V。
不同电平标准对应的逻辑高低电平如下表:
电平标准        输入端        输出端
5V        逻辑高电平:2.0~5V
逻辑低电平:0~0.8V        逻辑高电平:2.4~5V
逻辑低电平:0~0.4V
3.3V        逻辑高电平:2.0~3.3V
逻辑低电平:0~0.8V        逻辑高电平:2.4~3.3V
逻辑低电平:0~0.4V
1.8V        逻辑高电平:1~1.8V
逻辑低电平:0~0.45V        逻辑高电平:1.4~1.8V
逻辑低电平:0~0.4V
在物理连接上,只需要设备共地,通过一根信号线即可完成单向的设备通讯。如果需要双向全双工,使用两根信号线即可。适用于短距离通信,通常在电子 DIY 项目、嵌入式系统、和各种传感器和执行器之间的通信中被广泛采用。
(2)RS-232
RS-232是美国电子工业联盟(EIA)指定的串行数据通信的接口标准,原始编号全称是EIA-RS-232(简称232,RS232)。它被广泛用于计算机串行接口外设连接。RS-232C标准中,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(Recommended Standard)代表标准,232是标识号,C代表RS232的第三次修改(1969年),在这之前,还有RS232B、RS232A。RS-232主要用于计算机串行接口(COM端口)和外部设备之间的通信,如调制解调器、打印机等,主要应用于短距离通信。
RS-232 的电平范围通常在-15V至+15V之间,典型电压为±12V。标准规定输入端逻辑高电平范围为-3V到-15V ,逻辑低电平范围为+3V到+15V;输出端逻辑高电平范围为-5V到-15V,逻辑低电平+5V到+15V。RS-232信号线在没有数据传输时保持在负电压,数据传输开始时电压在正负电平之间交替,这种较大的电压摆幅提高了抗干扰性,使RS-232在短距离通信中稳定可靠。
(3)RS-485
电子工业协会与1983年在RS-422工业总线标准的基础之上指定并发布了RS-485总线工业标准。RS-485工业总线标准具有能够有效支持多个分节点,通信距离远,并且对于信息的接收灵敏度较高等特性。RS-485总线一般主要用于与外部各种工业设备进行信息传输和数据交换,所具备的对于噪声的有效抑制能力、高效的数据传输速率与良好的数据传输的可靠性能以及可扩展的通信电缆的长度是其他的许多工业通信标准所无法比拟的。
它是一种多点、差分信号的串行通信标准,通常用于在远距离(高达1200米)和噪声环境下进行通信。RS485 UART以正负差分电平来表示数据,逻辑1和逻辑0之间的电压差异决定了信号的传输和接收。支持多个设备在同一通信线上传输数据,使用低功耗驱动器和接收器,可以提供较高的数据传输速率。
关于UART接口就介绍到这里,衷心希望这些内容能为屏幕前努力学习嵌入式开发的小伙伴带来实质性的帮助与启发。
同时ElfBoard向全国高校发出诚挚邀请,期望能在定制化嵌入式课程设计、联合创建嵌入式实验室以及嵌入式师资专业化培训等多个维度开展深度合作。我们深信,通过共同努力可以为学生提供更加贴近产业需求的高质量嵌入式教育,从而培养出更多具备实战能力的优秀人才。

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.