SPI 协议详解

Posted 行稳方能走远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPI 协议详解相关的知识,希望对你有一定的参考价值。

参考:SPI 协议详解
作者:一只青木呀
发布时间: 2020-09-21 17:20:07
网址:https://blog.csdn.net/weixin_45309916/article/details/108713843

同I2C 一样,SPI 是很常用的通信接口,也可以通过SPI 来连接众多的传感器。相比I2C 接口,SPI 接口的通信速度很快I2C 最多400KHz,但是SPI 可以到达几十MHz。I.MX6U 也有4 个SPI 接口,可以通过这4 个SPI 接口来连接一些SPI 外设。I.MX6U-ALPHA 使用SPI3 接口连接了一个六轴传感器ICM-20608,本章我们就来学习如何使用I.MX6U 的SPI 接口来驱动
ICM-20608,读取ICM-20608 的六轴数据。

1、SPI 简介

上一章我们讲解了I2C,I2C 是串行通信的一种,只需要两根线就可以完成主机和从机之间的通信,但是I2C 的速度最高只能到400KHz,如果对于访问速度要求比价高的话I2C 就不适合了。本章我们就来学习一下另外一个和I2C 一样广泛使用的串行通信:SPI。

SPI 全称是 Serial Perripheral Interface,也就是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线, SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。 SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输)

2、SPI四线

  • ①、 CS/SS, Slave Select/Chip Select,这个是片选信号线,用于选择需要进行通信的从设备。I2C 主机是通过发送从机设备地址来选择需要进行通信的从机设备的, SPI 主机不需要发送从机设备,直接将相应的从机设备片选信号拉低即可。
  • ②、 SCK, Serial Clock,串行时钟,和 I2C 的 SCL 一样,为 SPI 通信提供时钟。
  • ③、 MOSI/SDO, Master Out Slave In/Serial Data Output,简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是主机输出,从机输入。
  • ④、 MISO/SDI, Master In Slave Out/Serial Data Input,简称主入从出信号线,这根数据线只能用户从机向主机发送数据,也就是主机输入,从机输出。

SPI 通信都是由主机发起的,主机需要提供通信的时钟信号。主机通过 SPI 线连接多个从设备的结构如下图所示:

3、SPI四种工作模式

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

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

这四种工作模式如下图所示:

4、SPI时序图

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

从上图可以看出, SPI 的时序图很简单,不像 I2C 那样还要分为读时序和写时序,因为 SPI 是全双工的,所以读写时序可以一起完成。图中CS 片选信号先拉低,选中要通信的从设备,然后通过 MOSI 和 MISO 这两根数据线进行收发数据, MOSI 数据线发出了0XD2 这个数据给从设备,同时从设备也通过 MISO 线给主设备返回了 0X66 这个数据。这个就是 SPI 时序图。

以上是关于SPI 协议详解的主要内容,如果未能解决你的问题,请参考以下文章

SPI协议详解

SPI 协议详解

SPI协议详解

SPI总线详解

spi协议时序图和四种模式实际应用详解

SPI协议详解(Standard SPIDual SPI和Queued SPI)