在硬件中经常提到的UART到底是什么?485又是什么?
在硬件中经常提到的UART到底是什么?485又是什么?
在当今硬件高速接口层出不穷,但串口通信作为一种经典的技术,依然在工业控制、嵌入式开发、设备调试等领域起着关键的重要作用。理解 UART、RS-232、RS-485 等概念,是硬件开发的重要基础。
一、 什么是 UART?
UART:通用异步收发传输器。它是一种硬件设备,用于实现异步串行通信。
异步:通信双方没有统一的时钟信号进行同步。这意味着发送器和接收器必须事先约定好相同的通信参数(主要是波特率),依靠数据帧本身的起始位和停止位来界定一个数据单元。
串行:数据一位一位地按顺序在单根数据线上传输。与一次传输多个比特的“并行通信”相比,串行通信使用的线缆更少,抗干扰能力更强,适合长距离传输。
1.关键特点
两条数据线:
TX:数据发送线。
RX:数据接收线。
重要原则:要实现通信,一方的 TX 必须连接到另一方的 RX。
通信参数要一致:
波特率:数据传输的速率,单位 bps。常见值有 9600, 115200 等。表示每秒传输的比特数。如波特率是9600,则表示每秒传输9600bit的数据。
数据位:每个数据帧中包含的实际数据长度,通常是 5、6、7、8 位。最常用的是 8 位。
停止位:用于标志一个数据帧的结束,可以是 1、1.5 或 2 位。最常用的是 1 位。
校验位:用于简单的错误检测,可以是奇校验、偶校验或无校验。
标准数据帧格式:
一个标准的 UART 数据帧由以下部分组成:
起始位:总是 1 个比特的低电平,表示一帧的开始。
数据位:紧接着起始位,是实际要传输的数据,低位在前。
校验位:可选的错误校验位。
停止位:总是高电平,表示一帧的结束。
全双工通信:
TX和RX可以同时进行数据的发送和接收
UART本身只是一种控制器,它定义的是数据打包和解包方式,以及时序。它产生的信号是TTL电平。
二、UART TTL
我们常说的 UART TTL,指的就是 UART 控制器直接输出的信号。这里的“TTL”指的是其电气电平标准
那么,什么是电平?
逻辑 1:高电平,通常是 3.3V 或 5.0V(取决于芯片的供电电压)。
逻辑 0:低电平,通常是 0V。
一般用于单片机(如STM32)与主控板或者PC进行通信。优点是简单、方便,直接与微处理器接口。缺点是抗干扰能力差,容易受到外部噪声影响。传输距离非常短,通常不超过几十厘米。
三、 RS-232
RS-232是由美国电子工业联盟制定的一种串行通信标准。它定义了电气特性、机械特性(接口形状)、信号功能等。最常见的就是我们平时用的电脑后面的9 针COM口就是RS-232接口。
电平定义(与 TTL 完全相反!):
逻辑 1:-3V 至 -15V(称为负电压)。
逻辑 0:+3V 至 +15V(称为正电压)。
接口与线缆最常见的是 DB9 接口。除了 TX 和 RX,还定义了如 RTS、CTS、DSR、DTR 等硬件流控制信号线,用于协调数据传输。设备间连接通常使用交叉线缆(也称 Null Modem 电缆),即一端的 TX 接另一端的 RX。
传输距离:理论上可达 15 米(在较低波特率下可能更长)。
通信方式:全双工。
连接方式:点对点,即一个驱动器(主机)只能连接一个接收器(从机)。
优点:相比 TTL,抗干扰能力显著增强,传输距离更远,成为了多年的工业标准。
缺点:电平电压高,电路相对复杂;传输速率和距离仍然有限;点对点结构在需要连接多个设备时很不方便。
四、RS-485
RS-485是为工业环境而生;
核心特点:
差分信号传输:使用两根线 A 和 B 来传输一个信号。
逻辑状态由这两根线之间的电压差来决定:
逻辑 1: (A - B) < -200mV
逻辑 0: (A - B) > +200mV
差分信号的优点是极强的抗共模干扰能力。外部的噪声会同时作用于 A 和 B 线,电压差基本不变,从而被接收器忽略。
通信方式:半双工。在同一时刻,只能有一个设备作为主站发送数据,其他设备作为从站接收。需要方向控制。
连接方式:多点总线结构。一条总线上可以挂接多达 32个 甚至通过中继器扩展到 256个 收发器。所有设备共享同一对数据线 A 和 B。
电平定义:逻辑 1 和 0 由差分电压决定,电平幅度通常在 -7V 至 +12V 之间。
传输距离:理论上可达 1200米(在较低波特率如 9600bps 下)。
传输速率:最高可达 10Mbps(在短距离内)。
那么,我们日常硬件开发或调试的时候,如何选择呢?
芯片间短距离通信:直接使用 UART TTL,简单高效。譬如我们用的IC卡刷卡模组、测温模组、二维码模组等直接连接主控板。
设备调试、连接老式设备:使用 RS-232,通用性强。
工业环境、长距离、多设备组网:RS-485 是不二之选。譬如远距离的温湿度传感器、中心主机控制单元部分以及PLC、远程控制等等场景。