一文带你搞懂SPI和面经

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通信中,两个设备都是主机模式,会出现什么情况

  1. 两个设备只有一个启动的话,读写数据都是错误没有用的,

  2. 两个设备都启动的话,无法建立通信

链接

https://download.csdn.net/blog/column/8634835/109460814

30min拿下SPI——从知识点到面试!-CSDN博客

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值