一、SPI协议概述
SPI(是英文Serial Peripheral Interface的缩写)即串行外围设备接口。
SPI是Motorola公司推出的一种高速度,全双工,同步通信总线,是一种标准的四线同步双向串行总线。主要应用于CPU和周边芯片之间,因其硬件功能很强,所以与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。
二、SPI接口介绍
SPI接口可直接与各个厂家生产的多种标准外围器件接口连接,该接口一般使用4条线:
SCLK:串行时钟线,由主设备产生。
MISO(SDI):master input slave output 由从机发送数据,主机接收数据。
MOSI(SDO):master output slave input 由主机发送数据,从机接收数据。
CS/SS:从设备选择信号(低电平有效的从机选择线),由主设备控制。它的作用是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。
PS:(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
三、SPI硬件接口
四、SPI通信原理
- SPI以主从模式工作,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个或多个从设备。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave)。SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理,但必须使用相同的工作模式,即SCLK、CPOL(clock
polarity)和CPHA(clock
phase)都相同,才能正常工作。如果有多个从设备,并且它们使用了不同的工作模式,那么主设备须在读写不同从设备时,需要重新修改对应从设备的模式。
寄存器类型:
- Motorola定义的SPI寄存器包括:
SPI Control Register1(SPICR1)控制寄存器1,可以设置SPI模式
SPI Control Register2(SPICR2)控制寄存器2,修改中断设置
SPI Baud Rate Re