UART、RS232、RS485基础知识+硬件知识

本文详细介绍了UART的工作原理,包括数据格式、传输速率和物理层,以及RS232和RS485接口的比较,重点讲解了电平转换和协议兼容性。文章还讨论了单片机串口通信的局限性和USB转串口技术的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、UART简介

1.1定义

UART是一种采用异步串行、全双工通信方式的通用异步收发传输器功能。

1.2功能

它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。

发送:并→串,接收:串→并。

1.3协议层

1.3.1数据格式

异步串行通信数据格式标题

(1)空闲

在没有数据传输的时候,数据线处于空闲状态,保持为高电平。

(2)起始位

在空闲状态下一旦检测到数据由高到低的一个跳变,则认为低电平为起始位。起始位标志着一帧数据的开始,也就是在接收方检测到起始位时,就准备开始接收数据。

(3)数据位

图中在起始位后面是一帧数据的7位有效数据位,对于UART来讲,其有效数据位可以是5、6、7、8位,其中8位是最常用的。

(4)校验位

在数据位后是校验位,用来检验数据在传输过程中是否出错。校验位分为两种,分别是奇校验和偶校验。

  • 奇校验:发送方在发送数据时,保证数据位和校验位中“1”的个数和为奇数。如发送数据位:0101101(4个1),则校验位补1。
  • 偶校验:发送方在发送数据时,保证数据位和校验位中“1”的个数和为偶数。如发送数据位:0101101(4个1),则校验位补0。
  • 接收方在接收数据时,同样检验“1”的个数。如果在奇校验时检验到“1”的个数不为奇数,或者在偶校验时检验到“1”的个数不为偶数,那么就接收方就认为数据传输过程中出错。

(5)停止位

停止位标志着一帧数据的结束。在下图中停止位是一个周期的高电平。实际上,停止位可以为1.5个周期或2个周期。

(6)回到空闲

停止位之后数据线回到空闲状态,如果此时再次检测到起始位就标志着下一帧数据的开始。

1.3.2传输速率

串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是bps(位/秒)常用的波特率有9600、19200、38400、57600以及115200等。

(9600:每秒钟串口可以传输9600bit的数据。)

1.4物理层

1.4.1物理连接

UART串口通信主要需要两根信号线来实现,一根用于串口发送(TXD),另外一根负责串口接收(RXD)

上图中,GND 表示单片机系统电源的参考地。两个单片机之间要通信,首先电源基准得一样,所以我们要把两个单片机的 GND 相互连接起来。

TXD 是串行发送引脚,RXD 是串行接收引 脚。单片机 1 的 TXD 引脚接到单片机 2 的 RXD 引脚上,即此路为单片机 1 发送 而单片机 2 接收的通道,单片机 1 的 RXD 引脚接到单片机 2 的 TXD 引脚上,即此路为单片 机 2 发送而单片机 1 接收的通道。

二、RS232、RS422、RS485总览

针对串行通信的接口标准有RS232、RS422、RS485等。

RS232、RS422、RS485通信协议实际是一种标准,我们可以直接使用这种标准进行通信,完全没有任何问题。

我们还可以自定义通信协议,自定义通信协议是基于需求编写的,符合RS232等标准的协议就可以通信了。

接口标准逻辑1逻辑0说明优缺点
RS232-15V+15V

负逻辑电平①

3线全双工

点对点双向通信

传输速度相对较低

传输距离短(15m)

RS422

差值电压

+(2~6)V

差值电压

-(2~6)V

差分传输④

4线全双工⑤

点对多,主从通信⑥

抗干扰能力强

传输速度高

传输距离远(1200m)

RS485

差值电压

+(2~6)V

差值电压

-(2~6)V

差分传输

2线半双工

多点双向通信⑦

能够实现多个发送

接收设备双向通信(1200m)

①负逻辑电平:用﹣15V表示逻辑1;用+15V表示逻辑0

②3线:发送线、接收线、公共的地线

③点对点:只能两个设备进行双向通信,如:RS232只用于A、B之间点对点双向通信。

④差分传输:差分传输是相对于单端传输而言的,RS232就是是单端传输。

  • 单端传输:使用  一根信号线 + 地线  去传输信号。采用信号线与地线的电平差值。
  • 差分传输:使用  两路信号线  去传输信号。两路信号线幅值相等,极性相反。
  • 区别:
    单端传输受到干扰,那么接收方会接收到这个干扰信号。
    差分传输受到干扰,两条线受到干扰的幅值和相位都是一样的,即共模干扰。在做减法运算的时候,干扰被抵消。因此,差分传输的抗干扰能力很强

⑤4线全双工:由于RS422是差分传输,为实现全双工通信协议,需要4根数据线,其中两根用于发送,两根用于接受。

⑥RS422可用于A(主机)与B(从机)、C(从机)等从机之间的双向通信,但是B、C之间不能通信。

⑦RS485可用于A(主机)与B(从机)、C(从机)等从机之间的双向通信,并且B、C之间也可以双向通信。

三、RS232

3.1RS232简介

RS232标准主要规定了信号的用途、通讯接口以及信号的电平标准。

最高传输速率 20kbps。

3.1.1实物图

RS232标准的串口常见的接口类型:DB9接口,如图1。

可以是公对母,也可以是公对公、母对母,如图2。

USB转串口线,将USB→串口,如图3。

3.1.2DB9接口定义

引脚编号引脚名称功能说明
Pin 1DCD敷据载波检测
Pin 2RXD接受数据
Pin 3TXD发送数据
Pin 4DTR敷据终端准备
Pin 5GND地线
Pin 6DSR数据准备就绪
Pin 7RTS请求发送
Pin 8CTS清除发送
Pin 9RI振铃提示

最常用:Pin 2,Pin 3,Pin 5

3.2RS232串口通信协议

由于RS232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个"电平转换芯片"转换成控制器能识别的"TTL校准"的电平信号,才能实现通讯。

那么为什么DP9接口上三个引脚的名字和单片机上的串口名字一样,但是却不能直接和单片机对连通信呢?
因为不是所有的电路都是5V代表高电平而0V代表低电平的。对于 RS232 标准来说,它是个反逻辑,也叫做负逻辑。它的 TXD 和 RXD 的电压,-3V~-15V 电压代表是 1,+3~+15V 电压代 表是 0。低电平代表的是 1,而高电平代表的是 0,所以称之为负逻辑。

因此电脑的 9 针 RS232 串口是不能和单片机直接连接的,需要用一个电平转换芯片 MAX232 来完成,如图下图所示。

这个芯片就可以实现把标准 RS232 串口电平转换成我们单片机能够识别和承受的UART 0V/5V 电平。

其实 RS232 串口和 UART 串口,它们的协议类型是一样的,只是电平标准不同而已,而 MAX232 这个芯片起到的就是中间人的作用,它 把 UART 电平转换成 RS232 电平,也把 RS232 电平转换成 UART 电平,从而实现标准 RS232 接口和单片机 UART 之间的通信连接。

3.3与UART异同点

逻辑电平不同:UART是TTL电平,RS232是RS232电平,不能直接相连,需要电平转换芯片

协议层完全相同:UART和RS232的协议层可以共享,没有较大区别。

3.4缺点

  • 接口电平值较高,易损坏接口电路的芯片;又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。

  • 传输速率较低,大约为20Kbps;传输距离较短,大约为15米左右。

  • 接口由三根线TX、RX、GND组成,没有构成差分线形式,容易产生共地共模干扰,抗干扰能力弱。

四、RS485

4.1简介

RS485 接口是串口的一种,常常用在一些工业控制中。

485 通信是一种半双工的通信,一条总线上最多可连接 256 个 485 设备,信号速率最高可达 10 兆 BPS,传输距离最远能到 1,200 米。

4.2差分信号

485 接口包含一对差分信号A 和 B 。

4.2.1发送信号

发送逻辑一时:总线上 A 的电压大于 B 的电压,且压差在 2- 6 伏之间;

发送逻辑零时:总线上 A 的电压小于 B 的电压,且压差在- 6 伏到- 2 伏之间。

4.2.2接受信号

接收到逻辑一:当总线上A 的电压大于 B 的电压且压差大于 200 毫伏。

接收到逻辑零:当总线上 A 的电压小于 B 的电压且压差小于- 200 毫伏。

4.3 SP3485芯片

常用的 485 收发器芯片有 SP3485,它可以将 3.3 伏数字电平信号转换成 485 信号。

SP3485 的引角信号定义如下图:

引脚具体函数如下表:

序号引脚名称功能介绍
1RO

接收器输出

\overline{RE}为低电平:如果A-B>200mV,RO=高;如果A-B≤-200mV,RO=低

2\overline{RE}

接收器输出使能控制

\overline{RE}为低电平时,接收器输出启用,RO输出可用。
\overline{RE}为高电平时,接收器输出被禁用,RO处于高阻抗状态。
\overline{RE}为高电平而DE为低电平时,器件进入低功耗模式。

3DE

驱动器输出使能控制

当DE为高电平时,驱动器输出可用。

当DE为低电平时,输出处于高阻抗状态。
\overline{RE}为高电平而DE为低电平时,器件进入低功耗模式。

4DI

驱动器输入

当DE为高电平时,

DI低电平迫使非反相驱动器输出A为低电平,反相驱动器输出B为高电平;

Dl高电平迫使非反相驱动器输出A为高电平,反相驱动器输出B为低电平。

5GND地面
6A非反相接收器输入和非反相驱动器输出
7B反相接收器输入和反相驱动器输出
8VCC电源供应

下表为 SP3485 发送端的增值表:

下表是接收端的增值表:

4.4 SP3485芯片电路

下图是 SP3485 的典型电路,\overline{RE} 和 DE 是接到一起的,UART_RX 和 UART_TX 为 MCU 的串口信号,分别接到 SP 3485 的 RO 和DI。

4.4.1MCU通过SP3485输出

当控制信号为高电平时,为发射使能。

  1. 当 UART_TX 为高电平时,输出端 A 的电压大于 B 的电压,也就是输出了 485 的逻辑一。
  2. 当 UART_TX 为低电平时,输出端 A 的电压小于 B 的电压,也就是输出了 485 的逻辑零。
数据发送示意图

4.4.2外部通过SP3485输入

当控制信号为低电平时,接收使能 。

UART_TX 的电平不会对 A 和 B 造成影响, TX 一般是一个高电平。

当 485 总线上:

  1. A  的电压减 B 的电压大于 200mV 时, RX 为高电平。
  2. A  的电压减 B 的电压小于- 200mV 时, RX 为低电平。
数据接受示意图

4.4.3电路其他说明

当总线空弦时,控制信号应该为低电平,使 485 收发器芯片处于接收状态。

如果 A 和 B 都处于高阻,其状态是不确定的,可能会导致 RX 上接收到错误的随机数。
所以这个电路中 A 信号一般加上拉电阻,B 信号一般加下拉电阻。

A 和 B 之间的 120 欧电阻的作用是消除 485 总线上的信号反射,一般在 485 总线的两端加就可以了,不用每个设备节点都加。

4.4.4改进电路

上面的电路,除了需要 UART 的串口的 TX 和 RX 信号外,还需要一个额外的控制信号,下图电路是在上面电路的基础上进行改进的一个电路是 485 的自动收发电路,不需要控制信号就可以完成 485 信号的发送和接收。

与上面电路有所不同的是DI 是接到一个固定的低电平, \overline{RE} 和 DE 信号接到一起,由 TX 控制其电平。 

  1. TX 为高电平时, \overline{RE} 和 DE 为低电平。
  2. TX 为低电平时, \overline{RE} 和 DE 为高电平。

详细过程如下:

(1)TX 发送数据

  1. 当 TX 为低电平, \overline{RE} 和 DE 就为高电平,发射使能。
    RX 为一个高阻状态, RX 的电平由外部上下拉电阻决定,一般 RX 为高电平。
    发送输入引角 DI 是接到一个低电平的,所以输出端 A 的电压小于 B 的电压,也就是输出了 485 的逻辑0。
  2. 当 TX 为高电平, \overline{RE} 和 DE 就为低电平,接收使能。
    RX 是高电平,A 和 B 本来应该是高阻的状态,又因为 A 有上拉电阻, B 有下拉电阻,所以 A 的电压大于 B 的电压,也就是输出了 485 的逻辑一。

(2)TX 接收数据

TX 不发送数据时会默认为高电平, \overline{RE} 和 DE 就为低电平,接收使能。

  1. 当 485 总线上 A 的电压减B 的电压大于 200 mV时, RX 为高电平。
  2. 当 485 总线上 A 的电压减 B的电压小于- 200 mV时,RX 为低电平。

4.4.5电路其他说明

对于 485 接口的 ESD 和浪涌防护,一般会在信号线上加 TVS 管,然后也可以在信号线上加自恢复保险丝。

五、陈氏总结(H冠名)

疑问:为什么两个需要相互通信的单片机都有分别对应的RX,TX管脚,不能直接像下图那样连接,却还是要通过IIC、SPI、RS232、RS485等通信协议来进行通信?

回答:在现实中单片机之间的通信距离需要很远,如果直接用线连接两个单片机,由单片机1 输出的3.3v经过长长的导线到单片机到单片机2可能就只剩1.2v,恰好单片机2的电平判断为:1.3V以下的电平为低电平,那么在信息传输过程中就出现错误。并且两根导线中的一根受到干扰后,信号也会产生错误,

但是使用IIC、SPI、RS232、RS485等通信协议,有的添加了应答机制,有的高低信号差距很大,有的采用差分走线,提高了抗干扰能力,增加通信距离。

六、USB转串口通信

现在可使用 USB 转 UART 技术取代了 RS232 串口,绝大多数笔记本电脑已经没有串口这个东西了,那我们要实现单片机和电脑之间的通信该怎么办呢?

只需要在电路上添加一个 USB 转串口芯片,就可以成功实现 USB 通信协议和标准 UART 串行通信协议的转换,在我们的开发板上,我们使用的是 CH340T 这个芯片,如图下图所示。

右侧的 CH340T 这个电路很简单,把电源、晶振接好后,6 脚和 7 脚的 DP 和 DM 分别接 USB 口的 2 个数据引脚上去,3 脚和 4 脚通过跳线接到了我们单片机的 TXD 和 RXD 上去。


本文参考:

01、UART串口通信-CSDN博客

串口通信协议RS232_rs232协议-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值