BMS系统专栏:彻底搞懂!UART、RS232、RS485 三者区别
🎬渡水无言:个人主页渡水无言
❄专栏传送门:《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》
❄专栏传送门:《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏》
❄专栏传送门:《产品测评专栏》 《Ai智能体专栏) 《ROS开发专栏》
⭐️流水不争先,争的是滔滔不绝📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生
| 省级优秀毕业生获得者 | csdn新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生
在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连
目录
前言
一、UART-TTL 串口通信核心基础知识
1.1 物理层连接规则
1.2 数据帧格式
1.3 波特率
1.4、优缺点
二、RS232通信
1.1 物理层连接规则
1.2、数据帧格式
1.3、优缺点
三、RS485 通信
3.1、RS485通信连接方式
3.2、RS485数据帧格式
四、三者横向对比汇总表
总结
前言
在嵌入式开发中,UART (TTL 串口)、RS232、RS485 都共用同一套UART 异步串口帧协议(起始位 + 数据位 + 停止位),三者软件协议一模一样,只有底层电气电平、传输架构不同,这也是初学者最容易混淆的点。本文分层拆解三种通信原理,横向对比优缺点。
一、UART-TTL 串口通信核心基础知识
1.1 物理层连接规则
串口(UART/USART)通信是单片机与外设、电脑通信最常用的方式,UART 只定义时序协议,不规定电气电平标准,单片机默认 TTL 电平:
逻辑 1:高电平(3.3V/5V)。
逻辑 0:低电平(0V)。
核心是通过两根线(Tx/Rx)实现异步数据传输:
Tx(Transmit):发送引脚,负责向外输出数据;
Rx(Receive):接收引脚,负责接收外部数据;
仅点对点:设备 A 的 Tx ↔ 设备 B 的 Rx,设备 A 的 Rx ↔ 设备 B 的 Tx(必须交叉,否则数据收不到)。无法挂载多个从设备。
具体连线如下图所示:
1.2 数据帧格式
串口传输的数据不是裸数据,而是按固定格式打包的 "帧",如下图所示:
常用的四种数据帧格式(打绿勾的更常用):
起始位:1 位低电平,标记数据开始;
数据位:8/9 位(8 位最常用),实际要传输的有效数据;
校验位(可选):奇校验 / 偶校验 / 无校验,用于验证数据传输是否出错;奇校验:整个帧中 "1" 的个数必须是奇数(不足则校验位补 1);
偶校验:整个帧中 "1" 的个数必须是偶数;
示例:传输10101010(4 个 1),奇校验会自动补 1,使总 1 的个数为 5(奇数);若传输中数据变为10111010(5 个 1),校验位仍为 1,总个数 6(偶数),校验失败,判定数据出错。
1.3 波特率
波特率越高,数据的传输速度越快
波特率 = 每秒传输的二进制位数 如下图所示:
1.4、优缺点
优点:电路最简单,单片机外设自带控制器,编程最简;
缺点:
单端信号传输,抗干扰极差,容易受电机、电源电磁干扰;
传输距离极短,仅限同 PCB 板内、几米以内短距离;
无统一硬件接口标准,设备对接兼容性差;
只能点对点,不支持一主多从组网。
适用场景
芯片间板内通信、单片机与蓝牙 / WIFI 模块短距离通信、调试打印。
二、RS232通信
1.1 物理层连接规则
连线方式:点对点接线,RXD、TXD、GND 三线连接,同样不支持多设备总线挂载。如下图所示:
RS232的通信方式是在串口通信的基础上,增加一个232转换芯片。
将TTL电平转换成232电平进行通信。如下图所示:
1.2、数据帧格式
帧格式完全沿用 UART,仅电平标准重新定义,在串口通信中,一般将+5V视为逻辑”1“,将0V视为逻辑”0“,经过232转换芯片将TTL电平转换为232电平后,可将+12V视为逻辑”1“,将-12V视为逻辑”0“。
逻辑 0:-3V~-15V(常规 - 12V)
逻辑 1:+3V~+15V(常规 + 12V)
如下图所示:
232电平相比于TTL电平,抗干扰能力增强,即使干扰信号会使电平发生波动,但它的高低电平仍有较大的改变余量。通信如下图所示:
1.3、优缺点
优点:电平压差大,抗干扰优于 TTL 串口,通信距离相比UART有所提升,极限传输达到15m。
缺点:
±12V 高压容易击穿 3.3V 单片机外设;
单端共地传输,共模干扰无法抑制,极限传输距离仅 15m;
只能点对点,不能总线组网。
三、RS485 通信
为了解决串口通信及RS232通信所存在的问题,又提出了RS485协议。因RS-485接口具有良好的抗噪声干扰性,传输距离长和多站能力等上述优点就使其成为首选的串行接口。因为RS485接口组成的半双工网络一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。
3.1、RS485通信连接方式
RS485=UART 协议 + TTL 转差分电平,软件串口协议不变,核心革新:差分信号传输。
485转换芯片可以把串口TTL信号转换成差分信号,也可以反向把差分信号转换成串口TTL信号
依靠 A、B 两根线的电压差值判断逻辑:
A>B,压差 - 2V~-6V → 逻辑 0
A<B,压差 + 2V~+6V → 逻辑 1
外界干扰会同等叠加在 A、B 双线上,差值不受干扰影响,从硬件根源抑制共模干扰。
AB线采用双绞线的方式,这样外界干扰会同等叠加在 A、B 双线上,差值不受干扰影响,从硬件根源抑制共模干扰。
并且硬件为半双工:A/B 总线共用收发,同一时刻只能收 / 只能发。这样便能实现总线型一主多从拓扑,如下图所示:
3.2、RS485数据帧格式
RS485也是基于串口的,帧格式与串口的相同。与串口和RS232只是电气的特性不同,软件的编程都是差不多的。如下图所示:
四、三者横向对比汇总表
| 通信方式 | 电平类型 | 传输方式 | 最大距离 | 拓扑结构 | 抗干扰 |
|---|---|---|---|---|---|
| UART-TTL | 3.3V/5V 单端 | 单端对地 | 几米 | 点对点 | 很差 |
| RS232 | ±12V 单端 | 单端对地 | 15m | 点对点 | 一般 |
| RS485 | 差分电压 (A/B 差值) | 双线差分 | 1200m | 一主多从总线 | 优秀 |
总结
本期博客对UART、RS232、RS485三种通信协议进行了完整的介绍。
