从图中可以看出,SPI通讯需要4根线:一条时钟线SCK,两条数据线MOSI,MISO,一条片选信号线CS_N
SCK:时钟信号线,用于同步通讯数据,Master产生,决定了通讯的速率。
MOSI;主设备输出/从设备输入引脚。数据方向:主机---》从机
MISO;主设备输入/从设备输出。数据方向:主机《-----从机
CS_N: 片选信号引脚,(低电平有效)。只有cs_n为低电平时,表示主机选择了这个从机,这时主机才能与从机进行数据通讯。当cs_n被拉高时,则通讯结束。
当一主多从时,就有多个片选信号,主机给哪个片选拉低,就是与哪个进行通讯,其他三条线(sck,mosi,miso)则为共用。
SPI协议层spi通讯协议有四种模式,是由时钟极性(CPOL)和时钟相位(CPHA)来定义的。
CPOL:从设备空闲时(cs_n==1'b1)时钟sck的状态。sck=0,CPOL=0 sck =1, CPOL=1
CPHA:数据采样时,sck是奇数边沿还是偶数边沿。奇数边沿,CPHA= 0 偶数边沿,CHPA= 1
当CPHA=0时,采样时刻都是在SCK的奇数边沿,
但是当CPOL=0 时,时钟的奇数边沿是上升沿,
CPOL=1时,时钟的奇数边沿是下降沿,
类似的,当CPHA=1时,数据信号是在SCK的偶数边沿采样
以模式0为例
①cs_n信号由高变为低,SPI通讯的起始信号。⑥cs_n由低变为高,SPI的停止信号,表示此次通讯结束。
②③④⑤是表示数据在SCK下降沿期间进行变化,在SCK上升沿时被采样。
SPI每次传输可以是8位,或16位,每次传输的单位数不受限制。