[通讯方式] 串口通信

简介: [通讯方式] 串口通信

一. 前言

1、什么是通信?
  1. 发送方按照信息编码方式对有效信息进行编码(编成可以在通信线路上传输的信号形态);
  2. 编码后的信息在传输介质上进行传输,输送给接收方;
  3. 接收方接到编码信息后进行解码,解码后得到可以理解的有效信息

可以理解为收发快递:卖家打包快递(编码)—— 快递小哥+运输车(传输介质)将打包好的快递给到买家手中 —— 买家拆开快递(解码),最终得到物品(有效信息)。

2、同步通信和异步通信

同步还是异步就看发送方和接收方的时钟频率是否一致:

  • [√] 同步通信:接收端发送端时钟信号频率一致,其发送端发送连续的比特流
  • [×] 异步通信:以字符为单位进行传输,接收端发送端时钟频率不要求同步,字符之间没有固定的时间间隔要求,但接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。

举个例子:大耳朵图图去牛爷爷家

胡英俊对图图说:

①你自己去牛爷爷家吧,我去上班了,到牛爷爷家了给我打一个电话(异步通信)。

②胡英俊先送图图去牛爷爷家,确认送到牛爷爷家了之后,再去上班(同步通信)。

3、电平信号和差分信号

电平信号和差分信号是用来描述通信线路传输方式的。也就是说如何在通信线路上表示1和0。

电平信号的传输线中有一个参考电平线(一般是GND),然后信号线上的信号值是由信号线电平和参考电平线的电压差决定。电平信号的2根通信线之间的电平差异容易受到干扰,传输容易失败;

差分信号的传输线中没有参考电平线,所有都是信号线,然后1和0的表达靠信号线之间的电压差。差分信号不容易受到干扰,因此传输质量比较稳定。现代通信一般都使用差分信号,电平信号几乎没有了。

在电平信号下,”1根参考电平线+1根信号线“可以传递1位二进制;”1根参考电平线+2根信号线“可以同时发送2位二进制;如果想同时发送8位二进制就需要9根线。

在差分信号下,2根线(彼此差分)可以同时发送1位二进制;如果需要同时发送8位二进制就需要16根线。

总结: 在相同根数的通信线下, 表面上电平信号要比差分信号快;但是实际还是差分信号快,因为差分信号抗干扰能力强, 因此1个发送周期的时间耗时更少.

4、串行接口和并行接口

串行端口被描述为通道,而并行端口则表示有8条通道可同时传输8位(一个字节)的数据。

串行接口:

串行接口,简称串口,也就是COM接口,是采用串行通信协议的扩展接口,数据传输率是115kbps~230kbps。

串行接口是指数据是一位位地顺序传送出去的,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线。降低成本,适用于远距离通信,但传送速度慢

并行接口:

并行接口,简称并口,也就是LPT接口,是采用并行通信协议的扩展接口。并口的数据传输率比串口快8倍,标准并口的数据传输率为1Mbps。

并行接口是指数据通过多条数据线同时传输出去,其特点是传输速度快(1Mbps),但当传输距离远、位数又多时,导致通信线路复杂且成本提高

速度差异:

通俗点讲,串口就像只有一条车道,而并口就是有8个车道,同一时刻能传送8位(一个字节数据)。但是并不是并口快,由于8位通道之间的互相干扰。传输速度就受到了限制。而且传输出错时,要同时重新传送8个位的数据。串口没有干扰,传输出错后重发以为就可以了。所以串口比并口快。串口硬盘就是这样被重视的,没有谁希望自己的机箱里出现一根胳膊粗的线束。

历史上,工程师们确实是先做了串口,速度不够没办法只好含泪加电线上并口,直到他们发现了三大法宝(差分信号,时钟-数据恢复,和信道均一化)来提速,并口的动力就不那么强劲了。摘自:知乎:为什么串口比并口快?

总结: 经过这么多年的发展,最终胜出的是: 异步、差分、串行, 譬如USB和网络通信。


二. 串口通信的基本概念

1、串口通信特点(异步、差分、串行通信)

(1)异步

串口通信的发送方和接收方之间没有统一的时钟信号,在异步通信中,收发双方取得同步是通过在字符格式中设置起始位和停止位的方法来实现,具体来说就是,在一个有效字符正式发送之前,发送器先发送一个起始位,然后在发送有效字符位,在字符结束时在发送一个停止位。

(2)差分信号

串口通信出现的时间较早、速率较低、传输的距离较近,所有干扰不太明显,因此当时使用了电平信号传输。后期出现的传输协议都改成了差分信号传输了。

(3)串行通信

将数据按位(bit)依次传输, 每位数据占据固定的时间长度,即可使用少数几条通信线路就可以完成系统间交换信息

ps:注意区分串行通信和串口通信:

  • 串行通信是通信双方按位(bit)进行,遵守时序的一种通讯方式;
  • 串口通信是一种通信手段,对标于以太网方式、红外方式、蓝牙方式等通信手段而言。

常用的串口接头有两种,一种是9针串口(简称DB-9),一种是25针串口(简称DB-25)。每种接头都有公头和母头之分,其中带针状的接头是公头,而带孔状的接头是母头。9针串口的外观如图2所示。

在9针串口接头中,公头和母头的管脚定义顺序是不一样,这一点需要特别注意。那么,这些管脚都有什么作用呢?9针串口和25针串口常用管脚的功能说明如图所示:

典型的串口通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,所以端口能够在一根线上发送数据同时在另一根线上接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶的校验。对于两个需要进行串口通信的端口,这些参数必须匹配,这也是能够实现串口通讯的前提。

2、波特率

波特率指的是串口通信的速率,也就是串口通信时每秒钟可以传输的数据位数(多少个二进制位 / 秒),譬如,每秒钟可以传输9600个二进制位(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600。

波特率不能随意指定,主要是因为:通信双方必须事先设定相同的波特率才能成功通信,如果发送方和接收方按照不同的波特率通信则根本收不到,因此波特率最好是大家熟知的而不是随意指定的;常用的波特率经过长久发展,就形成了共识,大家常用的就是9600或者115200。

可以将波特率比喻为两个特工的联络暗号,只有联络暗号正确,才能进行后续信息的传送。


3、起始位、数据位、奇偶校验位、停止位

串口通信时,收发是一个周期一个周期进行的,每个周期传输n个二进制位。这一个周期就叫做一个通信单元,一个通信单元由:起始位+数据位+奇偶校验位+停止位组成的。

起始位: 就是数据开始的标志,由0开始,即低电平开始。

数据位: 是一个通信单元中发送的有效信息位,是本次通信真正要发送的有效数据,串口通信一次发送多少位有效数据是可以设定的(可以是5,7,8位三种,通常选择8位数据位,因为一般通过串口发送的文字信息都是ASCII码编码,而ASCII码中一个字符刚好编码为8位)。

奇偶校验位: 是用来校验数据传输过程中的数据位,以防止数据位出错的。

停止位: 是发送方用来表示本通信单元结束标志的,停止位的定义是串口通信标准事先指定的,是由通信线上的电平变化来反映的。常见的有1位停止位、1.5位停止位、2位停止位等,一般使用的是1位停止位。

总结:

串口通信时因为是异步通信,所以通信双方必须事先约定好通信参数,这些通信参数包括:波特率、数据位、校验位、停止位(串口通信中起始位定义是唯一的,所以一般不用选择)。

4、单工、半双工和全双工

在通信中,相信大家也经常听说单工模式和双工模式,这是不同的通讯方式:

  • 单工模式:单方向收发数据,固定一方为发送端,一方为接收端。譬如,只能“A发送数据,B接收数据”。
  • 半双工模式(RS485):双方分时收发数据,譬如,“A发送数据,B接收数据”或者“A接收数据,B发送数据”,两个方向不能同时进行。
  • 全双功模式(RS232):双方同时收发数据,譬如,“A发送数据,B接收数据”同时“A接收数据,B发送数据”,两个方向同时进行。

总结:

半单工模式(RS485) 既可以使用一根数据线,又可以使用两根数据线,但是在切换数据传输方向时传输会有一些延时,故信息传输效率慢一些。全双工是两个单工通信的结合,参数一样的情况下,传输速度要比半双工高一些

目录
相关文章
数据通信方式
数据通信方式。
196 2
|
测试技术
西门子S7-200 SMART自由口通信,如何编写发送程序,使用超级终端发送测试
今天我们学习编写西门子S7-200 SMART自由口通信的发送程序,并使用超级终端进行发送功能测试。首先设置参数,打开STEP7 Micro/WIN SMART编程软件,右键单击项目树中的CPU,选择打开,在打开的系统块中选择CPU类型和信号板类型。设置信号板,串口的类型为RS232,地址为2,波特率为9600。
西门子S7-200 SMART自由口通信,如何编写发送程序,使用超级终端发送测试
|
1月前
【通信协议讲解】单片机基础重点通信协议解析与总结之串口通信(三)
【通信协议讲解】单片机基础重点通信协议解析与总结之串口通信(三)
|
1月前
|
网络协议 数据格式
【通信协议讲解】单片机基础重点通信协议解析与总结之ModBus(五)
【通信协议讲解】单片机基础重点通信协议解析与总结之ModBus(五)
|
1月前
【通信协议讲解】单片机基础重点通信协议解析与总结之IIC(一)
【通信协议讲解】单片机基础重点通信协议解析与总结之IIC(一)
|
4月前
|
安全 数据处理
LabVIEW与PLC通讯方式及比较
LabVIEW与PLC通讯方式及比较
71 0
|
4月前
|
安全 数据格式
LabVIEW与PMAC直接通讯控制,需要注意哪些问题
LabVIEW与PMAC直接通讯控制,需要注意哪些问题
58 0
|
4月前
|
数据采集 网络协议 数据处理
LabVIEW中实现Trio控制器的以太网通讯
LabVIEW中实现Trio控制器的以太网通讯
33 0
|
6月前
|
监控 物联网 Linux
python测试串口最大通信速率
【4月更文挑战第5天】
154 3
|
6月前
|
Java
java实现上位机与西门子PLC的通讯设置
这段代码创建了一个ZCAN_Transmit_Data数组,初始化并设置了数组中的第一个元素,包括写入数据、传输类型为1。然后,创建了一个ZCAN_CAN_FRAME对象,指定了CAN_ID和数据长度为8,并将十六进制字符串转换为字节数组填充到数据字段。将这个帧赋值给ZCAN_Transmit_Data对象。最后通过ZLGCAN接口发送数据,如果返回值不等于1,则抛出异常,否则返回发送结果。
260 0