SPI总线接口

来源:互联网 发布:sql库位库存分配 编辑:程序博客网 时间:2024/06/06 01:50

SPI(Serial PeripheralInterface,串行外设接口):

Motorola公司提出的一种同步串行数据传输标准,是一种高速的,全双工,同步的通信总线,在很多器件中被广泛应用。

SPI的硬件接口如下所示:


(1)CLK –时钟信号,该信号频率可由Master内部分频调整,以适应不同从设备;

(2)/CS  – 片选信号,由主器件控制,可以使用SPI模块的片选,也可以用GPIO;

(3)MOSI –主器件数据输出,从器件数据输入;

(4)MISO –主器件数据输入,从器件数据输出。

 

由于片选信号/CS的存在,SPI接口不需要进行寻址操作,只需要对从设备进行片选使能,因为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。


SPI时序详解:

SPI有四种模式,可以为不同的从设备提供不同的模式,具体模式由CPOL和CPHA信号决定,两个信号的含义如下:

  CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线空闲为高电平

  CPHA:时钟相位选择,为0时在SCK第一个跳变沿采样,为1时在SCK第二个跳变沿采样

模式0:



当CPHA=0、CPOL=0时SPI总线工作在方式1。MISO引脚上的数据在第一个SPSCK沿跳变之前已经上线了,而为了保证正确传输,MOSI引脚的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。


模式1:


当CPHA=0、CPOL=1时SPI总线工作在方式2。与前者唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号,上升沿时下一位数据上线。


模式2:


当CPHA=1、CPOL=0时SPI总线工作在方式3。MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。


模式3:


当CPHA=1、CPOL=1时SPI总线工作在方式4。与前者唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。


数据传输
 
在一个SPI时钟周期内,会完成如下操作:
  1) 主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;
  2) 从机通过MISO线发送1位数据,主机通过该线读取这1位数据。
  这是通过移位寄存器来实现的。主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。






原创粉丝点击