SPI协议详述

概述:

SPI是一种全双工同步通信总线。
在这里插入图片描述

SPI接口一般使用四条线通信。
MOSI:主机输出/从机输入
MISO:主机输入/从机输出
SCK:时钟引脚,作为主机时串行时钟的输出及从机时串行时钟输入
NSS:从器件选择引脚

通信过程:

在这里插入图片描述

SPI的通信过程很简单:总的来说就是主从机根据主机的时钟来进行数据交换的过程,主从机根据既定的配置在时钟的每次上升沿或者下降沿时去读取对应MOSI/MISO上的电平状态,由于SPI协议没有定义起始信号和停止信号,所以通信双方只能按照自己规定的一帧数据的bit数来做接收,所以在配置时需要保证主从机双方的通信格式(数据帧配置及时钟相位、极性)是一致的。

从主机的角度来看的话,主机想要接收/发送数据时,他就会主动给出时钟,然后根据时钟向MOSI线上发送数据,且从MOSI上读取数据,所以,只想接收/发送数据时,可以忽略另一条数据线上的数据。

从从机角度来看的话,在没有时钟的时候,从机是没法收发数据的,如果从机想要在第一个数据时钟过来时传输数据,就需要提前将数据放入移位寄存器,等到时钟到来时,根据时钟将数据发送出去。

通信格式:

通信格式取决于数据帧格式,时钟相位和极性:

数据帧格式:

LSB或MSB方式接收发送数据,数据帧的长度可配置,通信期间,只有数据帧内的位才会被计数和传输,所以收发双方必须保持一致。

时钟相位(CPHA)和极性(CPOL):

时钟极性规定了空闲状态时时钟处于高电平(CPOL = 1)还是低电平(CPOL = 0),时钟相位规定了SPI是基于第一个时钟沿(CPHA = 0)还是第二个时钟沿(CPHA = 1)去开始收发数据。
在这里插入图片描述

时钟相位和极性规定了SPI从时钟的什么位置开始发送或读取数据,主从机的配置一样才能保证收发数据的一致性。
在这里插入图片描述

SPI的片选(NSS):

NSS是片选引脚,也可以用来做流控,比如说,在NSS拉低时,接收到的数据才被判定为有效的之类的样子。
对于从机来说,NSS引脚需要在它被寻址/选中时拉低,但是对于主机来说,它并不是一个通信过程中必须的引脚。

SPI的传输速度:

协议没有规定SPI的传输速度,所以SPI的传输速度实际上受到工作时钟的影响,且还受到IO的电气特性的影响,即使工作时钟能到80M, IO的输出频率不一定能到80M,看起来就想木桶一样,最短的那块板子才决定了木桶的装水量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值