硬件连接
SPI用于在单个主掌握器和一个或多个从设备之间交流数据。供应时钟的为主设备(Master),吸收时钟的设备为从设备(Slave),对付单从设备连接利用四条旗子暗记线:

SCLK:Serial Clock 串行时钟旗子暗记
MOSI:Master Output Slave Input 主发送从吸收旗子暗记
MISO:Master Input Slave Output 主吸收从发送旗子暗记 —方向由从设备到主设备
SS:Slave Select 片选旗子暗记 一样平常低电平有效
注:以上旗子暗记定义是最常用的命名办法,还有一些其他命名办法如下:
对付单从设备来说,只须要把名字相同的旗子暗记连接到一起即可,如下图所示:
对付多个从设备连接时,有两种配置模式:
独立从设备(Independent slave)
主机须要为每个从机供应单独的片选旗子暗记。一旦主机使能(拉低)片选旗子暗记, MOSI/MISO线上的时钟和数据便可用于所选的从机。
菊花链从设备(Daisy chain slave)
在菊花链模式下,所有从机的片选旗子暗记连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时吸收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据供应给下一个从机,依此类推。 利用该方法时,由于数据是从一个从机传播到下一个从机,以是传输数据所需的时钟周期数与菊花链中的从机位置成比例。 并非所有SPI器件都支持菊花链模式,请参阅产品数据手册以确认菊花链是否可用 。
注:
某些芯片产品上,对SPI两条数据线的命名为SDO/SDI。此时须要将master的SDO连接到slave的SDI,将master的SDI连接到slave的SDO。
有的芯片SPI接口的SS旗子暗记,对电平敏感,通讯前确保SS是低电平就好,而有的SPI芯片的SS旗子暗记是低落沿敏感的。比如Maxim MAX1242 ADC,开始通讯前,须要SS旗子暗记有一个高→低的翻转。
数据交流及内部框图
SPI数据传输一样平常由数据交流构成,在主掌握器向从设备发送数据时,从设备也向主掌握器发送数据。因此主掌握器的内部移位寄存器和从设备都采取环形设置。在数据交流之前,主掌握器和从设备会将存储器数据加载至它们的内部移位寄存器,收到时钟旗子暗记后,主掌握器先通过 MOSI 线路时钟输出其移位寄存器的 MSB。同时从设备会读取位于 SIMO 的主控器第一位元,将其存储在存储器中,然后通过 SOMI 时钟输出其 MSB。主掌握器可读取位于 MISO 的从设备第一位元,并将其存储在存储器中,以便后续处理。全体过程将一贯持续到所有位元完成交流,而主控器则可让时钟空闲并通过 /SS 禁用从设备。SPI 数据速率一样平常在 1 到 70MHz 的范围内,字长为从 8 位及 12 位到这两个值的倍数。
下图是Motorola定义SPI模块的内部框图,其紧张构成包括状态/掌握/数据寄存器(Status,Control and Data Registers)、移位寄存器(Shifter Logic)、波特率发生器(Baud Rate Generator)、主从掌握逻辑(Master/Slave Control Logic)和端口掌握逻辑(Port Control Logic)。










