目录
1、SPI简介
SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信总线;
SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;
SPI需要至少4根线,分别是MISO(master input slave output)、MOSI(master output slave input)、SCLK(时钟)、CS(片选信号)。SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议。
2、寻址方式
当主设备要与某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或低电平根据从机而定),表示选中该从设备。
3、通信过程
SPI通信过程中,可以配置先传低位(LSBF)还是先传高位(MSBF);一个字节传输完成后无需应答即可开始下一个字节的传送;采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿从数据线上读取数据,完成一位数据传输,8个时钟周期即可完成一个字节数据的传送。
4、时钟极性、时钟相位
时钟极性(CPOL, Clock Polarity):决定在总线空闲时,同步时钟信号线上的电位是高电平还是低电平。
当CPOL=0时,时钟信号在空闲时为低电平;
当CPOL=1时,时钟信号在空闲时为高电平。
时钟相位(CPHA, Clock Phase):决定何时进行信号采样。
当CPHA=0时,在串行同步时钟的第一个跳边沿(上升沿或下降沿)数据被采样;
当CPHA=1时,在串行同步时钟的第二个跳边沿(上升沿或下降沿)数据被采样。
SPI有四种工作模式:
工作模式 | CPOL | CPHA |
1 | 0 | 0 |
2 | 0 | 1 |
3 | 1 | 0 |
4 | 1 | 1 |
对于一个特定的从设备来说,一般在出厂时就会将其设计为某种特定的工作模式,我们在使用该设备时就必须对主设备的CPOL和CPHA进行配置以保证和从设备的工作模式一致,否则无法通信。
5、SPI与I2C的异同
(1)相同点:
- 均采用串行、同步的方式
- 均采用TTL电平,传输距离和应用场景类似
- 均采用主从方式工作
(2)不同点:
- I2C为半双工,SPI为全双工
- I2C有应答机制,SPI无应答机制
- I2C通过向总线广播从机地址来进行寻址,SPI通过向对应从机发送使能信号寻址
- I2C的时钟极性和相位固定,SPI的时钟极性和相位可配置