0
点赞
收藏
分享

微信扫一扫

SPI简述(Linux驱动开发篇)

水沐由之 2022-02-13 阅读 96

1.SPI概述

  • I2C 是串行通信的一种只需要两根线就可以完成主机和从机之间的通信,但是 I2C 的速度最高只能到 400KHz。对于高速的传输就不太合适了
  • 也就是串行外围设备接口。SPI是一种同步串行接口术,是一种高速、全双工的同步通信总线,SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz
  • SPI 以主从方式工作,通常是有一个主设备和一个或个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输)

2.下面介绍一下标准的4线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通信都是由主机发起的,主机需要提供通信的时钟信号。

3.SPI有四种工作模式:

  • 通过CPOL(串行时钟极性)和CPHA(串行时钟相位)的搭配实现的。
  • 四种模式如下图:
    在这里插入图片描述
    1) CPOL=0,串行时钟空闲状态为低电平
    2) CPOL=1,串行时钟空闲状态为高电平,此时可以通过配置时钟相位(CPHA)来选择具体的传输协议
    3) CPHA=0,串行时钟的第一个跳变沿(上升沿或下降沿)采集数据
    4)CPHA=1,串行时钟的第二个跳变沿(上升沿或下降沿)采集数据

4.SPI读写时序

  • 根i2c一样,spi也是有时序图的,以上面的的模式1为例子。即CPOL=0,CPHA=0这个工作模式
  • SPI全双工通信的时序图如下:
    在这里插入图片描述
  • 上面看出,,SPI的时序图很简单,不像 I2C 那样还要分为读时序和写时序,因为 SPI是全双工的,所以读写时序可以一起完成。
    1)CS片选信号先拉低,选中要通信的从设备。
    2)然后通过 MOSI 和 MISO 这两根数据线进行收发数据。举个例子(MOSI 数据线发出了0XD2这个数据给从设备,同时从设备也通过 MISO线给主设备返回了0X66)
举报

相关推荐

0 条评论