特点

SPI也就是串行外设接口,是一种全双工的同步串行总线,一个主机与多个从机通信,它没有应答机制,广泛用于ADC,LCD与MCU的通信,通讯速率较高。

接线

  • 时钟线:SCK
  • 片选线:CS(NSS,SS)
  • 数据输入:MISO
  • 数据输出:MOSI

@CS线

每一个设备都有一个CS信号线,独占主机一个引脚。

SPI中没有设备地址,它用CS线来确定通信的设备。当CS线为低电平的时候,该设备被选中,主机与该设备通信。

CS线拉成低电平是通信的开始信号,拉成高电平表示通信的结束信号

@SCK

时钟信号线,用于通讯数据的同步。

在stm32中,SPI时钟速率是总线的一半。SPI1挂载在APB2总线上,最高速率为36Mhz,其他挂载在APB1上的,最高速率为18Mhz。

@MOSI

Master Output, Slave Input。

主设备输出,从设备输入。用于数据通信。

@MISO

Master Input, Slave Output。

主设备输入,从设备输出。用于数据通信。


通信流程

起始信号和结束信号

某个设备的CS线由高电平变为低电平则开始通信,由低电平变为高电平则停止通信。

数据有效性

看SCK线,SCK线上升沿触发则下降沿采样,下降沿触发则上升沿采样。

总之上升沿和下降沿其中一个是触发,其中一个是采样。

CPOL和CPHA

@CPOL

CPOL是时钟极性,是SPI总线空闲状态下的时钟线的电平高低。

如果CPOL为1,SCK线在空闲状态下为高电平。

如果CPOL为0,SCK线在空闲状态下为低电平。

@CPHA

CPHA是时钟相位,指的是数据的采样时刻。

如果CPHA为0,在SCK线的奇数边沿采样。

如果CPHA为1,在SCK线的偶数边沿采样。

上升沿采样还是下降沿采样由CPOL和CPHA共同决定。由CPOL和CPHA的各两种配置,构成了四种通讯模式,主机和从机需要在相同的模式下才可以通讯。否则数据有可能倒置。