SPI简介
SPI是Motorla公司推出的一种同步串行接口技术,是一种高速、全双工的同步信号总线,最高可达上百MHz。SPI以主从方式工作,通常是一个主设备多个从设备。一般SPI需要4根线,也可以3根线单向传输。
- CS/SS: 这个是片选信号,用于选择需要通信的从设备。I2C主机是通过发送从设备地址来选择从设备的,SPI不需要发送从设备地址,直接将相应片选信号拉低即可。
- SCK, Serial Clock: 串行时钟。
- MOSI/SDO: 简称主出从入信号线,这根信号线只能用于主机向从机发送数据。
- MISO/SDI: 简称主入从出信号线,这根信号线只能用于从机向主机发送数据。
图27.1.1.1 SPI设备连接图
SPI有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式:
- CPOL=0, 串行时钟空闲状态为低电平。
- CPOL=1, 串行时钟空闲状态为高电平,此时可以通过配置时钟相位(CPHA)来选择具体传输协议。
- CPHA=0, 串行时钟的第一个跳变沿(上升沿者下降沿)采集数据。
- CPHA=1, 串行时钟的第二个跳变沿(上升沿或下降沿)采集数据。
图27.1.1.2 SPI四种工作模式
和I2C一样,SPI也是有时序的,以CPOL=0,CPHA=0 这个工作模式为例,SPI进行全双工通信的时序图27.1.1.3所示:
图27.1.1.3 SPI时序图
图27.1.1.3中,CS片选信号拉低,选中要通信的设备,然后通过MOSI和MISO收发数据,MOSI数据线发出了0XD2这个数据给从设备,同时从设备通过MISO数据线给主设备返回了0X66的数据。