SPI 通信
SPI 是一种同步的全双工通信,支持一主多从
采用四根通信线
SCK(CK) : 串行时钟线
MOSI(DO) : 主机输出从机输入
MISO(DI) : 主机输入从机输出
SS(CS) : 从机选择
##移位寄存器
SPI 移位寄存器的时钟源由主机 波特率发生器提供,产生的时钟通过SCK接入从机的移位寄存器
主机高位通过MOSI输出到从机的低位
从机的高位通过MISO输出到主机的低位
这样SCK跳变8次 主机和从机就可以交换1个字节数据
SPI基本时序
- 起始条件:SS从高电平切换到低电平
- 终止条件:SS从低电平切换到高电平
交换一个字节
CPOL 时钟极性
CPHA 时钟相位
- 模式0 (CPOL =0 CPHA =0)
CPOL=0:空闲状态,SCK低电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据
SCK此时需要在上升沿开始前先移出一个数据 所以在SS的下降沿直接移出一个数据
SCK上升沿移入数据
- 模式1 (CPOL =0 CPHA =1)
CPOL=0:空闲状态,SCK低电平
CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据

在SS高电平时MISO为高阻态 SS低电平时MISO为低阻态(防止多个从机输出)
SCK此时第一个边沿为上升延 移出数据 第二个边沿为下降沿 移入数据
- 模式2 (CPOL =1 CPHA =0)
CPOL=1:空闲状态,SCK高电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据 - 模式3 (CPOL =1 CPHA =1)
CPOL=1:空闲状态,SCK高电平
CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据