SPI通信协议

SPI是一种高速全双工同步通信协议,常用于连接主设备和多个从设备,如传感器。它包括四根线:CS/SS、SCK、MOSI/SDO和MISO/SDI。通信由主机发起,主机提供时钟信号并可以选择从设备。SPI有四种工作模式,由CPOL和CPHA定义。时序图展示了数据在时钟边沿的传输,读写操作同步进行。

一.   SPI协议简介

SPI全称是 Serial Perripheral Interface),也就是串行外围设备接口。是一种高速、全双工同步通信总线。

SPI 是很常用的通信接口,也可以通过 SPI 来连接众多的传感器。

SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备, SPI通信一般 需要 4 类线(一个从设备时为 4 根线;如果两个从设备,则需要 5根线:SCL时钟线,MOSI,MISO,两个片选信号(不包括接地GND线))。

SPI传输速度:SPI 接口的通信速度很快,I2C 最多 400KHz,但是 SPI 可以到达几十 MHz

二.  SPI 协议

1.  SPI的硬件通信线

本章我们讲解标准的 4 线 SPI。

SPI通信的四根线如下:

(1)  SCK,Serial Clock,串行时钟,SPI 通信提供时钟。

(2) CS/SS(Slave Select/Chip Select),为片选信号线,用于选择需要进行通信的从设备。

硬件片选时,完全由SPI控制器的硬件自动拉低或拉高CS片选信号;

软件片选时,则需要软件实现CS片选的拉低或拉高操作,即使用通过GPIO来模拟CS片选功能;

(3)  MOSI/SDO,Master Out Slave In/Serial Data Output,简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是主机输出,从机输入。

(4)  MISO/SDI,Master In Slave Out/Serial Data Input,简称主入从出信号线,这根数据线只能用户从机向主机发送数据,也就是主机输入,从机输出。

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

2.  SPI协议

注意:SPI通信协议的全双工,同步通信的理解:

SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。

如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节(例如,发送0x00或者 0xFF)来引发从机的传输。

换句话理解就是,主机向从机发一个字节的数据必然会收到一个字节的数据;你要收一个字节的数据,必须也要先发一个字节的数据。 
如果读从设备数据时,主机不发送一些数据,则主机接收不到数据(可能接收到的数据是 一些 0,也就是空数据)。

SPI 四种工作模式

SPI 有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式,规则如下
时钟极性(CPOL)定义 SCK 在空闲状态(未传输数据时) 的电平:
(1)  CPOL=0:串行时钟空闲状态为低电平。

(2) CPOL=1:串行时钟空闲状态为高电平。

时钟相位(CPHA)定义数据在 SCK 的哪个边沿(上升沿 / 下降沿)被采样或发送

(3) CPHA=0:数据在 SCK 的第一个边沿(CPOL=0 时为上升沿,CPOL=1 时为下降沿)被采样;

(4) CPHA=1:数据在 SCK 的第二个边沿(CPOL=0 时为下降沿,CPOL=1 时为上升沿)被采样。

通过以上两两组合即可以组成四种工作模式。四种工作模式如下:

SPI 通信时序

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

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

其他三种工作模式的时序图不做具体的介绍了,与上述的类似。SPI协议简单介绍完成。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值