1.简介
SPI(Serial Peripheral Interface)协议是一种全双工同步通信协议,支持总线挂载多设备(一主多从),SPI有四根信号线
- SCK(Serial Clock) 时钟线
- MOSI(Master Output Slave Input) 主机输出、从机输入
- MISO(Master Input Slave Output) 主控输入、从机输出
- SS(Slave Select) 或者 CS(chip select) 从机选择
SPI协议并没有规定通信速率。
2.SPI协议
SPI协议是非常粗暴的,所有设备的SCK,MOSI,MISO连接在一起,对于每个设备分配一根连接到主机的SS引脚。
输出引脚配置为推挽输出,输入引脚为浮空或上拉输入
2.1寻址
主机直接向从机的SS发送使能信号
2.2 数据传输
SPI没有起始信号和结束信号,也没有应答。
采用同步方式工作,SCK时钟线在上升沿或下降沿时,向数据线上发送数据,在下一个跳变沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。
2.3时序基本单元
参数
- CPOL(Clock Polarity) 时钟极性
- CPHA(Clock Phase) 时钟相位
SPI有四种工作模式,可以通过配置CPOL和CPHA来调节
-
模式0(CPOL=0, CPHA=0):在空闲时刻,时钟线为低电平。数据在时钟的上升沿被采样,即数据在时钟的上升沿变化,下降沿被读取。
-
模式1(CPOL=0, CPHA=1):在空闲时刻,时钟线为低电平。数据在时钟的下降沿被采样,即数据在时钟的下降沿变化,上升沿被读取。
-
模式2(CPOL=1, CPHA=0):在空闲时刻,时钟线为高电平。数据在时钟的下降沿被采样,即数据在时钟的下降沿变化,上升沿被读取。
-
模式3(CPOL=1, CPHA=1):在空闲时刻,时钟线为高电平。数据在时钟的上升沿被采样,即数据在时钟的上升沿变化,下降沿被读取。
可以通过这张图片直观看到
3.SPI与IIC
相比于IIC,SPI的速率要快得多,其使用推挽输出模式,上拉能力大大强于IIC,信号变化快,能轻轻松松达到MHz的速度级别,但是对硬件的要求也比较高,也同样是用于短距离之间的芯片通信