SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片 的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

其工作模式有两种:主模式和从模式,无论那种模式,都支持3Mbit/s的速率,并且还具有传输完成标志和写冲突保护标志。

跟SPI密切相关的两个概念是时钟极性和时钟相位。

  • 时钟极性:表示时钟信号在空闲时是高电平还是低电平。

  • 时钟相位:决定数据是在SCK的上升沿采样还是在SCK的结束沿采样。

下面以矩力的7022B芯片为例子,分析SPI工作模式的设置。

在7022B的数据手册中,指出:在SCK的上升沿放数据,在下降沿取数据。在SCK的下降沿将DIN的数据采样到7022B中,在SCK的上升沿将7022B的数据放置在DOUT上面输出。

下面是模拟SPI总线对7022B进行读取的例子,这个例子生动表示了何时放数据,何时采样数据。

unsigned long Read_reg3(unsigned char cmd)
{
       int i;
       unsigned long data;