1.概念
SPI接口是Motorola提出的全双工三线同步串行总线,采用主从模式(Master-Slave)架构(一主多从)
*SPI总线硬件连接:四线制或者三线制(从机片选接地 永远被选中)
2.特性
- 全双工;
- 可以当作主机或从机工作;
- 提供频率可编程时钟;
- 发送结束中断标志;
- 写冲突保护;
- 总线竞争保护
3.协议
- 起始信号:NSS信号线由高变低,是SPI通讯的起始信号
- 终止信号:NSS信号线由低变高,是SPI通讯的停止信号
- 数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。
MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。
SPI每次数据传输可以8位或16位为单位,每次传输的单位数不受限制
4.使用方法
SPI总线的主机和从机都有一个移位寄存器,当主机向自己的移位寄存器写入数据时,数据会通过MOSI信号线进入到从机的移位寄存器;
同时,从机移位寄存器里的数据,通过MISO信号线进入到主机的移位寄存器。这样,主机和从机就完成了一次数据交换。
极性(Clock Polarity ,CPOL)与相位(Clock Phase ,CPHA)
时钟极性 CPOL 是指 SPI 通讯设备处于空闲状态时,SCK 信号线的电平信号 (即 SPI 通讯开始前、
NSS 线为高电平时 SCK 的状态)。
时钟极性CPOL : 设置时钟空闲时的电平
当CPOL = 0 ,SCK引脚在空闲状态保持低电平;
当CPOL = 1 ,SCK引脚在空闲状态保持高电平。
时钟相位CPHA :设置数据采样时的时钟沿
当 CPHA=0 时,MOSI或 MISO 数据线上的信号将会在 SCK时钟线的奇数边沿被采样
当 CPHA=1时, MOSI或 MISO 数据线上的信号将会在 SCK时钟线的偶数边沿被采样
见图CPHA = 0 时的 SPI 通讯模式 及图 CPHA = 1 时的 SPI 通讯模式 。
类似地,当 CPHA=1 时,不受 CPOL 的影响,数据信号在 SCK 的偶数边沿被采样
见图 CPHA=1时的 SPI 通讯模式 _ 。
模式 CPOL CPHA 采样时刻 空闲时SCK电平
0 0 0 奇数 低
1 0 1 偶数 低
2 1 0 奇数 高
3 1 1 偶数 高
在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式