嵌入式Linux开发——SPI总线接口

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

 

 

模式1:

 

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

 

 

模式2:

 

 

 

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

 

 

 

模式3:

 

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

 

 

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

 

 

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页