I2C、UART、SPI详解及区别

一、通讯

1. 通讯的概念

    我们把计算机与外界的信息交换称之为通信。

2. 通讯方式分类

     基本的通信方式有两种:并行通讯和串行通讯。

     并行通信:所传送数据的各个位是同时发送或接收。速度快,占用引脚资源多

     串行通信:所传送数据的各位按顺序一位一位地发送或接收。占用引脚资源少,速度相  对较慢

3. 串行通讯种类

     串行通讯的种类有:异步通讯和同步通讯

1) 异步通讯:不带时钟同步信号,不是使用同一个时钟源。如UART、单总线

2) 异步通讯数据帧格式:一个起始位(低电平“0”)表示字符的开始;然后是 5~8 位数据 (D0-D7),规定低位在前,高位在后;其        后是奇偶校验位;最后是停止位(高电平“1”), 用以表示字符的结束。

3) 同步通讯:带时钟同步信号传输,通讯收发双方是受同一个时钟源控制。如IIC、SPI

4) 同步通讯数据帧格式:同步字符表示数据传输的开始(一般约定为1~2个字符)+数据流。

4. 串行通讯的数据传输速度

    串口传输的速率我们称为比特率也叫波特率,波特率是指一秒钟传输的位数。异步通信的数据传送速率一般为 50b/s~  100kb/s,单片机常用的波特率是:115200,9600。

5. 串行通讯的方式,按照数据传送方向,分为:

1) 单工制式:数据在甲机和乙机之间只允许单方向传送。两机之间只需 1 条数据线。

2) 半双工制式:在半双工制式下,数据在甲机和乙机之间允许双方向传送,但它们之间只有一个通信回路,接收和发送不能同时进行,只能分时发送和接收,因而两机之间只需1 条数据线。

3) 全双工制式:在全双工制式下,甲、乙两机之间数据的发送和接收可以同时进行,称为“全双工传送”。全双工形式的串行通信必须使用 2 条数据线。

 

二、UART

1、基本协议

1)空闲位:当总线处于空闲状态时信号线的状态为‘1’,即高电平
2)起始位:开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。因为空闲位一直是高电平所以开始第一次通讯时先发送一个明显区别于空闲状态的信号即为低电平。
3)数据位:起始位之后就是要传输的数据,数据可以是5,6,7,8,9位,构成一个字符,一般都是8位。先发送最低位最后发送最高位。
4)奇偶校验位:数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:

  • 无校验(no parity)
  • 奇校验(odd parity):如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’。
  • 偶校验(even parity):如果数据为中’1’的数目是偶数,则校验位为’0’,如果为奇数,校验位为’1’。
  • mark parity:校验位始终为1
  • space parity:校验位始终为0

5)停止位:数据结束标志,可以是1位,1.5位,2位的高电平

2、数据帧格式:

    一个起始位(低电平“0”)表示字符的开始;然后是 5~8 位数据 (D0-D7),规定低位在前,高位在后;其后是奇偶校验位;最后是停止位(高电平“1”),用以表示字符的结束。

 3、需要定义的参数:

  • 数据位(8位或者9位)
  • 奇偶校验位(第9位)
  • 停止位(1,1.5,2位)
  • 波特率设置

 

三、IIC

1. IIC 通讯概述

IIC 是飞利浦公司研发的两线式串行总线,分别为:串行数据 SDA(Serial Data)、串行时钟 SCL(Serial Clock)。总线数据传输速率在标准模式下可达 100kbit/s,快速模式下可达400kbit/s,高速模式下可达 3.4Mbit/s。

2. I²C 总线基本协议

1) 空闲状态:SCL 和 SDA 都保持着高电平。

2) 起始条件:总线在空闲状态时,SCL 和 SDA 都保持着高电平,当 SCL 为高电平期间而 SDA由高到低的跳变,表示产生一个起始条件。在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他 I2C 器件无法访问总线。

3) 停止条件:当 SCL 为高而 SDA 由低到高的跳变,表示产生一个停止条件。

4) 答应信号:每个字节传输完成后的下一个时钟信号,在 SCL 高电平期间,SDA 为低,则表示一个应答信号。

5) 非答应信号:每个字节传输完成后的下一个时钟信号,在 SCL 高电平期间,SDA 为高,则表示一个非应答信号

 

 

3. I²C 总线数据传输协议

当产生起始条件后,开始数据传输,这个阶段主设备在SCL线上的每一个脉冲,都会同时在SDA 线上传输一个数据位(数据发送顺序:先发高位,再发低位),每个字节完成后,跟着一个应答位。当不想再进行数据传输时,主机产生一个停止信号。

4. I²C 寻址方式

I²C 总线上的每一个 I²C 设备都对应一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上,主设备在传输有效数据之前要先指定从设备的地址。IIC 寻址方式为:固定地址(4 位)+  可编程地址(3 位)+读写控制位(1 位)。

5、I2C传输的要点就是:传输一个字节后面必然紧跟一个"响应"信号,这个响应信号可能来自主机,或者是从机,具体是谁,就要看传输方向。

传输方向分两种情况(每种情况又有两种可能: A无应答和 B有应答):

1.主机->从机,主机对从机发一个字节之后,主机要读取从机的响应信号(主机读SDA线)    

A) 主机读SDA为高电平,说明从机无应答

B) 主机读SDA为低电平,说明从机有应答

2.从机->主机, 主机读取从机一个字节之后,主机要向从机发送一个响应信号(主机写SDA线)   

A)  主机写SDA为高电平(即无应答信号),从机收到主机的无应答信号之后,从机停止传输,等待主机的停止信号。

B)  主机写SDA为低电平,从机收到主机的应答信号之后,从机继续输出下一字节。

注:起始和结束信号总是由主设备产生

 

四、SPI

         SPI 通讯协议是由 Motorola 公司开发的串行外围设备接口,是一种高速的,全双工,同步的通信总线。

1. SPI 数据传输

SPI 通讯协议规定传输的数据为 8 位,传输顺序是高位在前,低位在后。

2. SPI 总线工作方式

SPI 有四种传输方式:上升沿、下降沿、前沿、后沿。工作方式由串行同步时钟极性(CPOL)和时钟相位(CPHA)来共同决定。

3、SPI内部结构简明图

 

SPI接口一般使用4条线通信:

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

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

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

CS从设备片选信号,由主设备控制。

4、通信方式

SPI是一个环形总线结构,由CS、SCLK、MISO、MOSI构成,其时序其实很简单,主要是在SCLK的控制下,两个双向移位寄存器进行数据交换

1) 主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。

2) 串行移位寄存器通过MOSI信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换。

3) 外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

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

最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

 

五、区别

1、硬件上:

      SPI:四根线(MOSI、MISO、SCLK、CS)

      I2C:两根线(SCL、SDA)

      UART:三根线(TX、RX、GND)

2、I2C、SPI可挂载多个从设备,不同的是,I2C的从设备是通过地址来区分的,SPI的从设备是通过片选线来区分的

3、SPI、I2C同步通讯,UART异步通讯,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成。

4、SPI和UART可以实现全双工,但I2C不行;

5、速度上:SPI > I2C > UART

      I2C总线速度一般普遍慢于SPI,I2C一般的速度是100kbs、400kbps和1Mbps,而SPI的速度可以在几Mbps,也可以10+Mbps。UART和SPI、I2C不同,他是异步传输的,一般来说传输速度比较慢,传统的传输速度一般在115200bps或以下。

UART目前最常用的就是调试接口,因为UART比较简单,所以CPU输出log一般都通过一个UART口来输出。

 

  • 10
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值