串口通信的半双工与全双工工作模式详解
最编程
2024-07-20 11:21:08
...
怎么这么多人认为485是半双工?大家能不能看一下具体的定义啊?!不要认为我们经常使用485的半双工方式就认为485是半双工的。485、422、232都是全双工的。但是实际使用过程中我们一直是把485设计成半双工使用。其实485类似422,只不过在个别参数上比422更加灵活,也就是说485可以兼容422(一般情况下),但反过来就不一定了。485如果接成四线就是全双工,如果把输入和输出并接,并且只接两条线那么就是半双工的了。因为实际使用半双工的比较多。另外好多芯片内部就把输入和输出并接了。
半双工:使用同一根线传输,既可发送又可以接收数据,但不能同时发送和接收。
全双工:分别由两根同时发送和接收传送,双方都可以在同一时刻进行发送和接收。
RS485 半双工接法为:RX+ 和TX+ 并联为Data+;RX- 和TX- 并联为Data-。
RS485 全双工接法为:FULL 和GND 短接;信号线为RX+,TX+,RX-,TX-,可根据需要连接GND。
232:......
http://baike.baidu.com/view/1154433.htm
以前弄过一段时间串行通信,翻过一些读物,我看到的情况大概是这样:
RS232,RS422,RS485是电气标准,就是逻辑是如何表示的。
RS232使用12V,0,-12V电压来表示逻辑,(好象-12V表示逻辑1,12V表示逻辑0),全双工,最少3条通信线(RX,TX,GND),因为使用绝对电压表示逻辑,由于干扰,导线电阻等原因,通讯距离不远,低速时几十米也是可以的。
RS422,在RS232后推出,使用TLL差动电平表示逻辑,就是两根的电压差表示逻辑,RS422定义为全双工的,所以最少要4根通信线(一般要还要多拉一根地线),一个驱动器可以驱动(最多)10个接收器,通讯距离与通讯速率有关系,一般距离短时可以使用高速率进行通信,速率低时可以进行较远距离通信,一般可达数百上千米。
RS485,在RS422后推出,绝大部分继承了422,主要的差别是RS485可以是半双工的,而且一个驱动器的驱动能力至少可以驱动32个接收器,当使用阻抗更高的接收器时可以驱动更多的接收器。所以现在大多数全双工485驱动/接收器对都是标:RS422/485的,因为全双工RS485的驱动/接收器对一定可以用在RS422网络。
很多人都认为全双工的是422,半双工的是485,我不知道依据是什么(要不是他们错了就是我看到《串行端口大全》的作者Jan Axelson错了)。
串行通信,同步串行与异步串行
串行通信就是数据位按时间顺序一位一位地发送接收,其中同步串行通信数据的传输必须包含数据信号和时钟信号,例如I2C,SPI等都有时钟信号,所以一般速率高但通信距离短,甚至就是板内或板间通信。异步串行通信不包含时钟信号,如何理解一个数据位是靠双方预先协商,例如使用9600B的速率就定了一位数据的时间大概是100来us,再定一个法则就可以进行通信了,例如要起始通信,用一个0表示,然后就是n位数据,再就是校验,停止之类表示一个完整数据帧,一般PC的232接口和MCU的UART都遵循兼容的法则,只要你决定如何使用就好了。
多说一句:我是做软件的,对硬件只希望能正确了解,知道其工作原理就行,所以不深究,最好有明白人详细指明/正确或错误。
半双工:使用同一根线传输,既可发送又可以接收数据,但不能同时发送和接收。
全双工:分别由两根同时发送和接收传送,双方都可以在同一时刻进行发送和接收。
RS485 半双工接法为:RX+ 和TX+ 并联为Data+;RX- 和TX- 并联为Data-。
RS485 全双工接法为:FULL 和GND 短接;信号线为RX+,TX+,RX-,TX-,可根据需要连接GND。
232:......
http://baike.baidu.com/view/1154433.htm
以前弄过一段时间串行通信,翻过一些读物,我看到的情况大概是这样:
RS232,RS422,RS485是电气标准,就是逻辑是如何表示的。
RS232使用12V,0,-12V电压来表示逻辑,(好象-12V表示逻辑1,12V表示逻辑0),全双工,最少3条通信线(RX,TX,GND),因为使用绝对电压表示逻辑,由于干扰,导线电阻等原因,通讯距离不远,低速时几十米也是可以的。
RS422,在RS232后推出,使用TLL差动电平表示逻辑,就是两根的电压差表示逻辑,RS422定义为全双工的,所以最少要4根通信线(一般要还要多拉一根地线),一个驱动器可以驱动(最多)10个接收器,通讯距离与通讯速率有关系,一般距离短时可以使用高速率进行通信,速率低时可以进行较远距离通信,一般可达数百上千米。
RS485,在RS422后推出,绝大部分继承了422,主要的差别是RS485可以是半双工的,而且一个驱动器的驱动能力至少可以驱动32个接收器,当使用阻抗更高的接收器时可以驱动更多的接收器。所以现在大多数全双工485驱动/接收器对都是标:RS422/485的,因为全双工RS485的驱动/接收器对一定可以用在RS422网络。
很多人都认为全双工的是422,半双工的是485,我不知道依据是什么(要不是他们错了就是我看到《串行端口大全》的作者Jan Axelson错了)。
串行通信,同步串行与异步串行
串行通信就是数据位按时间顺序一位一位地发送接收,其中同步串行通信数据的传输必须包含数据信号和时钟信号,例如I2C,SPI等都有时钟信号,所以一般速率高但通信距离短,甚至就是板内或板间通信。异步串行通信不包含时钟信号,如何理解一个数据位是靠双方预先协商,例如使用9600B的速率就定了一位数据的时间大概是100来us,再定一个法则就可以进行通信了,例如要起始通信,用一个0表示,然后就是n位数据,再就是校验,停止之类表示一个完整数据帧,一般PC的232接口和MCU的UART都遵循兼容的法则,只要你决定如何使用就好了。
多说一句:我是做软件的,对硬件只希望能正确了解,知道其工作原理就行,所以不深究,最好有明白人详细指明/正确或错误。
推荐阅读
-
【2022新手指南】Java编程进阶之路 - 六、技术架构篇 ### MySQL索引底层解析与优化实战 - 你会讲解MySQL索引的数据结构吗?性能调优技巧知多少? - Redis深度揭秘:你知道多少?从基础到哨兵、主从复制全梳理 - Redis持久化及哨兵模式详解,还有集群搭建和Leader选举黑箱打开 - Zookeeper是个啥?特性和应用场景大公开 - ZooKeeper集群搭建攻略及 Leader选举、读写一致性、共享锁实现细节 - 探究ZooKeeper中的Leader选举机制及其在分布式环境中的作用 - Zab协议深入剖析:原理、功能与在Zookeeper中的核心地位 - RabbitMQ全方位解读:工作模式、消费限流、可靠投递与配置策略 - 设计者视角:RabbitMQ过期时间、死信队列与延时队列实践指南 - RocketMQ特性和应用场景揭示:理解其精髓与差异化优势 - Kafka详细介绍:特性及广泛应用于实时数据处理的场景解析 - ElasticSearch实力揭秘:特性概述与作为搜索引擎的广泛应用 - MongoDB认知升级:非关系型数据库的优势阐述,安装与使用实战教学 - BIO/NIO/AIO网络模型对比:掌握它们的区别与在网络编程中的实际应用 - Netty带你飞:理解其超快速度背后的秘密,包括线程模型分析 - 网络通信黑科技:Netty编解码原理与常用编解码器的应用,Protostuff实战演示 - 解密Netty粘包与拆包现象,怎样有效应对这一常见问题 - 自定义Netty心跳检测机制,轻松调整检测间隔时间的艺术 - Dubbo轻骑兵介绍:核心特性概览,服务降级实战与其实现益处 - Dubbo三大神器解读:本地存根与本地伪装的实战运用与优势呈现 ----------------------- 七、结语与回顾
-
理解移动通信:4G与5G专题 - 麦克风层详解:上行调度的工作机制、步骤与算法解析
-
网络术语详解:半双工与全双工通信的区别
-
单向通信、双向通信与半双工通信的差异详解
-
全双工与半双工通信的差异解析
-
理解通信方式的区别:单工、半双工与全双工详解" - 单工就像在打电话时只能听见对方却说不了话,信息只能由一方传递给另一方。 - 半双工则像马路限行,同一时间只能一辆车通过,发送和接收轮流进行,比如老式对讲机或早期集线器的工作模式。 - 全双工就像在对话中能边说边听,双方都能同时发送和接收数据,现代网卡大多支持全双工,且其使用的电缆比半双工多一根,能提供更快的数据传输速率。 总结来说,数据通信中有3种主要类型: 1. **单工** - 信息只能单向流动,如传呼机; 2. **半双工** - 可双向传输但一次只能一方讲话,如对讲机,需通过切换实现双向通信; 3. **全双工** - 实现真正的双向同时通信,无需切换,如电话,每端均有独立发送和接收功能。
-
详解三种通信方式:单向通信、半双工与全双工的区别(超全面解析)
-
单向、半双工与全双工通信方式的对比详解
-
理解网络通信:半双工与全双工的工作原理详解
-
半双工与全双工通信的简单解释:你知道它们的区别吗?