赞
踩
目录
UART、RS232、RS485、IIC、SPI是最常用的5种通信总线协议,广泛应用于项目开发之中,可以说只要是智能终端产品,都会使用到它!智能时代,它不仅是嵌入式物联网、智能硬件开发的必备技能,也是进一步学习TCP/IP等复杂通信协议的基础。
从本质上来说,RS232,RS485都是依附于UART,只不过是在电气层或者物理层上的规定不同,目的是为了提高抗干扰能力,提高传输距离和传输的速度。SPI,IIC则是独立的总线协议,但两者之间也有相同之处,我们可以将两放在一起相互比较学习,体会这两种协议之间优缺点。
在讲述RS232之前,我们先考虑一下为什么要规定这种协议,由前文我们可以知道,RS232是依附于UART,那既然已经有了UART这种通信协议,我们为什么还要规定新的通信协议呢?在解决这个问题之前,我们先来看看UART所存在的问题。
1.电气接口不统一
UART只是对信号的时序进行了定义,并未定义接口的电气特性;UART通信时一般直接使用处理器所使用的电平,即TTL电平,但不同的处理器之间存在差异,所以不同的处理器之间相互连接时一般不能直接相连;UART没有规定不同器件连接时的标准,所以不同器件之间通过UART连接时很不方便。
2.抗干扰能力差
UART一般直接使用TTL信号,但TTL信号的抗干扰能力很差,在数据传输中很容易出现错误
3.通信距离很短
因为TTL信号的抗干扰能力很差,所以其通信距离很短,一般只用于一个电路板上的不同芯片之间的通信。
为了解决这些问题,人们依附于UART,规定了RS232——较UART一种更为优良的通信协议。这也就解答了我上文中所留下的问题。了解了为什么会有RS232的诞生后,接下来我们开始这种通信协议的学习。
RS-232标准接口(又称EIA RS-232)是常用的串行通信接口标准之一,它是由美国电子工业协会(Electronic Industry Association,EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,其全名是“数据终端设备( DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。
1、接口:该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准。而工业控制的RS-232口一般只使用RXD、TXD、GND三条线。
2、信号:规定逻辑“1”的电平为-5V~-15 V,逻辑“0”的电平为+5 V~+15 V。选用该电气标准的目的在于提高抗干扰能力,增大通信距离,最大距离可达15m。(由于处理器产生的信号一般都是TTL信号,所以我们通常在使用RS232时要加转换电平的芯片,将TTL电平转化成符合RS232标准的信号,例如MAX232)
通过新的规定,RSR232统一了电气接口, 提高了抗干扰能力,增大了通信距离。但是,这种协议还是存在一些问题的
1、通信速度较低
2、易产生共模干扰,抗噪声能力弱
3、传输距离较近
4、电平高,容易烧坏芯片,与TTL信号不兼容,需要转换芯片。
尽管RS232的出现已经解决UART的很多问题,但是能不能有一种通信速度更快,抗干扰能力更强,传输距离更长的通信协议呢?当然有了,RS485应运而生。
RS485是隶属于OSI模型物理层的电气特性规定为2线、半双工、平衡传输线多点通信的标准。是由电信行业协会(TIA)及电子工业联盟(EIA)联合发布的标准。实现此标准的数字通信网可以在有电子噪声的环境下进行长距离有效率的通信。在线性多点总线的配置下,可以在一个网络上有多个接收器。
1、信号
RS485标准规定采用差分信号进行数据传输,两线间的电压差为+2V到+6V为逻辑“1
”,-2V—-6V表示逻辑“0” 。(处理器一般产生的是TTL信号,不符合485标准,因此我们需要添加转换芯片将TTL信号转化为差分信号,例如MAX485)
2、接口
RS485采用两线制,这种接线方式为总线式拓扑结构,一条总线上可以同时存在多个节点;因为采用两线制,数据的发送和接收都要使用差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式,编程时也要加以处理。
1.485的接口信号与232相比降低了,不易损坏芯片
2.有效减少噪声信号的干扰
3.通信速度快
4.延长通信的距离,最大可达1500m
5.可实现多节点组网
IIC是一种多主机总线。主机可以发起或结束一次通信,从机只能被呼叫;每个连接在总线上的器件都有一个唯一的地址(7个字节);每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机);当总线上有多个主机同时启用总线时,IIC有仲裁机制可以防止错误产生。IIC有两根线,SCL为时钟线,用于提供同步信号,SDA为数据线,用于数据的传输。
1.主机发送起始信号启用总线
2.主机发送一个字节的数据指明从机的地址和后续字节的传送方向。
3.被寻址的从机发送应答信号回应主机
4.发送器发送一个字节的数据
5.接收器发送应答信号返回主机
..........循环4、5直至数据全部发送完成
6.通信完成后主机发送停止信号释放总线
与UART相一致,IIC在传输开始和结束时分别有起始信号和结束信号。
当IIC总线空闲时,SCL和SDA都为高电平。
当SCL为高电平时,SDA由高变低表示起始信号;SDA由低变高表示停止信号。
IIC总线通信时每个字节长度为八位,数据传送时,先传送高位,再传低位,发送器发送完一个字节数据后接收器必须发送一位应答位来回应发送器
时钟低电平时,发送器发送一位数据;时钟高电平时,接收器读取数据,此时数据线上的数据必须保持稳定。
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线;SPI采用主从方式工作,一般有一个主机和多个从机;SPI至少有四根线,MOSI(主机输出,从机输入),MISO(主机输入,从机输出),SCLK(时钟线),CS(chip select 芯片选择端)
当主设备要和某个从设备进行通信时,主设备要先向对应从设备的片选端即CS发送使能信号(高电平或低电平,根据从机而定)表示选中该设备
SPI总线在进行数据传送时,先传送高位,后传送低位:数据线为高电平表示逻辑“1”,低电平表示逻辑“0”:一个字节传送完成后无需应答即可开始下一个宇节的传送:SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个宇节数据的传送;关于SPI的通信时序,共有四种模式,再了解这四种模式之前,首先要了解两个名词
CPOL:Clock Polarity,翻译过来就是时钟的极性。时钟的极性是什么概念呢?通信的整个过程分 为空闲时刻和通信时刻,如果 SCLK 在数据发送之前和之后的空闲状态是高电平,那么就CPOL=1,如果空闲状态 SCLK 是低电平,那么就是CPOL=0。
CPHA: Clock Phase,就是时钟的相位。
CPHA=1,就表示数据的输出是在一个时钟周期的第一个沿上,至于这个沿是上升沿还 是下降沿,这要视 CPOL 的值而定,CPOL=1 那就是下降沿,反之就是上升沿。那么数据的 采样自然就是在第二个沿上了。
CPHA=0,就表示数据的采样是在一个时钟周期的第一个沿上,同样它是什么沿由 CPOL 决定。那么数据的输出自然就在第二个沿上了。
接下来我们以时序图来理解一下这四种模式
当数据未发送时以及发送完毕后,SCK 都是高电平,因此 CPOL=1。 可以看出,在 SCK 第一个沿的时候,MOSI 和 MISO 会发生变化,同时 SCK 第二个沿的时 候,数据是稳定的,此刻采样数据是合适的,也就是上升沿即一个时钟周期的后沿锁存读取 数据,即 CPHA=1。
1.均采用串行、同步的方式
2.均采用TTL电平,传输距离和应用场景类似
3.均采用主从方式工作
1.IIC为半双工,SPI为全双工
2.IIC有应答机制,SPI无应答机制
3.IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能来寻址
4.IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。