点对点通信 | 串行通信与并行通信 | 同步通信与异步通信 | 单工与双工(全双工、半双工) | RS232、RS422、RS485、UART、I2C、SPI通信接口协议
1. 并行通信与串行通信
串行通信和并行通信都是一种通信传输方式,都适用于计算机与计算机、计算机与外设之间的数据通信,在传输中存在相互转换的关系。
并行数据通信是以字节(8bit)或字为单位的数据传输方式,需要多根数据线和控制线,在工业通信中很少使用。
串行数据通信是以二进制的位(bit)为单位的数据传输方式,每次只传送一位。串行通信最少只需要两根线就可以连接多台设备,组成控制网络,可用于距离较远的场合。工业控制设备与计算机之间的通信几乎都采用串行通信方式。
两者主要区别如下:
(1)一次传输的传输量不同
并行通信传送八路信号,一次并行传送传送完整的一个字节信息。串行通信在一个方向上只能传送一路信号,一次只能传送一个二进制位,传送一个字节信息时,只能一位一位地依次传送。
(2)传输速度不同
串行的传输速度慢,但是对线路的要求低一些。 并行的对线路的要求高,但是速度快。
(3)传输距离不同
串行线路仅使用一对信号线,线路成本低并且抗干扰能力强,因此可以用在长距离通讯上;而并行线路使用多对信号线(还不包括额外的控制线路),线路成本高并且抗干扰能力差,因此对通讯距离有非常严格的限制。
参考:https://zhidao.baidu.com/question/244693131.html
2. 异步通信与同步通信
在串行通信中,接收方与发送方应使用相同的传输速率,但是实际的发送速率与接收速率之间总是有一些微小的差别,如果不采取措施,在连续传送大量的信息时,将会因为积累误差造成错位,使接收方收到错误的信息。
为了解决这一问题,需要使发送过程和接收过程同步。按同步方式的不同,串行通信分为异步通信和同步通信。
2.1 异步通信
异步通信采用字符同步的方式,其字符信息格式如下图,发送的字符由1个起始位、5~8个数据位、1个奇偶校验位(可以没有)、1或1.5或2个停止位组成。通信双方需要对采用的信息格式和数据的传输速率做相同的约定,即人为设置成相同的格式。
接收方检测到停止位和起始位之间的下降沿后,将它作为接收的起始点,在每一位的中点接收信息,由于字符信息格式只有十位左右,即使发送方和接收方的收发频率略有不同,也不会因为两台设备的时钟周期差异产生的积累误差而导致信息的发送和接收错位。
异步通信传送的附加非有效信息较多,传输效率较低。随着通信速率的提高,可以满足控制系统通信的要求。
奇偶校验用来检测接收到的数据是否出错。如果指定的是偶校验,发送方发送的每一个字符的数据位和奇偶校验位中“1”的个数之和为偶数。即,如果数据位包含偶数个“1”,校验位应为“0”;如果数据位包含奇数个“1”,校验位应为“1”。
接收方对接收到的每一个字符的奇偶性进行校验,可以检验出传送工程中的的错误,也可以设置成无校验位。
在串行通信中,传输速率(又称波特率)的单位为波特,即每秒传送的二进制位数,其符号位bit/s或bps
2.2 同步通信
同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。
采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每个信息组(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符。
同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码。在整个系统中,由一个统一的时钟控制发送端的发送和接收端的接收。接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。
2.3 同步通信与异步通信区别
(1)同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
(2)同步通信效率高;异步通信效率较低。
(3)同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
(4)同步通信可用于点对多点;异步通信只适用于点对点。
3. 单工通信与双工通信
单工通信方式只能沿单一方向传输数据,双工通信方式的信息可以沿两个方向传送,每个站既可以发送数据,也可以接收数据。双工方式又分为全双工方式和半双工方式。
全双工方式数据的发送和接收分别用两组不同的数据线发送,通信的双方都能在同一时刻接收和发送信息。
半双工方式用同一组线接收和发送数据,通信的双方在同一时刻只能发送数据或只能接收数据。通信方向的切换过程需要一定的延迟时间。
单工--半双工--全双工
单工:数据只在一个方向上传输,不能实现双方通信。
例如:电视、广播。
半双工:允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,其实际上是切换的单工。
例如:对讲机。
全双工:允许数据在两个方向上同时传输。
例如:手机通话。
4. 几种常见的串行通信接口标准
4.1 RS-232C
RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始编号全称是EIA-RS-232(简称232,RS232)。它被广泛用于计算机串行接口外设连接。连接电缆和机械、电气特性、信号功能及传送过程。
RS-232-C标准规定的数据传输速率为50、75、100、150、300、600、1200、2400、4800、9600、19200bps。
RS-232是现在主流的串行通信接口之一。由于RS232接口标准出现较早,难免有不足之处,主要有以下四点:
(1)接口的信号电平值较高,易损坏接口电路的芯片。RS232接口任何一条信号线的电压均为负逻辑关系。即:逻辑“1”为-3~-15V;逻辑“0”:+3~+15V,噪声容限为2V。即要求接收器能识别高于+3V的信号作为逻辑“0”,低于-3V的信号作为逻辑“1”。而TTL电平为5V为逻辑正,0为逻辑负。与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。
(2)传输速率较低,在异步传输时,比特率为20Kbps。
(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右。
4.2 RS-422A
RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。实际上还有一根信号地线,共5根线。接收器采用高输入阻抗,发送驱动器拥有比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。
RS-422和RS-485电路原理基本相同,都是以差动方式发送和接收,不需要数字地线。差动工作是同速率条件下传输距离远的根本原因,这正是二者与RS232的根本区别,因为RS232是单端输入输出,双工工作时至少需要数字地线。发送线和接受线三条线(异步传输),还可以加其它控制线完成同步等功能。
RS-422通过两对双绞线可以全双工工作收发互不影响,而RS485只能半双工工作,发收不能同时进行,但它只需要一对双绞线。RS422和RS485在19kpbs下能传输1200米。用新型收发器线路上可连接10台设备。
RS-422的电气性能与RS-485完全一样。
主要的区别在于:
RS-422有4根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422的收与发是分开的所以可以同时收和发(全双工);
RS-485有2根信号线:发送和接收。
RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)。RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。
RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。
4.3 RS-485
在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。
RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。
RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。针对RS-232-C的不足,新标准RS-485具有以下特点:
(1)RS-485的电气特性:逻辑“1”以两线间的电压差+2V~+6V表示,逻辑“0”以两线间的电压差-6V~-2V表示。接口信号电平比RS-232-C降低了,就不容易损坏接口电路芯片,且该电平与TTL电平兼容,刻方便与TTL电路连接。
(2)数据最高传输速率为:10Mbps
(3)RS-485接口采用平衡驱动器和差分接收器的组合,抗共模干扰能力强,即抗噪声性能好。
(4)RS-485接口的最大传输距离标准值4000英尺,实际上可达3000米。
(5)RS-232-C接口在总线上只允许连接一个收发器,即单站能力;而RS-485接口在总线上只允许连接多达128个收发器,即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立设备网络。
参考:https://blog.csdn.net/w464960660/article/details/88191482
4.4 UART
UART是通用异步收发传输器,使用RxD和TxD两根线实现异步全双工通信;为确保通信可靠,可以在通信两边接共地;因此,完整的UART通信只需最少3根线即可。
RxD是发送数据线,TxD是接收数据线,通信双方使用交叉互联,RxD接对方TxD,TxD接对方RxD。UART使用标准的TTL/CMOS电平(0~5V,0~3.3V,0~2.5V,0~1.8V)来表示数据,高电平表示1,低电平表示0.为了增强抗干扰能力,提高传输长度,可将TTL/CMOS 电平转换为RS232电平逻辑电平,3~12V表示0,-3~-12V表示1(RS232为负逻辑)
1)UART平时处于空闲状态,逻辑1状态。
2)当有数据发送时,先发送起始位,即将TxD拉低并维持1位时间,接收方在检测到起始位下降沿,等待1.5位后开始一位一位检测数据。
3)发送数据,UART数据一帧可以是5,6,7,8位等,一般是8bit,一个字节。数据发送是先发送低位,依次发送,直到最高位。
4)可以使用0或者1bit的校验位,校验位可以是奇校验或者偶检验。奇校验:数据加校验位中1的个数为奇数;偶校验:数据加校验位中1的个数为偶数。
5)最后是停止位,数据线恢复到空闲状态,停止位可以是1,1.5,2位。
1位时间由波特率决定,在UART通信中,波特率(一秒钟传输的符号数)等于比特率(一秒钟传输的字符数),通信双方使用约定的一致的波特率进行通信,常见的波特率有4800,9600,115200等。
4.5 I2C
与UART不同,I2C 是同步半双工通信协议。I2C使用SCL,SDA两根双向数据线进行通信,同时为了支持线与逻辑,需要使用开漏输出,同时使用上拉电阻;上拉电阻大小常见的有1.8K,4.7K,10K;在低速场合,为了降低功耗,可以使用10K上拉电阻,1.8K的上拉电阻具有最好的性能,可满足较高速的应用。I2C常见的通信速率有普通:100K,快速:400K,高速:3.4M。I2C最大的从机数量受从机地址和最大总线电容400pF电容的限制。I2C的数据帧格式如下:
开始位 | 7bit从机地址 | 1bit读写方向位(0写,1读) | 1bit应答 | 8bit数据1 | 1bit应答1| ... | 8bit数据N |1bit非应答N | 停止位 。
空闲状态:空闲时,SCL,SDA同时处于高电平。此时,各器件的输出场效应管处于截止状态,释放总线,总线信号由上拉电阻上拉至高电平。
开始START:SCL为高电平时,SDA有下降沿。
数据传输:数据传输以字节为单位,第一个字节表示从机地址+读写方向,后续数据格式由器件自己定义。数据传输中,SDA只能在SCL低电平时变化,并在SCL上升沿进行数据采样。
应答:每发送一个字节后,接收方必须回复应答信号ACK,但发送最后一个字节后,回复非应答信号NACK。
停止STOP:SCL为高电平时,SDA有上升沿。
握手机制:I2C提供握手机制,当主机速度太快而从机无法满足快速通信时,从机可以拉低SCL来与主机握手,从而延长SCL低电平的时间。(SCL高电平由所有器件发出最短的高电平决定,低电平则由低电平最长的决定)。
仲裁:SDA是线与逻辑,因此,只要有一端输出低,总线就为低电平,因此是低电平优先仲裁。仲裁规则是发送低电平个数多的主机获得总线权。
由于I2C通信的方向性,在一次通信中不能改变数据流方向,因此读过程中需要一次dummy写过程:
dummy写完后,在restart,然后将数据流方向改为读,接着就可以读取从机数据内容了。
4.6 SPI
SPI是同步全双工串行通信协议。SPI定义了4根信号线:
SCK:时钟线,主机提供
MISO:主入从出
MOSI:主出从入
SS:片选。
片选信号可选,因此通信最少需要3根信号线。SPI在时钟上升沿下进行双向数据交换,主机在输出的同时,也会接收到从机的数据。在设计上,主机从机均需要一个移位寄存器。SPI不区分读写方向,只进行数据交换,要读也必须写,才能将数据交换过来。
SPI通过时钟极性CPOL和时钟相位CPHA定义了4种通信模式:
CPOL(时钟极性)位:控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。
CPHA(时钟相位):用来配置数据采样是在第几个边沿。
如果CPOL被清’0’, SCK引脚在空闲状态保持低电平;
如果CPOL被置’1’, SCK引脚在空闲状态保持高电平。
如果CPHA(时钟相位)位被置’1’, SCK时钟的第二个边沿(CPOL位为0时就是下降沿, CPOL位为’1’时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。
如果CPHA位被清’0’,SCK时钟的第一个边沿(CPOL位为’0’时就是下降沿, CPOL位为’1’时就是上升沿)进行数据位采样,数据在第一个时钟边沿被锁存。
4种CPHA和CPOL位组合的SPI时序图如下:
4.7 USB
USB总线是通用串行总线,USB接口位于PS/2接口和串并口之间,允许外设在开机状态下热插拔,最多可串接下来127个外设,传输速率可达480Mb/S,它可以向低压设备提供5伏电源,同时可以减少PC机I/O接口数量。
通用串行总线USB(universal serial bus)是由Intel、 Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等7家世界著名的计算机和通信公司共同推出的一种新型接口标准。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。它可以为外设提供电源,而不像普通的使用串、并口的设备需要单独的供电系统。另外,快速是USB技术的突出特点之一,USB的最高传输率可达12Mbps比串口快100倍,比并口快近10倍。
4.8 对比
参考:https://blog.csdn.net/lkiller_hust/article/details/51344823