SPI协议详解

SPI协议简介

SPI 是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线,频率最高可以工作在上百 MHz。一般 SPI 需要4 根线(双工通信),但是也可以使用三根线(单工通信)。它被广泛地使用在ADC、LCD、存储器等设备中,适用于对通信速率要求较高的场合。

SPI接口特点

1、SCK时钟信号线只由主设备控制,从设备不能控制时钟信号线,在一个SPI的通信中,至少有个主设备。
2、与普通的串行通信不同,普通的串行通讯一次连续传输至少8位数据(比如UART,还有起始位、停止位、校验位(可有可无)),而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据,也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制
3、SPI是全双工通信,因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同的定义。在SCK时钟线的控制下,两个双向移位寄存器进行数据交换
4、在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显的简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比IIC系统要稍微复杂,SPI的一个缺点;没有指定的流控制,没有应答机制确认是否接收到数据

SPI 的硬件层

SPI是采用主从模式的一种通信方式,它支持一主一从、一主多从,不支持多主机模式。常见的一主多从的连接方式如下:

 CS/SS:从机片选使能信号线。该信号由主机进行控制。在一主对多从的模式下,每一个从机都需要一个CS/SS,用于主机选择和那个从机进行通信(一般为低电平有效)。当多个SPI从设备与SPI主机相连时,设备的其他信号线SCK、MOSI及MISO可以同时并联到相同的SPI总线上,即无论有多少个从设备,都可以共同使用这3条总线;每个从设备都有独立的一条 CS/SS信号线,即有多少个从设备,就有多少条片选信号线。区别于IIC协议通过设备地址进行寻址,从而完成与总线上某个设备进行通信方式的不同,SPI协议中没有设备地址,而是使用片选信号线来寻址,当主机要选择从设备时,通常情况下把该设备的片选信号线设置为低电平,从而使得该设备被选中,即片选有效,这样主机便和从设备之间建立通信。

SCK:时钟信号线。由主机产生并控制。用于通信数据同步,但不同设备支持的通信速率不一致,而且值得注意的是:两设备之间通信时,通信速率受限于低速设备。

MOSI/SDO:主设备输出/从设备输入引脚,这根数据线只能用于主机向从机发送数据。

MISO/SDI:主设备输入/从设备输出引脚,这根数据线只能用户从机向主机发送数据。

spi通信协议

  SPI的协议定义了通信的起始信号、停止信号、数据有效性、时钟同步等。它的通讯时序如下:

起始信号:CS/SS信号由高变低,即为SPI通讯的起始信号;时序图中的①为通信的起始信号,由主机控制CS/SS从高电平到低电平,从而选择要进行通信的从机,再通过主机产生时钟信号SCK,启动一次数据的传输。

停止信号:CS/SS信号由低变高,即为SPI通讯的停止信号;时序图中的⑥为通信的停止信号,由主机控制CS/SS从低电平到高电平,从而结束一次数据的传输。

数据有效性:SPI 使用 MOSI 及 MISO 信号线来传输数据,如信时序图的②③④⑤所示,可知MOSI及MISO的数据在在 SCK 的上升沿期间变化输出【触发】,在 SCK 的下降沿时被采样【采样】。即在 SCK 的下降沿时刻,MOSI 及 MISO 的数据有效,高电平时表示数据“1”,为低电平时表示数据“0”。在其它时刻,数据无效。

时钟同步:SPI 的数据传输是需要 使用 SCK 信号线进行数据同步。MOSI 及 MISO 数据线在 SCK 的每个时钟周期传输一位数据,这一个周期里要完成数据的准备和采样,且数据的输入和输出是同时进行的。SPI中数据是MSB 先行或 LSB先行,在协议中是没有硬性规定,只需通信双方保持统一即可。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值