SPI
串行外设接口,高速的(相对于串口、IIC),全双工(收发同时进行),同步的串行通信总线。一般有一个主机和一个或者多个从机。SPI需要至少4根线(当只有一个从机时,增加一个从机,就需要相应的增加一个CS片选线)。
- MISO:主机输入从机输出
- MOSI:主机输出从机输入
- SCLK:时钟线
- CS:片选线
发送和接收同时进行,只有一根时钟线怎么同步?
SPI收发都是基于一个时钟,所以一根数据线就可以实现全双工,从机按照主机的时钟来发送数据。
寻址方式
当主机要和某个从机通信时,主机先向对应的从机发送使能信号(高电平或者低电平,具体由从机决定),表示选中从机。
通信过程
- SPI传输数据时,先发送高位数据,再发送低位数据,一个字节结束后无需应答即可开始发送下一个字节。
- SPI采用同步方式发送,时钟线再上升沿或者下降沿时发送器向数据线上发送数据,在紧接着的下降沿或者上升沿时,接收器从数据线上读取数据,完成一位数据的传送,八个时钟周期即可完成一个字节数据的传送。
- 无起始、结束和应答。
极性和相位
SPI总线有四种不同的工作模式,取决于极性和相位
CPOL表示SCLK空闲时的状态
- CPOL = 0, 空闲时SCLK为低电平
- CPOL = 1, 空闲时SCLK为高电平
CPHA表示采样时刻
- CPHA = 0, 每个周期的第一个时钟沿采样
- CPHA = 1, 每个周期的第二个时钟沿采样