分享

笔试常考:嵌入式5大常用协议(UART、RS232、RS485、IIC、SPI)

 新用户25123383 2023-07-05 发布于江苏

很多学嵌入式的同学是不是经常被各种协议搞的晕头转向,都分不清是干嘛的?

今天华妹就给大家好好捋捋嵌入式常用的5大协议,全是干货,话不多说,赶紧上车!

01

UART总线通信协议

1. 原理

串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成, 通讯双方的数据包格式要约定一致才能正常收发数据。

文章图片1

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)。

  • 奇校验要求有效数据和校验位中'1'的个数为奇数,比如一个8位长的有效数据为:01101001,此时总共有4个'1',为达到奇校验效果,校验位为'1', 最后传输的数据将是8位的有效数据加上1位的校验位总共9位。
  • 偶校验与奇校验要求刚好相反,要求帧数据和校验位中'1'的个数为偶数,比如数据帧:11001010,此时数据帧'1'的个数为4个,所以偶校验位为'0'。
  • 0校验是不管有效数据中的内容是什么,校验位总为'0'。
  • 1校验是校验位总为'1'。
  • 无校验的情况下,数据包中不包含校验位。

02

IIC总线通信协议

1. IIC总线简介

I2C是Inter-Integrated Circuit的简称,读作:I-squared-C。由飞利浦公司于1980年代提出,为了让主板、嵌入式系统或手机用以连接低速周边外部设备而发展。主要用途:SOC和周边外设间的通信(如:EEPROM,电容触摸芯片,各种Sensor等)。

2. 物理接口

I2C总线只使用两条双向漏极开路的信号线(串行数据线:SDA,及串行时钟线:SCL),并利用电阻上拉。

  • SCL(Serial Clock):串行时钟线,传输CLK信号,一般是主设备向从设备提供
  • SDA(Serial Data):串行数据线,传输通信数据 I2C使用一个7bit的设备地址,一组总线最多和112个节点通信。最大通信数受限于地址空间及400pF的总线电容。

I2C总线广泛应用在EEPROM、实时时钟、LCD及其他芯片的接口

I2C允许相当大的工作电压范围,典型的电压基准为:+3.3V或+5V

常见的I2C总线以传输速率的不同分为不同的模式:标准模式(100Kbit/s)、低速模式(10Kbit/s)、快速模式(400Kbit/s)、高速模式(3.4Mbit/s), 时钟频率可以被下降到零,即暂停通信。该总线是一种多主控总线,即可以在总线上放置多个主设备节点,在停止位(P)发出后,即通讯结束后,主设备节点可以成为从设备节点。

主设备节点:产生时钟并发起通信的设备节点。

从设备节点:接收时钟并响应主设备节点寻址的设备节点。

文章图片2

(1) I2C通信双方地位不对等,通信由主设备发起,并主导传输过程,从设备按I2C协议接收主设备发送的数据,并及时给出响应。

(2) 主设备、从设备由通信双方决定(I2C协议本身无规定),既能当主设备,也能当从设备(需要软件进行配置)。

(3) 主设备负责调度总线,决定某一时刻和哪个从设备通信。同一时刻,I2C总线上只能有一对主设备、从设备通信。

(4) 每个I2C从设备在I2C总线通讯中有一个I2C从设备地址,该地址唯一,是从设备的固有属性,通信中主设备通过从设备地址来找到从设备。

3. 总线状态

空闲态:没有设备发生通信。

忙态:其中一个从设备和主设备通信,I2C总线被占用,其他从设备处于等待状态。

4. 通信协议

时序:在通信中时序是通信线上按时间顺序发生的电平变化,及这些电平变化对通信的意义。

每个通信周期都由一个起始位开始通信,由一个结束位结束通信,中间部分是传递的数据。

4.1 起始位和停止位

I2C总线通讯由起始位开始通讯,结束位停止通讯,并释放I2C总线。起始位和结束位都由主设备发出。

起始位(S):在SCL为高电平时,SDA由高电平变为低电平。

结束位(P):在SCL为高电平时,SDA由低电平变为高电平。

文章图片3

4.2 数据格式与应答

I2C数据以字节(即8bits)为单位传输,每个字节传输完后都会有一个ACK应答信号。应答信号的时钟是由主设备产生的。

应答(ACK):拉低SDA线,并在SCL为高电平期间保持SDA线为低电平。

非应答(NOACK):不要拉低SDA线(此时SDA线为高电平),并在SCL为高电平期间保持SDA线为高电平。

在传输期间,如果从设备来不及处理主设备发送的数据,从设备会保持SCL线为低电平,强迫主设备等待从设备释放SCL线,直到从设备处理完后,释放SCL线,接着进行数据传输。

文章图片4

5. 数据传输通讯

5.1 写数据

开始数据传输后,先发送一个起始位(S),主设备发送一个地址数据, 然后主设备释放SDA线,并等待从设备的应答信号(ACK)。每一个字节数据的传输都要跟一个应答信号位。数据传输以停止位(P)结束,并且释放I2C总线。

文章图片5

5.2 读数据

开始通讯时,主设备先发送一个起始信号(S),主设备发送一个地址数据, 然后主设备释放SDA线,并等待从设备的应答信号(ACK)。从设备应答主设备后,主设备再发送要读取的寄存器地址,从设备应答主设备(ACK)。主设备再次发送起始信号(Sr),主设备发送设备地址(包含读标志),从设备应答主设备,并将该寄存器的值发送给主设备。

文章图片6

03

SPI总线通讯协议

1. 什么是SPI

SPI接口是Motorola首先提出的全双工同步串行总线,采用主从模式(Master Slave)架构,支持多slave模式应用。

在实际开发过程中,大多数采用单Master。多slave模式时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后;也可以低位在前,高位在后。

SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。

2. SPI总线硬件连接

SPI四根信号线

  • 设备选择线:NSS
  • 时钟线:SCL
  • 串行输出数据线:MOSI
  • 串行输入数据线:MISO

M:master O:output S:slave I:input

(1) MOSI:主器件数据输出(写),从器件数据输入(读)

(2) MISO:主器件数据输入,从器件数据输出

(3) SCLK :时钟信号,由主器件产生

(4) /SS:从器件使能信号,由主器件控制(片选线)

文章图片7

3. SPI优点

支持全双工通信、通信简单、数据传输速率快。

4. SPI缺点

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

5. 协议通信时序详解

文章图片8
  • 起始信号: NSS信号线由高变低,是SPI通讯的起始信号。
  • 结束信号:NSS信号由低变高,是SPI通讯的停止信号。
  • 数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行 的。SPI每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。

6. SPI总线通信模式

文章图片9
文章图片10
文章图片11

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. 不同点

  • IIC总线为半双工通信,因为IIC总线只有一根SDA数据线。
  • SPI总线为全双工通信,因为SPI总线有两个单向的数据线(MOSI和MISO)。
  • IIC总线有应答信号,SPI总线没有应答信号。
  • IIC总线通过寻址进行选择和哪一个从机进行通信。
  • SPI总线通过片选线选择和哪一个从机进行通信,片选线向从机发送使能信号。
  • 比如说有10个从机设备,需要10根片选线,比较浪费硬件引脚资源。
  • IIC总线通过高低电平的变化进行数据传输。
  • SPI总线边沿触发,边沿采样。


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 。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多