物理层
串行全双工总线
需要四根线:SCLK(时钟线),CS(片选线)、MOSI(主设备输出、从设备输入),MISO(主设备输入,从设备输出)。
片选信号
片选信号CS是用来选择主机与哪一个从机进行通信的信号线。当从机的片选信号为1使能时,主机和谁通信,那根CS线就是高电平,其余CS线为低电平。这样SPI至少需要四根线。
通信过程
先发高位,后发低位(与IIC相同),串口则是先发低位,后发高位。
在时钟线上升沿或者下降沿的时候发送器向数据线发送数据,紧接着的下一个上升沿或者下降沿,接收器从数据线上接收数据(取决于四种模式)
四种模式
SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素
CPOL表示SCLK空闲时的状态
CPOL=0,空闲时SCLK为低电平
CPOL=1,空闲时SCLK为高电平
CPHA表示采样时刻
CPHA=0,即表示输出(out)端在上一个时钟周期的后沿改变数据,而输入(in)端在时钟周期的前沿(或不久之后)捕获数据。输出端保持数据有效直到当前时钟周期的尾部边缘。对于第一个时钟周期来说,第一位的数据必须在时钟前沿之前出现在MOSI线上。也就是一个CPHA=0的周期包括半个时钟空闲和半个时钟置位的周期。
CPHA=1,即表示输出(out)端在当前时钟周期的前沿改变数据,而输入(in)端在时钟周期的后沿(或不久之后)捕获数据。输出端保持数据有效直到下一个时钟周期的前沿。对于最后一个时钟周期来说,从机设备在片选信号消失之前保持MISO信号线有效。也就是一个CHPA=1的周期包括半个时钟置位和半个时钟空闲的周期。