SPI总线
SPI(Serial Peripheral Interface)是串行外设接口的缩写。是一种**高速的、全双工、同步**的串行通信总线。采用主从方式工作。一般有一个主设备和多个从设备; SPI总线需要至少4根线(从设备4根线,有多个从设备时主设备多于4根线),分别是:
- MISO:主设备输入从设备输出
- MOSI:主设备输出从设备输入
- SCLK:时钟
- CS:片选
SPI使用引脚较少且布线方便。
寻址方式
当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高低点哦依据从机而定)表示选中该设备。
通信过程
SPI总线进行数据传送时,先传高再传低;高电平表示逻辑“1”;一个字节传送完成后无需应答即可开始下一个字节的传送;~采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿接收器从数据线上读取数据,完成一位数据传送,八个时钟周期可完成一个字节数据的传送。
没有起始信号、没有应答,只有发数据。
极性和相位
SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素。
- CPOL表示SCLK空闲时的状态:
CPOL=0,空闲时SCLK为低电平;
CPOL=1,空闲时SCLK为高电平; - CPHA表示采样时刻:
CPHA=0,每个周期的第一个时钟沿采用;
CPHA=1,每个周期的第二个时钟沿采用;
例:CPOL=1,CPHA=1(类似I2C)
对于特定的从设备,一般出厂时就会将其设定为某种特定的工作模式,需要对主设备的CPOL和CPHA进行配置,使其工作模式和该从设备保持一致。