SPI串行同步全双工(本质:字节交换),4根通信线CLK,MISO,MOSI,SS
。
MISO:主入从出(主收从发)
MOSI:主出从入(主发从收)
CLK:时钟是一个振荡信号,它告诉接收端在确切的时机对数据线上的信号进行采样
SS:低电平有效,选择与哪个从机通信,低电平是通信开始,高电平通信结束
通信模式0 通信模式1 通信模式2 通信模式3
时钟极性 CPOL=0 CPOL=0 CPOL=1 CPOL=1
时钟相位 CPHA=0 CPHA=1 CPHA=0 CPHA=1
CPOL=1,空闲状态CLK为高电平;
CPOL=0,空闲状态CLK为低电平;
CPHA=0,CLK第一个边沿主机从机同时采样沿,第二个边沿主机从机移出最高位
CPHA=1,CLK第一个边沿主机从机同时移出最高位,第二个边沿主机从机采样
下图为通信模式3 :CPOL=1,CPHA=1
多从机模式:每个从机都需要一条单独的SS线。
优缺点
SPI通讯的优势
使SPI作为串行通信接口脱颖而出的原因很多;
- 全双工串行通信;
- 高速数据传输速率。
- 简单的软件配置;
- 极其灵活的数据传输,不限于8位,它可以是任意大小的字;
- 非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)。
SPI的缺点
- 没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
- 通常仅支持一个主设备;
- 需要更多的引脚(与I2C不同);
- 没有定义硬件级别的错误检查协议;
- 与RS-232和CAN总线相比,只能支持非常短的距离;