串口通信接口标准 RS232/422/485
串口通信接口标准
RS232、RS422、R485
目录
串口通信接口标准 4
1 RS232 4
1.1 引言 4
1.2 协议原理 4
1.3 电平标准 5
1.4 应用场景 5
1.5 优缺点 6
1.5.1 优点 6
1.5.2 缺点 6
2 RS422 7
2.1 背景介绍 7
2.2 协议原理 7
2.2.1 差分信号传输 7
2.2.2 电平标准 8
2.3 应用场景 8
3 RS485 9
3.1 发展背景 9
3.2 协议原理 9
3.3 电平标准 9
3.4 应用场景 10
4 总结 10
图 1 RS232通信协议数据帧 4
图 2 RS232 9线引脚图 4
图 3 RS232传输示意图 5
图 4 RS232应用场景 6
图 5 差分传输示意图 7
图 6 RS422接线示意图 8
图 7 RS485接线示意图 9
RS232
引言
RS232(Recommended Standard 232)是电子工业协会(EIA)在1960年代早期制定的一种串行通信接口标准,旨在规范数据终端设备(DTE)与数据通信设备(DCE)之间的连接和通信方式。RS232经历了多个版本的迭代和发展,最著名的版本之一是RS-232C,成为了广泛接受的标准。
协议原理
RS232工作原理基于异步串行通信,数据以比特(bit)的形式逐位传输。RS232标准定义了25根线,通常通过DB25接口连接。然而,在实际应用中,更常见的是使用DB9串口接头,其中仅需3条至9条信号线(了解)即可实现全双工通信。特别是,仅需三条基本信号线:接收线(RXD)、发送线(TXD)和地线(GND),就能完成简单的全双工通信过程。
如图1所示,其数据传输的过程包括起始位、数据位(5~8)、奇偶校验位和停止位。


数据终端准备好(DTR):DTR信号用于指示数据终端设备(如计算机)已准备好进行通信。
数据设备准备好(DSR):DSR信号用于指示数据通信设备(如调制解调器)已准备好进行通信。
请求发送(RTS):RTS信号用于请求发送数据。它由数据终端设备发送,表示它希望发送数据。
清除发送(CTS):CTS信号用于清除发送数据。它由数据通信设备发送,表示它已准备好接收数据。
数据载波检测(DCD):DCD信号用于检测数据载波。它由数据通信设备发送,表示它已检测到数据载波。
发送数据(TXD):TXD信号用于发送数据。它由数据终端设备发送,表示实际的数据流。
接收数据(RXD):RXD信号用于接收数据。它由数据通信设备接收,表示实际的数据流。
振铃指示引脚(RI):它的主要作用是当调制解调器接收到电话线路的振铃信号时,RI引脚会被激活,向连接的设备(如计算机)发出信号,表示有电话呼叫进来
电平标准
RS232使用电压水平来表示二进制数据。逻辑“1”通常由负电压表示(范围大约是-3V到-15V),而逻辑“0”则由正电压表示(范围大约是+3V到+15V)。这种表示方式被称为单端信号,如下图所示。

应用场景
RS-232协议在多个领域有广泛应用,以下是一些常见的应用场景:
- 计算机与调制解调器通信:这是RS-232协议最初的应用场景。通过RS-232接口,计算机可以与调制解调器通信,实现数据的远程传输。
- 工业自动化:在工业自动化领域,RS-232协议用于连接各种设备,如PLC、传感器、执行器等。它的稳定性和可靠性使其成为工业通信的首选。
- 医疗设备:医疗设备对数据传输的可靠性要求极高,RS-232协议在医疗设备之间的数据传输中得到了广泛应用,如心电图机、血压计等。
- 消费电子:在消费电子领域,RS-232协议用于连接各种设备,如电视、音响、游戏机等。它的简单性和兼容性使其成为消费电子通信的理想选择。
- 嵌入式系统开发:在嵌入式系统开发中,RS-232协议用于调试和通信。开发者可以通过RS-232接口与嵌入式设备通信,进行调试和数据传输。

优缺点
优点
- 简单易用:RS-232协议的工作原理简单,易于理解和实现。它的硬件和软件实现都相对简单,适合初学者和小型项目。
- 低成本:RS-232接口的硬件成本低,适合大规模生产和应用。它的电路设计简单,制造成本低。
缺点
- RS-232协议的传输速率相对较低,最高仅为115.2kbps。
- RS-232协议的传输距离有限,最长仅为15米。超过这个距离,信号会衰减。
- RS-232协议只支持点对点通信,无法实现多设备之间的通信。
RS422
背景介绍
RS232虽然在短距离内表现良好,但其单端信号传输方式限制了它的有效传输距离,并使其容易受到电磁干扰的影响。RS422标准是在这样的背景下发展起来的,旨在通过使用差分信号传输来提高数据传输的可靠性和距离,同时其传输速度最高可达高达10Mbps的传输速率。差分信号能够更好地抵抗共模噪声,这使得RS422非常适合于工业环境等噪声较大的场合。
协议原理
差分信号传输
RS422采用一对双绞线来传输每个信号,一条用于正相(+),另一条用于反相(-)。当发送逻辑“1”时,正相信号线上的电压会比负相信号高出一个特定值;由于使用差分信号,RS422能够有效地抵抗共模干扰,即两条线路上同时受到相同方向的干扰信号影响时,接收器只关心两者之间的电压差异,从而减少甚至消除这种干扰对信号的影响,因此其传输距离最高可达1200 m。

RS422协议通常是一个四线制接口标准,设计用于支持全双工通信。这意味着它使用四根导线来完成数据的发送和接收:两根用于发送(Tx+ 、 Tx-)和两根用于接收(Rx+ 、 Rx-)。S422最常以四线制的形式出现,用于实现全双工通信,但在某些特定的应用场景中,也可以配置为二线制以实现半双工通信,即通过同一对差分线进行数据的发送和接收,但不能同时进行,但此方式不常见。

电平标准
在RS422中,逻辑状态通过一对导线上的电压差来表示。对于逻辑“1”(标记),正相(A或D+)线上的电压相对于负相(B或D-)线上的电压更高;而对于逻辑“0”(空格),情况则相反。理想情况下,当发送逻辑“1”时,正相线路相对于负相线路会有+5V到+12V的电压差;发送逻辑“0”时,则为-5V到-12V的电压差。
为了防止信号反射和保证信号完整性,RS422通信链路通常需要在接收端添加匹配的终端电阻。在点对点连接中,终端电阻通常只在接收端添加;
应用场景
- 工业自动:PLC通信:西门子S7系列PLC通过RS-422连接HMI(人机界面)。传感器网络:高精度温度/压力传感器在嘈杂工业环境中传输数据。
- 专业音视频设备:广播系统:专业摄像机与导播台间传输未压缩视频信号(如SMPTE 292M)。舞台灯光控制:DMX512协议基于RS-422控制灯光设备。
- 航空航天与国防:机载通信:飞机航电系统(如黑匣子数据记录器)通过RS-422传输关键数据。雷达系统:雷达信号处理单元与显示终端的长距离连接。
- 医疗设备:医学成像:MRI或CT设备传输高分辨率图像数据至工作站。患者监护仪:多参数监护仪与中央监控系统实时通信。
- 安防与监控:视频监控:CCTV摄像头通过RS-422传输云台控制信号(PTZ控制)。门禁系统:长距离读卡器与主控板通信。
RS485
发展背景
RS232的最大传输距离通常只有15米,而工业场景中设备可能分散在较大的区域内,需要更长的通信距离。RS485通过差分信号传输,支持最长1200米的通信距离和高达10 Mbps的数据传输速率。RS232接口在总线上只允许连接一个收发器,而RS485支持多设备连接,最多可连接128个甚至更多的设备,这使得RS485非常适合构建设备网络。
协议原理
由于RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信。而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进, 无论四线还是二线连接方式总线上可多接到32个设备。

电平标准
RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12k,RS-422是4k。RS-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中应用。
逻辑1(正逻辑电平):当A线相对于B线的电压为正值时,即A-B > +200mV,这代表一个逻辑高电平(逻辑1)。在实际应用中,这个值通常是+2V到+6V之间。
逻辑0(负逻辑电平):当A线相对于B线的电压为负值时,即A-B < -200mV,这代表一个逻辑低电平(逻辑0)。在实际应用中,这个值通常是-2V到-6V之间
在长距离传输时,为了减少信号反射,通常会在RS485网络的两端添加120欧姆的终端电阻。这是因为RS485电缆的特性阻抗一般为120Ω
应用场景
适用于多主机/驱动器工业环境。其典型应用与RS-422相似,包括:过程自动化(化工、酿造、造纸)、工厂自动化(汽车制造、金属加工)、HVAC、安防、电机控制、运动控制。
总结
RS-232、RS-422和RS-485电气参数对比如下表所示:
表 1 RS-232、RS-422和RS-485电气参数对比表
| RS232 | RS422 | R485 | |
| 工作方式 | 单端 | 差分 | 差分 |
| 节点数 | 1收、1发 | 1发10收 | 1发32收 |
| 最大传输电缆长度 | 50英尺 | 4000英尺 | 4000英尺 |
| 最大传输速率 | 20Kb/s | 10Mb/s | 10Mb/s |
| 最大驱动输出电压 | ±25V | -0.25V~+6V | -7V~+12V |
| 驱动器输出信号电平(负 载最小值) | +5V~±15V | ±2.0V | +1.5V |
| 驱动器输出信号电平(空 载最大值) | 土25V | +6V | ±6V |
| 驱动器负载阻抗 | 3K~7K2 | 1002 | 542 |
| 摆率(最大值) | 30V/μs | N/A | N/A |
| 接收器输入电压范围 | ±15V | -10V~+10V | -7V~+12V |
| 接收器输入门限 | +3V | +200mV | ±200mV |
| 接收器输入电阻 | 3K~7K2 | 4K2(最小) | 212K0 |
| 驱动器共模电压 | N/A | 3V~+3V | -1V~+3V |
| 接收器共模电压 | N/A | 7V~+7V | -7V~+12V |
RS-232、RS-422和RS-485电平对比:
| 发送电平 | 接收电平 | 备注 | |
| RS-232 | 逻辑1=-5~-15V 逻辑0=+5~+15V | 逻辑1=-3~-12V逻辑0=+3~+12V | 负逻辑 |
| RS-422 | 逻辑1=+2~+6V 逻辑0=-2~-6V | 逻辑1=AB之间大于+200mV 逻辑0=AB之间小于-200mV | 正逻辑 |
| RS-485 | 逻辑1=+2~+6V 逻辑0=-2~-6V | 逻辑1=AB之间大于+200mV 逻辑0=AB之间小于-200mV | 正逻辑 |
相关文章:
串口通信接口标准 RS232/422/485
串口通信接口标准 RS232、RS422、R485 目录 串口通信接口标准 4 1 RS232 4 1.1 引言 4 1.2 协议原理 4 1.3 电平标准 5 1.4 应用场景 5 1.5 优缺点 6 1.5.1 优点 6 1.5.2 缺点 6 2 RS422 7 2.1 背景介绍 7 2.2 协议原理 7 2.2.1 差分信号传输 7 2.2.2 电平标准…...
开源链动2+1模式与AI智能名片赋能的S2B2C共享经济新生态
摘要:在数字经济浪潮中,共享经济平台正重塑个体服务者的职业生态。本文基于平台经济理论与创新扩散模型,深入探讨"开源链动21模式"对资源共享效率的革命性提升,解析AI智能名片与S2B2C商城小程序源码的技术赋能机制。通过…...
【论文#目标检测】YOLO9000: Better, Faster, Stronger
目录 摘要1.引言2.更好(Better)3.更快(Faster)4.更健壮(Stronger)使用 WordTree 组合数据集联合分类和检测评估 YOLO9000 5.结论 Author: Joseph Redmon; Ali Farhadi Published in: 2017 IEEE Conference …...
The First Indoor Pathloss Radio Map Prediction Challenge
原文:免费下载 挑战:ICASSP 2025 Chanllenge 摘要:为了鼓励进一步的研究并促进在开发基于深度学习的无线电传播模型时进行公平比较,在室内传播环境中定向无线电信号发射的探索较少的情况下,我们发起了 ICASSP 2025 年首次室内路径损耗无线电地图预测挑战赛。本概述论文介…...
Android系统深度定制:内置Google TTS语音引擎并设为默认的终极指南
一、背景与挑战 在Android 12.0的GMS套件定制化开发中,我们发现原生的文本转语音(TTS)功能存在一个关键问题:Google TTS语音包并非预装组件,导致用户需要手动下载安装后才能使用。本文将通过深度系统定制,…...
dify0.15.3升级至dify1.1.2操作步骤
参考官方文档:https://github.com/langgenius/dify/releases/tag/1.0.0 准备工作 停止docker容器后,首先是备份好现有的 docker-compose.yaml其次,解压 dify-1.1.2.zip,默认解压至 dify-1.1.2,sudo cp -r dify-1.1.2…...
Vue+SpringBoot:整合JasperReport作PDF报表,并解决中文不显示问题
文章目录 一、前言二、后端代码1、pom依赖2、Jaspersoft Studio生成的jasper文件3、main程序测试案例4、解决中文不显示问题5、web接口案例 三、Vue前端代码四、演示效果 一、前言 以前,在流行jdk1.6的时候,作pdf报表,用的软件是iReport。 …...
_DISPATCHER_HEADER结构中的WaitListHead和_KWAIT_BLOCK的关系
第一部分: // // Wait block // // begin_ntddk begin_wdm begin_nthal begin_ntifs begin_ntosp typedef struct _KWAIT_BLOCK { LIST_ENTRY WaitListEntry; struct _KTHREAD *RESTRICTED_POINTER Thread; PVOID Object; struct _KWAIT_BLOCK *R…...
游戏引擎学习第180天
我们将在某个时候替换C标准库函数 今天我们要进行的工作是替换C标准库函数,这是因为目前我们仍然在使用C语言开发,并且在某些情况下会调用C标准库函数,例如一些数学函数和字符串格式化函数,尤其是在调试系统中,我们使…...
在Spring Boot中,可以通过实现一些特定的接口来拓展Starter
在Spring Boot中,开发者可以通过实现一些特定的接口来拓展Starter。这些接口允许开发者自定义Spring Boot应用程序的配置和行为,从而创建功能丰富且易于使用的Starter。以下是一些关键的接口,用于拓展Starter: EnvironmentPostPro…...
C# 属性(Property)详解
在 C# 中,属性(Property) 是类或结构体中的成员,用于封装对私有字段(称为 backing field)的访问,提供更灵活和安全的数据操作方式。属性通过 get 和 set 访问器控制对数据的读写&#x…...
专业级 AI 提示生成工具清单
1. 引言 近年来,随着 GPT-3、GPT-4 等大规模预训练语言模型的广泛应用,提示(Prompt)工程作为驱动模型输出质量的重要环节,受到了各界的高度关注。精心设计、管理与优化提示,不仅能够大幅提高生成文本的准确…...
Gone v2 配置管理4:连接Apollo配置中心
🚀 发现 gone-io/gone:一个优雅的 Go 依赖注入框架!💻 它让您的代码更简洁、更易测试。🔍 框架轻量却功能强大,完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目,请给我们点个星!&a…...
【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署
【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…...
什么是 Ansible Playbook?
一、Ansible Playbook 是什么? Ansible Playbook 是 Ansible 自动化工具的核心组件之一,它是一个以 YAML 格式编写的文件,用于定义一组自动化任务(tasks)。简单来说,Playbook 就像一个“剧本”或“指令清单…...
System.arraycopy 在音视频处理中的应用
在音视频开发领域,我们经常需要处理大量的数据,例如音频 PCM 数据的传输、视频帧的缓存等。在这些场景下,数据的复制与传输往往直接影响到应用的性能。Java 提供的 System.arraycopy 方法,在音视频处理代码中出现频率非常高。本文…...
Flink 自定义数据源:从理论到实践的全方位指南
目录 第一章:自定义数据源的基础概念 数据源是什么?它在 Flink 中扮演什么角色? Flink 的内置数据源:开箱即用的 “标配” 为什么需要自定义数据源?它的杀手锏在哪? 第二章:自定义数据源的实现之道 接口选择:从简单到高级,选对工具事半功倍 SourceFunction:入门…...
java中的常量可以不用在声明的时候初始化,c中的必须在声明的时候初始化,可不可以这么理解?
这种理解不完全正确,下面分别说明 Java 和 C 中常量的初始化情况。 Java 中常量的初始化 在 Java 里,使用 final 关键字定义常量时,常量并非都要在声明时初始化,具体情况如下: 类的静态常量 如果 final 修饰的是类的…...
Dynamics 365 Business Central 财务经常性一般日记帐做帐方法简介
#BC ERP# #Navision# #Recurring General Journal# 在BC ERP中为了方便财务做些经常性的一般日记帐的方法,为了省时省事会用到Recurring General Journal模块是一个好方法。在这里将分别用不同的示例 对经常性日记帐的各种方法做一介绍: 经常性日记帐 …...
数据库误更新操作 如何回滚
1.未提交 直接 rollback 2.已提交 步骤 查询指定时间内修改前数据库数据: -- 查询误操作前的数据(例如 10 分钟前) SELECT * FROM 表名 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL 10 MINUTE) WHERE 条件;-- 将数据恢复(需确保有…...
Mybatis注解的基础操作——02
写mybatis代码的方法有两种: 注解xml方式 本篇就介绍注解的方式 mybatis的操作主要有增删改查,下面进行一一讲解。 目录 一、参数传递 二、增(Insert) 三、删(Delete) 四、改(Update&#…...
在 IntelliJIDEA中实现Spring Boot多实例运行:修改配置与批量启动详解
前言 一、通过 修改配置 实现多实例运行二、通过 批量启动 实现多实例运行三、常见问题及解决方案四、最佳实践与扩展五、总结 在微服务开发中,经常需要同时启动多个服务实例进行测试或模拟集群环境。IntelliJ IDEA 作为Java开发者常用工具,…...
WHAM 人体3d重建部署笔记 vitpose
目录 视频结果: docker安装说明: conda环境安装说明: 依赖项: 依赖库: 安装 mmpose,mmcv vitpose-h-multi-coco.pth 下载地址: 算法原理, demo脚本 报错inference_top_down_pose_model: 测试命令: 视频结果: wham_smpl预测结果 git地址: GitHub - yohans…...
23、web前端开发之html5(四)
十二. HTML5实践示例 前面我们详细讲解了HTML5的特点,包括语义化标签、增强的表单功能、多媒体元素(如<video>和<audio>)、Canvas绘图、SVG集成以及离线存储等。以下是一些详细的HTML5实践示例,展示如何使用HTML5的新…...
S7-1200对V90 PN进行位置控制的三种方法
S7-1200系列PLC通过PROFINET与V90 PN伺服驱动器搭配进行位置控制,实现的方法主要有以下三种: ? 方法一、在PLC中组态位置轴工艺对象,V90使用标准报文3,通过MC_Power、MC_MoveAbsolute等PLC Open标准程序块进行控制, 这种控制方式属于中央控制方式(位置控制在PLC中计算,驱…...
Mongodb分片模式部署
MongoDB 分片集群部署教程 1. 概述 MongoDB 分片是一种用于处理大规模数据集的集群技术。通过分片,MongoDB 可以将数据分布在多个服务器上,从而提高存储容量和读写性能。本教程将详细介绍如何从零开始部署 MongoDB 分片集群。 介绍 分片集群中主要由三…...
ElementPlus 快速入门
目录 前言 为什么要学习 ElementPlus? 正文 步骤 1 创建 一个工程化的vue 项目 2 安装 element-Plus :Form 表单 | Element Plus 1 点击 当前界面的指南 2 点击左边菜单栏上的安装,选择包管理器 3 运行该命令 demo(案例1 ) 步骤 …...
C++输入输出流第二弹:文件输入输出流and字符串输入输出流
目录 文件输入输出流(重点) 文件输入流 文件输入流对象的创建 对测试代码进行解读: 1. 代码核心逻辑 2. 读取过程详解 3. 关键特性总结 4. 注意事项 5. 完整流程示例 这里既然提到了 >> 流,那么就对他进行进一步的…...
Kubernetes集群中部署SonarQube服务
以下是在Kubernetes集群中部署SonarQube服务的分步指南,包含持久化存储、数据库配置和高可用性建议: 1. 前置条件 已部署Kubernetes集群(版本≥1.19)安装kubectl和helm工具配置StorageClass(如NFS、Ceph、EBS等&#…...
深度解析 | Android 12系统级禁用SIM卡功能实现与Framework层定制
一、需求背景与实现原理 在Android系统定制开发中,彻底禁用SIM卡功能是某些行业设备(如安全终端、Kiosk模式设备)的常见需求。不同于常规的SIM卡状态管理,该功能需要实现: 硬件级禁用 - 即使插入SIM卡也无法识别 系统…...
