1 SPI概念
SPI(Serial Peripheral Interface,串行外围设备接口)是一种高速、全双工、同步通信总线,SPI有四根线,最大速度可以达50MHZ.
MISO: 主设备数据输入,从设备数据输出.
MOSI: 主设备数据输出,从设备数据输入.
SCLK: 时钟信号,由主设备产生.
CS/SS: 由主设备控制,拉低某从设备,开始工作.
2. SPI连接方式
以下为SPI的标准连接方式:
- 所有设备的SCK,MOSI,MISO分别连接在一起
- 主机另外引出多条SS控制线,分别接到各从机的SS引脚
- 输出引脚配置为推挽输出, 输入引脚配置为浮空或上拉输入
为什么输出引脚采用推挽输出?
1. 信号完整性:推挽输出可以提供清晰的电平信号,确保信号的完整性。
2. 减少外部原件。
3. 驱动能力强。推挽输出可以快速地在高电平和低电平之间切换,这有助于提高数据传输的速率和效率。
3. SPI的四种工作模式
SPI 的时钟相位(CPHA)设备从数据线采样的时刻,极性(CPOL)表示空闲电平的状态。这两个组合可以分为四种工作模式,数据发送是与数据采样相反的方向进行的,比如数据采样时上升沿,那么数据发送就是下降沿,他们是在同一个周期确认的。
mode0 : CPOL = 0, CPHA = 0
mode1 : CPOL = 0, CPHA = 1
mode2 : CPOL = 1, CPHA = 0
mode3: CPOL = 1, CPHA = 1
(1)实际的电路中,SPI协议中的主设备就是主控,从设备是外设;
(2)主控的SPI控制中,模式是可以配置的,但是从设备的模式是在出厂的时候就定死了;
总结:查阅外设的数据手册,知道外设的SPI模式,主设备去适配从设备的模式;
4. SPI通信过程
1. 主设备选中从设备(片选信号):主设备通过将片选引脚拉低来选中特定的从设备,表示开始与该从设备进行通信。
2. 时钟信号传输:主设备产生时钟信号,并通过时钟线 (SCLK) 将时钟信号传输给从设备。时钟信号的频率由主设备的时钟配置决定。
3. 数据传输:主设备将要发送的数据通过数据线 (MOSI) 发送给从设备,同时从设备也可以将数据通过数据线 (MISO) 返回给主设备。传输的数据位数由数据大小(通常为8位或16位)决定。
4. 数据采样和发送时机:根据时钟极性和相位的配置,数据的采样和发送时机也会有所不同。在时钟的上升沿或下降沿,主设备会采样从设备的数据,并在下一次时钟的边沿将数据发送给从设备。
5. 子设备解选(片选信号):当主设备完成与从设备的通信后,会通过将片选引脚拉高来解选从设备,表示通信结束。
注意:SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。若只进行写操作,主机只需忽略接收到的字节(虚拟数据);反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。
5. SPI优缺点
6. 面试回答
1. 什么是SPI
高速(≥10M/bps)+全双工+同步+一主多从+四根线
2. SPI模式
SPI分为主、从两种模式,提供时钟的为主设备,接收时钟的设备为从设备,SPI接口的读写操作,都是由主设备发起。当存在多个从设备时,通过各自的片选信号进行管理。
3. SPI设备选择
SPI是单主设备( single-master )通信协议,这意味着总线中的只有一支中心设备能发起通信。当SPI主设备想读/写[从设备]时它首先拉低[从设备]对应的SS线(SS是低电平有效)
接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,[主设备]把信号发到MOSI实现“写”,同时可对MISO采样而实现“读
4. SPI通信的四种模式
时钟极性+时钟相位,各种能设置成0和1,组合起来就是4种模式。
5. 对比IIC,UART, SPI
6.spi通信中,两个设备都是主机模式,会出现什么情况
-
两个设备只有一个启动的话,读写数据都是错误没有用的,
-
两个设备都启动的话,无法建立通信
链接