I2C、SPI协议备忘

I2C、SPI协议备忘

1. I2C简介

I2C 是很常见的一种总线协议,I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。

在这里插入图片描述

1.1. I2C协议

支持多从机,一个 I2C 控制器下可以挂多个 I2C 从设备,这些不同的 I2C从设备有不同的器件地址,这样 I2C 主控制器就可以通过 I2C 设备的器件地址访问指定的 I2C设备。SDA 和 SCL 这两根线必须要接一个上拉电阻,一般是4.7K。其余的 I2C 从器件都挂接到 SDA 和 SCL 这两根线上,这样就可以通过 SDA 和 SCL 这两根线来访问多个I2C设备。

1.2. 起始位

I2C 通信起始标志,在 SCL 为高电平的时候,SDA 出现下降沿就表示为起始位。

在这里插入图片描述

1.3. 停止位

与起始位功能相反,停止I2C通信的标志位,SDL为高电平时,SDA出现下降沿就是停止位。

在这里插入图片描述

1.4. 数据传输

I2C 总线在数据传输的时候要保证在 SCL 高电平期间,SDA 上的数据稳定,因此 SDA 上的数据变化只能在 SCL 低电平期间发生

在这里插入图片描述

1.5. 应答信号

I2C主机发送完8位数据后会将SDA设置为输入状态,等待从机应答告诉主机收到。应答信号是由从机发出的,主机需要提供应答信号所需的时钟,主机发送完 8 位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过将 SDA 拉低来表示发出应答信号,表示通信成功,否则表示通信失败。

1.6. 写时序

  • I2C总线单字节写时序

在这里插入图片描述

  1. 起始位;
  2. 发送要写的I2C从设备地址;
  3. 读写位,0:写,1:读;
  4. 应答位,由从机发送应答信号;
  5. 重新起始位;
  6. 发送要写数据的寄存器地址;
  7. 应答;
  8. 写入寄存器的数据;
  9. 应答;
  10. 停止位;

(写时序分为三部分1-4是获取从设备设备地址)

  • I2C总线单字节读时序

在这里插入图片描述

读时序分为 4 部分,1-4 是发送设备地址,5-7 是发送要读取的寄存器地址,8-11 重新发送设备地址,12-14 是 I2C 从器件输出要读取的寄存器值。

  1. 起始位;
  2. 发送要读取的从设备地址;
  3. 读写位0(0:写,1:读);
  4. 应答;
  5. 起始位;
  6. 发送要读取的寄存器地址;
  7. 应答;
  8. 起始位;
  9. 从设备地址;
  10. 读写位1(0:写,1:读);
  11. 应答;
  12. 向寄存器写入的数据;
  13. 主机发出 NO ACK 信号,表示读取完成,不需要从机再发送 ACK 信号;
  14. 主机发出STOP信号,停止I2C通信;

注:多字节读写时序只是在读写时可以连续发送数据

2. SPI简介

SPI 和 I2C 都是串行通信,但 I2C 的速度最高只能到 400KHz,对于访问速度要求比价高的话 I2C 就不适合了,SPI 是一种高速、全双工的同步通信总线,SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。

2.1. SPI协议

SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输),设备连接图如下:

在这里插入图片描述

  • CS/SS

    Slave Select/Chip Select,片选信号线,用于选择需要通信的从设备。(从设备通过将片选信号拉低,来告诉主设备进行通信)

  • SCK

    Serial Clock,串行时钟,为 SPI 提供时钟。

  • MISO/SDI

    Master In Slave Out/Serial Data Iutput,主入从出信号线,只用于用户从主机向从机发送数据。

  • MOSI/SDO

    Master Out Slave In/Serial Data Output,主出从入信号线,只用于主机向从机发送数据。

2.2. SPI四种工作模式

通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式:

  1. CPOL=0,串行时钟空闲状态为低电平。
  2. CPOL=1,串行时钟空闲状态为高电平,此时可以通过配置时钟相位(CPHA)来选择具体的传输协议。
  3. CPHA=0,串行时钟的第一个跳变沿(上升沿或下降沿)采集数据。
  4. CPHA=1,串行时钟的第二个跳变沿(上升沿或下降沿)采集数据。

在这里插入图片描述

2.3. SPI 时序

以 CPOL=0,CPHA=0 这个工作模式为例,SPI 进行全双工通信的时序如图:

在这里插入图片描述

SPI 是全双工的,读写时序可以一起完成。如图,CS 片选信号先拉低,选中要通信的从设备,然后通过 MOSI 和 MISO 这两根数据线进行收发数据,MOSI 数据线发出了0XD2 这个数据给从设备,同时从设备也通过 MISO 线给主设备返回了 0X66 这个数据。

如有侵权之处,敬请联系删除。

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值