其他分享
首页 > 其他分享> > SPI协议

SPI协议

作者:互联网

一、SPI协议简介

SPI(serial peripheral interface)是一种同步串行通信协议,由一个主设备和一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据的交换。SPI是一种高速全双工同步通信总线,标准的SPI仅仅使用4个引脚,主要应用在 EEPROM, Flash, 实时时钟(RTC), 数模转换器(ADC), 数字信号处理器(DSP) 以及数字信号解码器之间。有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上。由于在芯片中只占用四根管脚 (Pin) 用来控制以及数据传输, 节约了芯片的 pin 数目, 同时为 PCB 在布局上节省了空间。 正是出于这种简单易用的特性, 现在越来越多的芯片上都集成了 SPI技术。SPI通讯需要使用4条线:3条总线和1条片选:
在这里插入图片描述

二、SPI协议总线

SPI总线包括4条逻辑线,定义如下:

名称解释
MISOMaster input slave output 主机输入,从机输出(数据来自从机)
MOSIMaster output slave input 主机输出,从机输入(数据来自主机)
SCLKSerial Clock 串行时钟信号,由主机产生发送给从机
CSSlave Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号

其他制造商可能会遵循其他命名规则,但是最终他们指的相同的含义。以下是一些常用术语:

名称常用术语
MISOSIMO,DOUT,DO,SDO或SO(在主机端)
MOSISOMI,DIN,DI,SDI或SI (在主机端)
SCLKSCK
CSCE,CS或SSEL

在这里插入图片描述

三、SPI四种工作模式

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

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

在这里插入图片描述
在这里插入图片描述

四、SPI协议时序

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

五、SPI的优缺点

优点缺点
①支持全双工通信①没有指定的流控
②通信简单②没有应答机制确认是否接受到数据
③数据传输速率快

六、SPI协议特点

SPI协议特点
①高速、同步、全双工、非差分、总线式
②主从机通信模式

标签:协议,CPOL,总线,CPHA,SPI,串行,时钟
来源: https://blog.csdn.net/weixin_39269366/article/details/120618183