通信协议总结

1.UART通信协议

一、UART简介

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

二、基本概念了解

1、串行通信与并行通信讲解:

以char为例,一个一节,即8个数据位,若为0x55,即二进制为:01010101

(1)串行通信:串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

(2)并行通信:并行是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。

(3)异步通信:收发双方时钟不同步

(4)同步通信:收发双方时钟同步

2、单工通信和双工通信

(1)单工通信:是指消息只能单方向传输的工作方式,只能有一个方向的通信而没有反方向的交互;

(2)双工通信:分为半双工和全双工

(3)半双工通信:指数据可以沿两个方向传送,但同一时刻一个半双工总线结构信道只允许单方向传送,因此又被称为双向交替通信;

(4)全双工通信:称为双向同时通信,即通信的双方可以同时发送和接收信息的信息交互方式;

(5)波特率:波特率用于描述UART通信时的通信速度,其单位为bps(bit per second)即每秒钟传送的bit的数量

三、串口通信原理

(1)空闲位: 数据线在空闲的时候,数据线的状态为高电平;

(2)起始位:表示一次通信的开始;

(3)数据位:串口协议规定,先发低位、后发高位;可以发送5-8位数据;

(4)校验位:校验数据的正确性,若数据位1的个数为偶数,则检验位为1,否则为0;检验位只能发现错误,但不能纠错。

(5)停止位:表示一次通信的结束,数据线的状态为高电平。

四、UAST控制器

一般情况下处理器都会集成UART控制器,使用串口通信的时候只需要对其内部的相关寄存器进行设置即可,其他过程我们不用管(比如发送过程)。

  1. I2C通信协议

一、I2C背景知识

IIC(Inter-Integrated Circuit)简称IICBus 集成电路总线。由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。自2006年10月1日起,使用I²C协议已经不需要支付专利费,但制造商仍然需要付费以获取I²C从属设备地址。

二、I2C特性

1、双向的同步串行总线

2、支持设备之间的短距离通信

3、标准通信速率:100Kbps 快速模式:400Kbps 高速模式:3.4Mbps

4、各个设备之间的SCL和SDA线都是线与关系

5、扩展的器件的数量主要由电容负载来决定,其负载能力为400pF

6、具有极低的电流消耗

三、I2C总线的物理层

由于SDA、SCL为漏极开路结构(OD),因此它们必须接有上拉电阻,阻值的大小常为 1k8、4k7、10k,但1k8时性能最好。则在总线空闲时,两根线均为高电平。I2C总线的上拉电阻的阻值要精心考虑,如果上拉电阻的阻值太大,则由于I2C设备输入端的输入电容的存在,会造成信号上升沿和下降沿变缓,以至于不能满足I2C设备的建立时间和保持时间,造成通信的错误发生;如果上拉电阻的阻值过小,则会造成较大的功率损耗。因此I2C通信的上拉电阻的阻值要满足设备上升沿和下降沿要求的同时尽量选择较大的阻值,以降低消耗的功耗问题。

四、I2C标准协议

I2C的位传输

数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA传输数据bit

数据改变:SCL为低电平时,SDA线才能改变传输bit

1、开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

2、应答信号

Master每发送完8bit数据后等待Slave的ACK

即在第9个clock,若从IC发出ACK,SDA会被拉低。

若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程

I2C总线协议

小结整体时序:

串行协议,多主机模式。(注:主端必须是带有CPU的逻辑模块,在同一总线上同一时刻使能有一个主端,可以有多个从端)

1、起始信号:SCL为高电平时,SDA下降沿,主机发送;

2、停止信号:SCL为高电平时,SDA上升沿,主机发出;

3、数据与地址按8位/字节传输,高位在前;

4、传输过程中,SCL为低电平时,SDA更改状态,SCL为高电平时,SDA状态需稳定;

5、每传输一个字节,接收器必须回应1个应答位(ACK)给发送器

五、I2C读写寄存器时序

写寄存器操作标准流程

1、Master 发起 START

2、Master 发送I2C addr (7bit) 和w操作0(1bit),等待ACK

3、Slave 发送ACK

4、Master 发送reg addr (8bit),等待ACK

5、Slave发送ACK

6、Master发送data(8bit),即要写入寄存器中的数据,等到ACK

7、Slave发送ACK

8、第6步和第7步可以反复多次,即顺序写多个寄存器

9、Master发起STOP

读寄存器操作标准流程

1、Master 发起 START

2、Master发送I2C addr地址 (7bit) 和w操作0(1bit),等待ACK

3、Slave 发送ACK

4、Master 发送reg addr (8bit),等待ACK

5、Slave发送ACK

6、Master 发起 START

7、Master发送I2C addr(7bit)和r操作1(1bit),等待ACK

8、Slave 发送ACK

9、Slave发送data(8bit),即寄存器的值

10、Master发送ACK

11、第9步和第10步可以重复多次,即顺序读多个寄存器

3、SPI通信协议

一、SPI协议基本概念

SPI接口

(1)SPI(Serial Peripheral interface)是一种同步串行传输规范,也是单片机外设芯片串行外设扩展接口,该接口是一种高速,全双工,同步的通信总线,并且在芯片的管脚上占用4根线

(2)SPI接口主要应用在EEPROM,Flash,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间

(3)SPI由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换

(4)SPI接口由MOSI(串行数据输出),MISO(串行数据输入),SCLK(串行移位时钟),/SS(从设备使能信号),四种信号构成

(5)MOSI(串行数据输出),MISO(串行数据输入),SCL(串行移位时钟)都是公用的,只有SS(从设备使能信号)不是公用的,每增加一个从设备,那么就要增加一个SS使能信号,从而实现寻址的功能,当你的引脚不够用的时候,最好使用IIC(只有两根线)

引脚描述

MOSI:主设备数据输出,从设备数据输入

MISO:主设备数据输入,从设备数据输出

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

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

SPI接口特点

(1)SCLK信号线只由主设备控制,从设备不能控制信号线,同样,在一个基于SPI的设备中,至少有个主设备

(2)与普通的串行通信不同,普通的串行通讯一次连续传输至少8位数据(UART,但是还有一个起始位,一个停止位,还有校验位(可有可无)),而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据,也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制

(3)SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同的定义。

移位传输

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

(4)在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显的简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比IIC系统要稍微复杂,SPI的一个缺点;没有指定的流控制,没有应答机制确认是否接收到数据

二、SPI的工作模式

概述

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

时钟极性CPOL是用来配置SCLK的电平出于空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿

CPOL=0;表示当SCLK = 0时,处于空闲态,所以有效态就是SCLK处于高电平

CPOL=1;表示当SCLK = 1时,处于空闲态,所以有效态就是SCLK处于低电平

CPHA=0;表示数据采样是在第1边沿,数据发送在第2个边沿,也就是奇数边沿被采样

CPHA=1;表示数据采样是在第2边沿,数据发送在第1个边沿,偶数边沿被采样

(1)起始信号:NSS信号线由高变低,是SPI通讯的起始信号

(2)借宿信号:NSS信号由低变高,是SPI通讯的停止信号

(3)数据传输:SPI使用MOSI以及MISO信号来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出时同时进行的。SPI每次传输数据可以8位或16位为单位,每次传输的单位数不受限制

通信模式的设置

由于CPOL以及CPHA的不同状态,SPI分成了四种模式,主机与从机需要工作在相同的模式下才可以正常通信,因此通常主机要按照从机支持的模式去设置

三、STM32F4-SPI控制器特性

STM32F4的MOSI以及MISO都连接到数据移位寄存器上,数据移位寄存器的数据来源于接收缓冲区与发送缓冲区

(1)通过写SPI的“数据寄存器DR”把数据填充到发送缓冲区

(2)通过读“数据寄存器DR”可以获取接收缓冲区中的内容

(3)其中数据帧长度可以通过“控制寄存器CR1”的“DFF位”配置为8位或16位模式,配置“LSBFIRST位”可选择MSB先行还是LSB先行

四、内部SPI设置

STM32F429有高达6个SPI(45Mbits/s),其SPI接口提供两个主要功能:支持SPI协议和I2S音频协议。默认情况下,选择的是SPI功能。可通过软件将接口从SPI切换到I2S。

串行外设接口SPI可与外部器件进行半双工/全双工的同步串行通信。该接口可配置为主模式,在这种情况下,它可为外部器件提供通信时钟SCLK。该接口还能够在多主模式下工作

它可用于多种用途,包括基于双线的单工同步传输,其中一条可作为双向数据线,或使用CRC检验实现可靠通信

片选接到了主控制逻辑芯片上面,主控制逻辑芯片又连接到了MOSI和MISO上面,时钟引脚接到了我们的波特率发生器上面,波特率是由SPI_CR1上面产生的,

单个主器件/单个从器件应用

主模式

4、CAN通信协议

1、CAN(控制器局域网) 总线具有高性能和可靠性,主要用于两个设备之间的通信,被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

2、CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

3、CAN通讯兵不是以时钟信号来进行同步的,它是一种异步通信,只具有CAN_High和CAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。

4、CAN总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通讯。由于CAN通讯协议不对节点进行地址编码,而是对数据内容进行编码,所以网络中的节点个数理论上不 受限制,只要总线的负载足够即可,可以通过中继器增强负载。

5、CAN总线协议的物理层只有1对差分线,在一个时刻只能表示一个信号,所以对通讯节点来说,CAN通讯是半双工的,收发数据需要分时进行。在CAN的通讯网络中,因为共用总线,在整个网络中同一时刻只能有一个通讯节点发送信号,其余的节点在该时刻都只能接收。

6、帧介绍(CAN通信以5种类型的帧进行):

数据帧:用于通讯节点向外传送数据。

遥控帧:用于向远端节点请求数据。

错误帧:用于向远端节点通知校验错误,请求重新发送上一个数据。

过载帧:用于通知远端节点:本节点尚未做好接受准备。

间隔帧:用于将数据帧及遥控帧与前面的帧分离开来的帧。

RS485/RS422/RS232

RS232概述

RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信Q的接口标准,原始编号全称是EIA-RS-232(简称232,RS232)。它被广泛用于计算机串行接口外设连接。连接电缆和机械、电气特性、信号功能及传送过程。

RS-232-C标;准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。

RS232特点:

RS-232是现在主流的串行通信接口之一。由于RS232接口标准出现较早,难免有不足之处,主要有以下四点:

(1)接口的信号电平值较高,易损坏接口电路的芯片。RS232接口任何一条信号线的电压均为负逻辑关系。即:逻辑1为-3

—-15V;逻辑0":+3—+15V,噪声容限为2V。即要求接收器能识别高于+3V的信号作为逻辑0',低于-3V的信号作为逻辑"1,TTL电平为5V为逻辑正,0为逻辑负。与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。

(2)传输速率较低,在异步传输时,比特率为2OKbps;因此在51CPLD开发板中,综合程序波特率只能采用19200,也是这个原

因。

  1. 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
  2. 传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右。

RS485概述

在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。

RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。

RS485特点:

RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。针对RS-232-C的不足,新标准RS-485具有以下特点:

(1)RS-485的电气特性:逻辑"1"以两线间的电压差+2V~+6V表示,逻辑"O'以两线间的电压差-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接口方便地建立设备网络。

RS422概述

RS-422标准全称是°平衡电压数字接口电路的电气特性"”,它定义了接口电路的特性。实际上还有一根信号地线,共5根线。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10&Tlmes;4k+100Q(终接电阻)。

RS-422和RS-485电路原理基本相同,都是以差动方式发送和接受,不需要数字地线。差动工作是同速率条件下传输距离远的根本原因,这正是二者与RS232的根本区别,因为RS232是单端输入输出,双工工作时至少需要数字地线。发送线和接受线三条线((异步传输),还可以加其它控制线完成同步等功能。

RS-422通过两对双绞线可以全双工工作收发互不影响,而RS485只能半双工工作,发收不能同时进行,但它只需要一对双绞线。RS422和RS485在19kpbs下能传输1200米。用新型收发器线路上可连接台设备。

RS-422的电气性能与RS-485完全一样。主要的区别在于:RS-422有4根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422的收与发是分开的所以可以同时收和发(全双工);RS-485有2根信号线:发送和接收。

RS422特性:

RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XONXOFF握手)或硬件方式(一对单独的双绞线)。RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在10Okbls速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。

RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。

RS-232/RS-422/RS-485三者间的区别

1、RS232是全双工的,RS485是半双工的,RS422是全双工的。

2、RS485与RS232仅仅是通讯的物理协议(即接口标准)有区别,RS485是差分传输方式,RS232是单端传输方式,但通讯程序没有太多的差别。

PC机上已经配备有RS232,直接使用就行了,若使用RS485通讯,只要在RS232端口上配接一个RS232转RS485的转换头就可以了,不需要修改程序。

RS232/RS422/RS485接口外观有区别吗?

一般都是DB9,也有其他的,还是得看里面的线才知道到底是rs232rs422rs485里的哪种。RS232是标准接口,为D形9针头,所连接设备的接口的信号定义是一样的,其信号定义如下:

RS-232 只允许一对一通信(单站能力)

RS-485接口在总线上是允许连接多达128个 收发器(具有多站能力)

由于PC机默认的只带有RS232接口,有两种方法可以得到PC上位机的RS485电路:

(1)通过RS232/RS485转换电路将PC机串口RS232信号转换成RS485信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。

(2)通过PCl多串口卡,可以直接选用输出信号为RS485类型的扩展卡。

计算机通过RS232-RS485转换器,依次连接多台485设备门禁控制器),采用轮询方式,对总线上的设备轮流进行通讯。接线标示是485+485-,分别对应链接设备(控制器)的485+485-。

通讯距离:最远的设备(控制器)到计算机的连线理论上的距离是1200米,建议客户控制在800米以内,能控制在300米以内效果最好。如果距离超长,可以选购485中继器(延长器) (请向专业的转换器生产公司购买,中继器的放置位置是在总线中间还是开始,请参考相关厂家的说明书。)选购中继器理论上可以延长到3000米。

负载数量︰即一条485总线可以带多少台设备(控制器),这个取决于控制器的通讯芯片和485转换器的通讯芯片的选型,一般有32台,64台,128台,256台几种选择,这个是理论的数字,实际应用时,根据现场环境,通讯距离等因素,负载数量达不到指标数。微耕公司控制器和转换器按256台设计,实际建议客户每条总线控制在80台以内。

485通讯总线(必须用双绞线,或者网线的其中一组),如果用普通的电线(没有双绞)干扰将非常大,通讯不畅,甚至通讯不上。每台控制器设备必须手牵手地串下去,不可以有星型连接或者分叉。如果有星型连接或者分叉,干扰将非常大,通讯不畅,甚至通讯不上。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值