SPI(Serial Peripheral Interface Bus 译作:串行外设接口)是一种用于短程通信的同步串行通信接口规范,具有高速,全双工的特点。这种接口首先被Motorola(摩托罗拉)公司开发,然后发展成了一种行业规范。
SPI设备之间使用全双工模式通信,包含一个主机和一个或多个从机。主机产生待读或待写的帧数据,多个从机通过一个片选线路 决定哪个来响应主机的请求。
SPI的接口方式
SPI总线规定了4个保留逻辑信号接口:
- SCLK(Serial Clock):串行时钟,由主机发出
- MOSI/SDO(Master Output,Slave Input):主机输出从机输入信号,由主机发出
- MISO/SDI(Master Input,Slave Output):主机输入从机输出信号,由从机发出
- SS(Slave Selected):选择信号,由主机发出,低电位有效
典型的单设备SPI接法
典型的多设备SPI接法
SPI的运行流程和时序图
SPI是串行通讯协议,数据是一位一位的传输的。SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,从而完成一位数据传输,输入也使用同样原理。因此,至少需要8次时钟信号的改变(上沿和下沿为一次),才能完成8位数据的传输。
时序图如下所示:
SPI的调试要点
若出现SPI无法通信,请检查如下项目:
- 检查线路连接是否正确,SDI和SDO连接是否一致。
- 检查软件配置是否正常,脚位配置是否正常,脚位是否被复用。
若出现SPI数据异常,请检查如下项目:
- 检查SDO,SDI的主从机的数据采集边沿触发方式是否一致。
版权所有丨如未注明,均为原创,转载请注明转自:https://whonee.net/spi-interface-brief-introduction.html