很多学嵌入式的同学是不是经常被各种协议搞的晕头转向,都分不清是干嘛的? 今天华妹就给大家好好捋捋嵌入式常用的5大协议,全是干货,话不多说,赶紧上车! 01 UART总线通信协议 1. 原理 串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成, 通讯双方的数据包格式要约定一致才能正常收发数据。 2. 波特率 今天主要讲解的是串口异步通讯,异步通讯中由于没有时钟信号,所以两个通讯设备之间需要约定好波特率, 即每个码元的长度,以便对信号进行解码,上图中用虚线分开的每一格就是代表一个码元。常见的波特率为4800、9600、115200等。 3. 通讯的起始和停止信号 串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。 4. 有效数据 在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为5、6、7、8位长。 5. 数据校验 在有效数据之后,有一个可选的数据校验位,由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)。
02 IIC总线通信协议 1. IIC总线简介 I2C是Inter-Integrated Circuit的简称,读作:I-squared-C。由飞利浦公司于1980年代提出,为了让主板、嵌入式系统或手机用以连接低速周边外部设备而发展。主要用途:SOC和周边外设间的通信(如:EEPROM,电容触摸芯片,各种Sensor等)。 2. 物理接口 I2C总线只使用两条双向漏极开路的信号线(串行数据线:SDA,及串行时钟线:SCL),并利用电阻上拉。
I2C总线广泛应用在EEPROM、实时时钟、LCD及其他芯片的接口。 I2C允许相当大的工作电压范围,典型的电压基准为:+3.3V或+5V。 常见的I2C总线以传输速率的不同分为不同的模式:标准模式(100Kbit/s)、低速模式(10Kbit/s)、快速模式(400Kbit/s)、高速模式(3.4Mbit/s), 时钟频率可以被下降到零,即暂停通信。该总线是一种多主控总线,即可以在总线上放置多个主设备节点,在停止位(P)发出后,即通讯结束后,主设备节点可以成为从设备节点。 主设备节点:产生时钟并发起通信的设备节点。 从设备节点:接收时钟并响应主设备节点寻址的设备节点。 (1) I2C通信双方地位不对等,通信由主设备发起,并主导传输过程,从设备按I2C协议接收主设备发送的数据,并及时给出响应。 (2) 主设备、从设备由通信双方决定(I2C协议本身无规定),既能当主设备,也能当从设备(需要软件进行配置)。 (3) 主设备负责调度总线,决定某一时刻和哪个从设备通信。同一时刻,I2C总线上只能有一对主设备、从设备通信。 (4) 每个I2C从设备在I2C总线通讯中有一个I2C从设备地址,该地址唯一,是从设备的固有属性,通信中主设备通过从设备地址来找到从设备。 3. 总线状态 空闲态:没有设备发生通信。 忙态:其中一个从设备和主设备通信,I2C总线被占用,其他从设备处于等待状态。 4. 通信协议 时序:在通信中时序是通信线上按时间顺序发生的电平变化,及这些电平变化对通信的意义。 每个通信周期都由一个起始位开始通信,由一个结束位结束通信,中间部分是传递的数据。 4.1 起始位和停止位 I2C总线通讯由起始位开始通讯,结束位停止通讯,并释放I2C总线。起始位和结束位都由主设备发出。 起始位(S):在SCL为高电平时,SDA由高电平变为低电平。 结束位(P):在SCL为高电平时,SDA由低电平变为高电平。 4.2 数据格式与应答 I2C数据以字节(即8bits)为单位传输,每个字节传输完后都会有一个ACK应答信号。应答信号的时钟是由主设备产生的。 应答(ACK):拉低SDA线,并在SCL为高电平期间保持SDA线为低电平。 非应答(NOACK):不要拉低SDA线(此时SDA线为高电平),并在SCL为高电平期间保持SDA线为高电平。 在传输期间,如果从设备来不及处理主设备发送的数据,从设备会保持SCL线为低电平,强迫主设备等待从设备释放SCL线,直到从设备处理完后,释放SCL线,接着进行数据传输。 5. 数据传输通讯 5.1 写数据 开始数据传输后,先发送一个起始位(S),主设备发送一个地址数据, 然后主设备释放SDA线,并等待从设备的应答信号(ACK)。每一个字节数据的传输都要跟一个应答信号位。数据传输以停止位(P)结束,并且释放I2C总线。 5.2 读数据 开始通讯时,主设备先发送一个起始信号(S),主设备发送一个地址数据, 然后主设备释放SDA线,并等待从设备的应答信号(ACK)。从设备应答主设备后,主设备再发送要读取的寄存器地址,从设备应答主设备(ACK)。主设备再次发送起始信号(Sr),主设备发送设备地址(包含读标志),从设备应答主设备,并将该寄存器的值发送给主设备。 03 SPI总线通讯协议 1. 什么是SPI SPI接口是Motorola首先提出的全双工同步串行总线,采用主从模式(Master Slave)架构,支持多slave模式应用。 在实际开发过程中,大多数采用单Master。多slave模式时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后;也可以低位在前,高位在后。 SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。 2. SPI总线硬件连接 SPI四根信号线
M:master O:output S:slave I:input (1) MOSI:主器件数据输出(写),从器件数据输入(读) (2) MISO:主器件数据输入,从器件数据输出 (3) SCLK :时钟信号,由主器件产生 (4) /SS:从器件使能信号,由主器件控制(片选线) 3. SPI优点 支持全双工通信、通信简单、数据传输速率快。 4. SPI缺点 没有指定的流控制、没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据,可靠性上有一定的缺陷。 5. 协议通信时序详解
6. SPI总线通信模式 04 RS232总线描述 1. 概述 RS-232接口符合电子工业联盟(EIA)建立的串行数据通信接口标准。原始编号是EIA-RS-232(简称232,RS232),它广泛用于计算机串行接口外设连接。连接电缆以及机械、电气、信号和传输过程。RS-232-C标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。 2. 特性 RS-232是现在主流的串行通信接口之一。由于RS232接口标准出现较早,难免有不足之处,主要有以下四点: (1) 接口的信号电平值较高,易损坏接口电路的芯片。RS232接口任何一条信号线的电压均为负逻辑关系。即:逻辑“1”为-3—-15V;逻辑“0”:+3—+15V,噪声容限为2V。即要求接收器能识别高于+3V的信号作为逻辑“0”,低于-3V的信号作为逻辑“1”,TTL电平为5V为逻辑正,0为逻辑负。与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2) 传输速率较低,在异步传输时,比特率为20Kbps;因此在51CPLD开发板中,综合程序波特率只能采用19200,也是这个原因。 (3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4) 传输距离有限。最大传输距离标准值为50英尺,实际上也只能用在15米左右。 05 RS485概述 1. 场景 在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线,RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。 2. RS485特点 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接口方便地建立设备网络。 06 IIC总线和SPI总线对比 1. 相同点 均采用串行同步总线、都采用TTL电平、主从模式架构。 2. 不同点
07 RS232和RS484总线对比 工作模式:RS232 为全双工,RS485 为半双工。 传输方式:RS485和RS232只是物理协议的通信(即接口标准),RS485是差分传输方式,RS232是单端传输方式,但通信程序没有太大区别 信号线:RS485接口组成的半双工网络,一般只需二根信号线。RS-232 口一般只使用 RXD、TXD、GND 三条线 抗干扰性:RS485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰 传输距离:RS485接口的最大传输距离标准值为1200米(9600bps时),实际上可达3000米。RS232传输距离有限,最大传输距离标准值为50米,实际上也只能用在15米左右。 通信能力:RS485接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS485 接口方便地建立起设备网络。RS232只允许一对一通信 传输速率:RS232传输速率较低,在异步传输时,波特率为20Kbps。RS485的数据最高传输速率为10Mbps。 电气电平值:RS485的逻辑'1'以两线间的电压差为+(2-6)V 表示;逻辑'0'以两线间的电压差为-(2-6)V表示。在 RS232中任何一条信号线的电压均为负逻辑关系,即:逻辑'1',-(5-15)V;逻辑'0 ' +(5- 15)V 。 |
|
来自: 新用户25123383 > 《多联机》