【通信传输协议】总线协议之SPI

发布时间 2023-10-18 18:35:12作者: AnchorX

一、SPI简介

串行外设接口 serial peripheral interfacce,是摩托罗拉公司最先推出的一种同步串行传输规范。

高速、全双工、同步的串行通信总线。

SPI有主从两种模式,通常由一主多从模块组成。

SPI通信需要至少4根线,单向传输时3根,MISO(主设备入)、MOSI(主设备出)、SCLK和CS/SS(片选)。

 

二、SPI通信原理及通信过程

SPI通信方式主要由一主一从和一主多从。其中一主多从通信方式又分为常规模式和菊花链模式。

  • 常规模式

常规模式比一主一从多了片选线,其他情况跟一主一从模式一致。

  • 菊花链模式

菊花链模式是由主机的MOSI连到第一台从机的MOSI,再由MISO-MOSI在设备间互联,由最后一台从机MISO到主机的MISO。

  • 通信原理

SPI主设备和从设备都有一个串行移位寄存器,Master通过向Slave的串行寄存器写入一个字节来发起一次传输。SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。

即:每次Master所谓的往Slave中“写入”数据时,Slave的移位寄存器会把最后一位“写”给Master,所以说读写操作是同步的。如果Master想要“读”Slave“时,就往Slave中随便传输一个数,Slave就会向Master发送移位寄存器中最后一位的数。

"SPI发送数据是从高位开始,UART发送数据是从低位开始。比如一个字节0x6B,0110_1011,SPI先发0,UART先发1。"

 

  • 通信过程
    • 1、主设备发起信号,将CS/SS拉低,启动通信;
    • 2、主设备通过发送时钟信号,告诉从设备进行写数据或者读数据操作(采样时机可能是时钟上升沿或下降沿),因为SPI有4种通信模式,它将立即读取数据线上的信号,从而收到1bit;
    • 3、主设备将要发送的数据写到发送数据缓存区(Memory),Memory经过移位寄存器(缓存长度不一定),移位寄存器通过MOSI信号将字节一位一位的移位传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
    • 4、从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机,同时通过MOSI信号线接收主机发送的数据,这样两个移位寄存器中的内容就被交换。

 SPI传输完一个字节后无需应答即可开始下一个字节的传送。

 

三、极性和相位

SPI通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式,也就是四种采样时机。

CPOL:表示SCLK空闲时的状态

       CPOL = 0,串行时钟空闲状态为低电平;

       CPOL = 1,串行时钟空闲状态为高电平;

CPHA:表示采样时刻

       CPHA = 0,串行时钟的第一个跳变沿(上升沿或下降沿)采集数据;

  CPHA = 1,串行时钟的第二个跳变沿(上升沿或下降沿)采集数据;

 

四、SPI和IIC的区别

相同点:

都是串行,同步总线;

均采用TTL电平,传输距离有限,不同于485可以最长传输1200m;

均采用主从方式工作。

 

不同点:

IIC半双工, SPI全双工;

IIC多主多从,所以需要应答机制,确定数据没有发错;SPI一主一从或多从,没有应答机制;IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址;

IIC时钟极性和相位固定,SPI时钟极性和相位可调。