一.先前知识
1.并行与串行
并行通信和串行通信是两种不同的数据传输方式:
- 并行通信:并行通信是指在同一时间使用多条并行传输的线路传输多个比特的数据。每个比特使用独立的线路进行传输,同时进行。这样可以在一个时钟周期内传输多个比特,提高传输速率。并行通信常用于短距离高速数据传输,如内部计算机总线、内存之间的数据传输等。
- 串行通信:串行通信是指使用单条线路逐个比特顺序传输数据。每个比特按照顺序依次传输,通过时钟信号进行同步。串行通信通常使用的线路较少,便于布线和实现,适用于长距离通信和低速传输。串行通信常见的标准包括UART、SPI、I2C等。
并行通信的优势是在同一时间内可以传输多个比特,传输速率较高。然而,由于需要使用更多的线路,对电路和布线的要求较高,限制了通信距离和复杂性。相比之下,串行通信只使用一条线路,更容易实现和布线,适合长距离传输和复杂环境。但是,传输速率相对较低。
选择并行通信还是串行通信通常取决于具体的通信需求、距离、传输速率、成本和可靠性要求等因素。许多应用中,串行通信已成为主流选择,但在某些特殊领域仍然需要并行通信来满足高速数据传输需求。
2.单工和双工
-
单工通信(Simplex):在单工通信中,数据只能在一个方向上进行传输。一个设备只能发送数据,而另一个设备只能接收数据。这种通信模式类似于单向街道,只能在一个方向上进行通行。典型的示例是广播电台向听众广播信号,而听众无法向广播电台发送信号。
-
半双工通信(Half Duplex):在半双工通信中,数据可以在两个方向上进行传输,但不能同时进行。设备可以在某个时间段内发送数据,然后切换为接收模式以接收数据。这就像是一个双向的单车道,交通只能在一个方向上进行,而不能同时在两个方向上进行。对讲机是一个常见的半双工通信示例,其中一方说话时,另一方必须等待。
-
全双工通信(Full Duplex):在全双工通信中,数据可以在两个方向上同时进行传输,实现双向通信。设备可以同时发送和接收数据,没有时间限制。这就像是双向的双车道,车辆可以同时在两个方向上行驶。典型的全双工通信示例是电话通话。通话双方可以同时说话和听对方说话。
选择单工、半双工或全双工通信取决于具体的应用需求。如果只需要单向传输数据,单工通信可能是合适的选择。如果需要在两个方向上交替传输数据,但不需要同时进行,半双工通信会更合适。而如果需要在两个方向上同时进行双向通信,全双工通信是最合适的选择。
一.UART
1.概述
UART(通用**异步
收发传输器)是一种用于串行
通信的标准接口协议。它是一种简单但功能强大的通信协议(全双工
**),先传低位,后传高位
。广泛应用于电子设备之间的数据传输,在嵌入式系统中常用于主机和辅助设备之间
的通信。
UART使用两根线(数据线和时钟线)来进行数据传输,UART协议定义了数据的传输格式,包括数据位数、奇偶校验位、停止位
等。它通常使用ASCII码来表示字符数据,但也可以传输二进制数据。通常情况下,UART的数据传输速率(波特率)可以根据具体应用需求进行配置,典型的波特率有9600、19200、115200等。
UART接口在各种设备和应用中广泛使用,例如计算机、微控制器、传感器、调制解调器、GPS接收器等。它的简单性和可靠性使得UART成为许多串行通信需求的首选协议。
2.波特率
波特率(Baud Rate)是指单位时间内传送的码元(数字)数,通常用每秒钟传输的比特数(bit/s)来表示。在串行通信中,波特率通常用于表示数据传输的速率,即每秒钟可以发送多少比特的信息。具体来说,波特率指的是发送方发送一个码元所用的时间,和这个码元所代表的比特数之间的关系。
例如,假设串口的波特率设置为9600 bps,则在每秒钟内可以传输9600个比特的数据。这意味着,每秒钟可以传输9600/8=1200个字节的数据(注意,这里的基本传输单元是字节,而不是比特,因为在通信中,比特通常是由一些组合成的字节来表示的)。
3.UART帧格式
UART是一种常见的串行通信接口协议,用于将数据在计算机和外部设备之间进行传输。UART通常用于串口通信,通常数据以字节的形式通过串行线路发送和接收,空闲时为高电平
。
UART帧格式通常由以下几部分组成:
-
起始位(Start Bit):UART通信的数据帧以一个起始位开始,表示数据传输的开始。起始位通常为逻辑低电平(0)。
-
数据位(Data Bits):数据位是实际传输的数据比特。数据位的数量可以是5、6、7或8位,取决于设备的设置。
-
校验位(Parity Bit):校验位是用于检测和纠正数据传输中的错误的附加比特。校验位可以是奇校验、偶校验或无校验(没有校验位)。如果选择了奇校验,则校验位被设置为确保数据位中的1的数目为奇数。如果选择了偶校验,则校验位被设置为确保数据位中的1的数目为偶数。
-
停止位(Stop Bit):停止位表示数据帧的结束。它通常是一个或多个逻辑高电平(1)。停止位的数量可以是1、1.5或2个,具体取决于设备的设置。
注意:UART空闲位为高电平,UART通信是一种异步通信方式,由于发送方和接收方的时钟不同步,因此需要使用起始位和停止位来标识每个数据帧的开始和结束。
例如,一个典型的UART帧格式可能是:1个起始位 + 8个数据位 + 1个偶校验位 + 1个停止位。这意味着每个数据帧由11个比特组成。
在实际应用中,UART帧格式可以根据具体的需求进行定制,例如调整数据位的数量、校验位的设置和停止位的数量。这取决于设备之间的通信协议和通信要求。
三.RS232协议(基于UART)
1.UART问题
UART具有一些缺点,包括:
-
线缆长度限制:UART通信的传输距离受到线缆的长度限制。在长距离传输时,信号可能会衰减或受到干扰,导致数据错误或丢失。
-
电气接口不统一:UART只是对信号的时序进行了定义,而未定义接口的电气特性;UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连,UART没有规定不同器件连接时连接器的标准,所以不同设备间通过UART通信时连接很不方便;
-
时钟同步问题:UART通信是异步通信,发送方和接收方的时钟不同步。这可能导致时钟差异引发的数据丢失或错误。
-
速率限制:UART通信的速率受到波特率的限制。较高的波特率可能会导致更高的传输速率,但也会增加传输时钟的要求和电磁干扰的风险。
-
通信速度相对较慢:由于UART通信采用的是异步传输方式,并且需要在每个数据帧中添加起始位、停止位和校验位等附加信息,因此与其他通信协议相比,UART的通信速度相对较慢。
因为UART的各种缺点,我们在电气层面又进一步规定了各种协议
,其中包括RS232协议
和RS485协议
。
2.RS232协议概述
1.接口
该标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定)还对各种信号的电平加以规定;后来IBM的PC机将RS232简化成了DB-9连接器,后来成为事实标准;现在工业设备的RS-232接口一般只使用RXD、TXD、GND三条线;
2,信号
该标准规定逻辑“1”的电平为-5v
到-15v
,逻辑“0”的电平为+5v
到+15v
,选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其传送距离一般可达15m
。
3.电平转换
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS232标准的信号,所以一般我们还需要在处理器外部去添加电路对信号的电平进行转换;通常使用MAX232芯片进行转换。
4.RS232缺点
RS-232标准作为一种老式的串行通信标准,具有以下几个方面的缺陷:
-
速度限制:通信速度较低。
-
传输距离较短:15m
-
抗干扰性差:RS-232标准的电信号传输距离、电源和静电放电等方面的限制都会影响信号的稳定性,易受外部干扰,同时发送和接收设备之间的接地电位差可能会导致误差。
-
接口的信号电平值比较高: 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容,所以需要使用电平转换芯片才能与TTL电路连接
四.RS485协议(基于UART)
1.RS485协议概述
RS-485是一种串行通信协议,常用于在远距离和噪音环境下进行数据通信。以下是有关RS-485协议的一些重要信息:
-
物理层特性:RS-485使用差分信号传输,其中一对信号线为正极性(+)和负极性(-)信号线,用于抵消噪音干扰。这种传输方式提供了更高的抗干扰性和噪音容忍度,使其非常适用于远距离通信。
-
半双工通信:RS-485是一种半双工通信协议,意味着数据只能在单个信道上进行一个方向的传输。因此,在RS-485通信中,一方设备必须等待另一方设备完成发送或接收操作后才能开始通信。
-
多点通信:RS-485支持多个设备在同一信号线上进行通信,允许多点通信拓扑结构。每个设备都有一个唯一的地址,以便其他设备根据地址来识别并选择性地接收数据。
-
最大传输距离:RS-485可在最大传输距离上达到1500米,这是由于其差分信号传输和抗干扰性能较强。相比之下,RS-232通信的传输距离通常较短。
-
驱动能力:RS-485驱动能力强,能够驱动较多的接收器,适用于工业环境中的长距离数据通信需求。
-
信号:RS485标准规定采用差分信号进行数据传输,两线间的电压差为+2v到+6v表示逻辑“1”,两线间的电压差为-2v到-6y表示逻辑“0”;使用差分信号能有效地减少噪声信号的干扰,延长通信距离。RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接
需要注意的是,RS-485仅定义物理层的传输规范,而未定义数据帧格式和通信协议。因此,在实际应用中,需要根据具体需求制定相应的协议和应用层通信规范。
RS-485协议是一种可靠、抗干扰能力较强的半双工串行通信协议,适用于远距离传输和工业环境中的数据通信应用。
2.电平转换
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS485标准的信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号;
3.RS485优势
根据您提供的信息,以下是RS-485协议的一些优点:
-
信号电平值较低:RS-485接口的信号电平值较低,这意味着它不容易损坏接口电路的芯片。这种特性有助于保护设备的硬件,并延长设备的使用寿命。
-
与TTL电平兼容:RS-485接口与TTL电平兼容,可以方便地与TTL电路连接,这简化了与其他数字电路的集成和连接,提高了系统的灵活性和兼容性。
-
通信速度快:RS-485支持较快的通信速度,可以满足对高速数据传输的需求,适用于实时性要求高的应用场景。
-
抗噪声干扰性强:RS-485协议具有优异的抗噪声干扰性能,这使得它在具有电磁干扰或其他噪声干扰的环境中依然能够保持稳定的通信质量。
-
传输距离较远:RS-485能够实现较远的传输距离,最高可达1500米。这使得它非常适用于需要长距离数据传输的应用场景,如工业控制系统、仪器仪表和环境监测等领域。
-
可实现多节点组网:RS-485支持多个设备在同一总线上进行通信,因此可以实现多节点组网。这种能力使得RS-485适用于需要在多个设备之间进行实时数据传输和通信的应用。
综上所述,RS-485协议具有信号电平低、兼容性强、通信速度快、抗干扰性强和传输距离远的优点,使其成为一种广泛应用于工业控制和远距离数据通信领域的可靠通信协议。
五.IIC协议
1.IIC总线协议简介
-
IIC总线是PhiLips公司在八十年代初推出的一种
串行
、半双工
总线主要用于近距离、低速
的芯片之间的通信;IIC总线有两粮双向的信号线一根数据线SDA
用于收发数据,一根时钟线SCL
用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用 -
IIC总线是一种多主机总线,连接在|IC总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;
2.IIC总线通信过程
非常感谢您提供的更详细的I2C总线协议的步骤。下面是对您提到的每个步骤的更详细说明:
-
主机发送起始信号启用总线。
-
主机发送一个字节数据指明从机地址和后续字节的传送方向。
-
被寻址的从机发送应答信号回应主机。
-
发送器发送一个字节数据。
-
接收器发送应答信号回应发送器。
循环步骤4和步骤5:发送器和接收器之间在每次传输一个字节数据后,持续地循环执行步骤4和步骤5。
n. 通信完成后主机发送停止信号释放总线。
通过这些步骤,主机和从机之间可以进行可靠的数据传输和通信。这个协议的简洁性和灵活性使得I2C总线协议成为连接多个设备进行短距离通信的一种常见选择。
3.IIC寻址方式
- IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据.
- 主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,'0’表示主机发送数据,'1’表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第8位将自己定为发送器或接收器
4.IIC总线信号实现
-
起始信号和停止信号
SCL为高电平时,SDA由高变低表示起始信号
SCL为高电平时,SDA由低变高表示停止信号
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态停止信号产生后总线处于空闲状态
-
字节传送与应答
IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位
-
同步信号
IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定
5.典型IIC时序
-
主机向从机发送数据
-
从机向主机发送数据
-
主机先向从机发送数据,然后从机再向主机发送数据
注:阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送;A表示应答,A非表示非应答,S表示起始信号,P表示终止信号
六.SPI协议
1.SPI总线协议简介
SPI(Serial_Per ipheral Interfaco)是串行外设接口的缩写,SPI是一种高速的
、全双工
、同步
的串行通信总线
;SPI采用主从方式工作
,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选)SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议;
SPI(Serial Peripheral Interface)协议是一种用于串行通信的同步协议,通常用于在数字集成电路之间传输数据。SPI协议通常包含以下特点:
-
线配置:SPI使用四根线进行通信,包括一个主时钟线(SCLK),一个主输出/从输入线(MOSI),一个主输入/从输出线(MISO)以及一个片选线(SS)。
-
主从结构:SPI协议通常包括一个主设备和一个或多个从设备。主设备控制通信并负责生成时钟信号,而每个从设备都有一个片选线,由主设备控制。
-
全双工通信:SPI通信是全双工的,意味着主设备和从设备可以同时发送和接收数据。
-
传输模式:SPI协议可以通过调整时钟极性和相位来支持四种传输模式,以适应不同设备的需求。
-
速率灵活:SPI协议在不同的设备上可以以不同的速率进行通信,因为时钟频率是可调的。
-
灵活性:SPI协议具有一定程度的灵活性,可以通过协商进行高速数据传输,但同时也有较高的实现复杂度。
2.寻址方式
当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。
3.通信过程
SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑‘1’,低电平表示逻辑‘0’;一个字节传送完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送;
4.极性和相位
极性和相位
SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHA)这两个因素,
- CPOL表示SCLK空闲时的状态
CPOL=0,空闲时SCLK为低电平
CPOL=1,空闲时SCLK为高电平 - CPHA表示采样时刻
CPHA=0,每个周期的第一个时钟沿采样
CPHA=1,每个周期的第二个时钟沿采样
需要说明的是,对于一个特定的从设备来说,一般在出厂时就会将;设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备工作模式和该从设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置;
七.IIC和SPI异同点
相同点
- 均采用串行、同步的方式
- 均采用TTL电平,传输距离和应用场景类似
- 均采用主从方式工作
不同点
- 1IC为半双工,SPI为全双工。
- 11C有应答机制,SPI无应答机制。
- 1IC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址。
- 1IC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调。