SPI
定义
SPI(Serial Peripheral Interface,串行外设接口)是一种全双工、同步、主从模式的串行通信协议,
常用于微控制器与各种外围设备(如 Flash、传感器、ADC/DAC、显示屏等)之间的高速通信。
特点
主从结构:一般一个主设备(Master),一个或多个从设备(Slave);
全双工通信:数据可同时发送与接收;
同步通信:有时钟信号(SCLK)协调;
线数少,速度快(通常比 I2C 快);
一个主设备可以控制多个从设备,通常每个从设备有独立的 CS 线。
SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
信号线
含义
主设备方向
SS/CS
从设备选择(片选)
输出
SCLK
串行时钟线
输出
MOSI
主出从入(数据输出)
输出
MISO
主入从出(数据输入)
输入
SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。
数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输。因此,至少需要8次时钟信号的改变(上沿和下沿为一次),
才能完成8位数据的传输。
通信协议
SPI 模式(Mode 0~3)由两位参数定义:CPOL(时钟极性)和 CPHA(时钟相位);时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
SPI 模式
时钟极性
时钟相位
空闲状态下的时钟极性
数据采样边沿
0
0
0
逻辑低电平
数据在上升沿采样,在下降沿移出
1
0
1
逻辑低电平
数据在下降沿采样,在上升沿移出
2
1
0
逻辑高电平
数据在下降沿采样,在上升沿移出
3
1
1
逻辑高电平
数据在上升沿采样,在下降沿移出
传输步骤
1.主设备(Master)拉低CS信号,表示与该从设备(Slave)进行通信;
2.主设备(Master)通过发送SCLK时钟信号,通知从设备(Slave)进行数据交换;
3.主设备(Master)将发送的数据写到数据缓存区,缓存区经过串行移位寄存器(通常是8位)通过MOSI将字节一位一位的发送到从设备(Slave);
同时MISO接收到的数据也经过移位寄存器一位一位送到接收缓存区;
在每个SPI时钟周期内,都会发生全双工数据传输。主设备在MOSI线上发送一个位,从设备读取它,同时从机在MISO线上发送一位数据,主机读取它。
即使只有单向数据传输的目的,主从机之间的通信工作方式仍然是双工的。如果主机需要向从机发送数据,主机只需要忽略接收到的数据即可,
如果主机要读取从机的数据,首先需要先向从机发送空字节引发从机传输数据。换句话说,SPI数据的交换是双向的。主机发送一个数据,必定会从从机获取一个数据。
SPI 模式 0示例:
具体分析参考:https://www.analog.com/cn/resources/analog-dialogue/articles/introduction-to-spi-interface.html
多从机SPI
常规模式
在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO 线上的时钟和数据便可用于所选的从机。
菊花链模式
在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。
来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。
使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。
参考链接:
https://www.analog.com/cn/resources/analog-dialogue/articles/introduction-to-spi-interface.html
https://zhuanlan.zhihu.com/p/65084779
https://blog.csdn.net/as480133937/article/details/105764119![]
https://developer.tuya.com/cn/docs/iot/spi-interface-hardware-design?id=Kbffxxzt0cpho
https://theembeddedsystem.readthedocs.io/en/latest/c6_ec_spi_if/index_c6.html
https://zh.wikipedia.org/wiki/序列周邊介面
葡萄互动(北京)科技有限公司
TransMac v14.2 and v14.5 Windows下dmg镜像文件烧录工具下载