各种通信协议

一、UART 

Universal Asynchronous Receiver Transmitter 即通用异步接收器,是一种通用的串行、异步通信总线。该总线有两条数据线,可以实现全双工的发送和接收。在嵌入式系统中常用于主机与辅助设备之间的通讯。

UART帧格式

一帧数据的构成:起始位+ 数据位 + 校验位 + 停止位

起始位:1位,逻辑’0’,表示传输一个字符的开始

数据位:要发送的数据,一般为5-8位,最多8位,如果超过8位,则需要发送两次来进行拼接

校验位:0~1位, 无校验/奇校验/偶校验

奇校验:在数据位中有奇数个逻辑‘1’时,该位为0;否则为1

偶校验:在数据位中有偶数个逻辑‘1’时,该位为0;否则为1

停止位:表示传输一个字符的结束,可以是1个、1.5个、2个高电平

空闲位:当前线路上无数据传输时,置为高电平

数据传输顺序:先传送数据的低位,后传送数据的高位

通信速度(波特率):在单片机应用,常用通信速度有2400、4800、9600、19200、115200 bit/s

UART硬件连接

TX -- 数据发送接口
RX -- 数据接收接口
两个设备间将TX与RX相连,RX与TX相连即可正常工作。

UART存在的问题

1、电气接口不统一

①UART只是对信号的时序进行了定义,而未定义接口的电气特性                                      

②UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连                                                           

③UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便                                                                                                                                                   

 2、抗干扰能力差

UART一般直接使用TTL信号来表示0和1,但TTL信号的抗干扰能较差,数据在传输过程中很容易出错                                                                                                                                             

3、 通信距离极短

因为TTL信号的抗干扰能力较差,所以其通信距离也很短,一般只能用于一个电路板上的两个不芯片之间的通信

二、IIC总线

IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线。主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线 一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步; IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用。

 IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机。                                       

 主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总钱时,   IIC也具备冲突检测和伸裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;

 IIC总线通讯过程:
1.主机发送起始信号启用总线
2.主机发送一个字节数据指明从机地址和后续字节的传送方向
3.被寻址的从机发送应答信号回应主机
4.发送器发送一个字节数据
5.接收器发送应答信号回应发送器
…(循环步骤4、5)
n.通信完成后主机发送停止信号释放总线

IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据 。                                             

主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,‘0'表示主机发送数据,'1"表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自已的地址进行比较,如果相同,则认为自己被主机寻扯,然后再根据第8位
将自己定为发送器或接收器。

 起始信号和停止信号 

起始信号:SCL为高电平时,SDA由高变低表示起始信号
停止信号:SCL为高电平时,SDA由低变高表示停止信号
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后总线处于空闲状态

字节传送与应答

IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器,即一帧共有9位。

同步信号
IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。

典型IIC时序 

主机向从机发送数据

从机向主机发送数据 

注:阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送;A表示应答, A非表示非应答,S表示起始信号,P表示终止信号

三、TTL电平

Transistor-Transistor Logic,是一种电平逻辑,晶体管-晶体管逻辑。通常我们采用二进制来表示数据,为了表示二进制,需要用高低电平表示这些二进制数,3.3V/5V等价于逻辑“1”,0V等价于逻辑“0”。UART特指单片机的UART端口,使用的就是TTL电平。嵌入式里面说的串口,一般是指UART口,而TTL、RS-232、RS-485是指的电平标准(电信号)。

1、标准TTL电平逻辑
输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.8V为逻辑0
输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)1.2V为逻辑0

2、CMOS电平
输出电路:电压大于等于(≥)0.9×Vcc为逻辑1;电压小于等于(≤)0.1×Vcc为逻辑0
输入电路:电压大于等于(≥)0.7×Vcc为逻辑1;电压小于等于(≤)0.3×Vcc为逻辑0

四、RS-232协议

RS232协议是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家、计算机终端生产厂家共同制定的用于串行通讯的标准。
该标准规定采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定。

接口
该标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定;后来IBM的PC机将RS-232简化成了DB-9连接器,后来成为事实标准准;现在工业控制PC机将RS-232简化成了DB-9连接器,后来成为事实标准;现在工业控制的RS-232接口一般只使用RXD、TXD、GND三条线。

信号
该标准规定逻辑“1”的电平为-5v到-15v,逻辑“0”的电平为+5v到+15v,选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其传送距离一般可达15m。

电平转换
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS-232标准的信号,所以一般我们还需要在处理器外部去添加电路对信号的电平进行转换。

USB转RS-232

USB转232,可以先将USB转换为TTL,再将TTL转换为RS232,市面上也有很多USB直接转RS-232的线材,线材内部集成转换电路,下图为USB转RS-232串口:

TTL和RS-232互转

单片机接口一般是TTL电平,如果需要接232电平的外设,就需要加TTL转RS232的模块,转换方向是双向的。TTL和RS232电平互相转换最常用的芯片是MAX232和SP3232。

RS232存在的问题                                                                                                                 

①RS232接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容,所以需要使 用电平转换芯片才能与TTL电路连接                                                                                             

②通信速度较低                                                                                                                             

③易产生共模干扰,抗噪声干扰性弱

④传输距离较短(15m)

五、RS-485协议

该标准由电信行业协会和电子工业联盟定义;使用该标准的通信网络,能在远距离条件下以及电子噪声大的环境下有效传输信号;该标准允许连接多个收发器,即具有多站能力,这样可以利用单一的RS485接口方便地建立起一个设备网络。

信号                                                                                                                                              RS-485标准规定采用差分信号进行数据传输,两线间的电压差为+2v到+6v表示逻辑“1”,两线间的电压差为-2v到-6y表示逻辑“0”;使用差分信号能有效地减少噪声信号的干扰,延长通信距离,RS-485的通信距离可以达到1500m;RS-485接口信号的电平比RS-232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接。 

接口
①RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上可以同时存在多个节点
②因为采用两线制,数据的发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式工作,编程时也需要加以处理。

电平转换
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS485标准的信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号。

TTL和RS-485转换

TTL转成RS-485很常见,收发器芯片市面上很多,比如MAX485,用起来也很简单,一般左边接MCU的GPIO,用来控制。

RS-232和RS-485转换

RS-232和RS-485之间可以转换,一个方法是RS-232转换成TTL,再由TTL转换为RS-485,当然也有芯片支持将RS-232支持转换成RS-485,双向转换。

RS485的优势
①接口的信号电平值较低,不易损坏接口电路的芯片,且与TTL电平兼容,可方便地与TTL电路连接
②通信速度快
③抗噪声干扰性强
④传输距离校远(1500m)
⑤可实现多节点组网


六、SPI                                                                                                                                         

SPI(Serial Peripheral interface)是由美国摩托罗拉公司最先推出的一种同步 串行传输规范,也是一种单片机外设芯片串行外设扩展接口。该接口是一种高速、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,大大的为PCB的布局上节省空间。
SPI接口主要应用在EEPROM、Flash、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。                                                                                                                                       

SPI接口由MOSI(串行数据输出)、MIS0(串行数据输入)、SCLK(串行移位时钟)、/SS(从设备使能信号,/SS亦可为NSS)四种信号构成。
 

引脚描述

 MOSI -主设备数据输出,从设备数据输入;

 MISO -主设备数据输入,从设备数据输出;

 SCLK -时钟信号,由主设备产生;

 /SS -从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。

特点
①SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。
这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据,也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。
②SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPT设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。

③在点对点的通信中, SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比IIC系统要稍微复杂一些。

移位传输

                  SCLK的控制下,两个双向移位寄存器进行数据交换

优点

①支持全双工通信
②通信简单
③数据传输速率块

缺点
没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据
可靠性上有一定的缺陷。

SPI工作模式


SPI通信有4种不同的模式,不同的从设备可能在出厂时就配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:
                                   Mode0:CPOL=0,CPHA=0
                                   Mode1:CPOL=0,CPHA=1
                                   Mode2:CPOL=1,CPHA=0
                                   Mode3:CPOL=1,CPHA=1

时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA 是用来配置数据采样是在第几个边沿:
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿

例子:
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是 SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。

CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是 SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采样是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。     

CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值