总线 ---- SPI总线协议

简介

SPI是Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。
在芯片的管脚上占用四根线,SPI的四根线分别为:
SDI(MISO) :主器件数据输入,从器件数据输出
SDO(MOSI) :主器件数据输出,从器件数据输入
SCLK:时钟信号,由主器件产生。
CS:从器件使能信号,由主器件控制选择实能哪个器件

spi主从硬件连接图

在这里插入图片描述

内部工作原理图

SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。串行移位寄存器通过MOSI信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换。
外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
在这里插入图片描述

四种工作模式

由CPOL(时钟极性)和CPHA(时钟相位)决定
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时;
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时;
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿;
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿
在这里插入图片描述