SPI协议理论

2 篇文章 0 订阅
1 篇文章 0 订阅

SPI协议分成物理层和协议层

1、物理层

SPI通信使用3条总线以及片选线。

1)SS(片选线,也称NSS、CS):当有多个SPI从设备与SPI主机相连时,设备的其他信号线SCK、MOSI及MISO同时并联到SPI总线上,SS独占主机的一个引脚,有多少设备就有多少片选信号线。与I2C相比, I2C是通过设备地址来寻址,通过地址选择需要通信的设备。SPI没有设备地址,通过NSS来选择需要通信的设备,当主机选择从设备时,从设备的NSS信号为低电平,即该设备被选中,片选有效。SPI通信以NSS为低电平为开始信号,NSS被拉为高为结束信号。

2)SCK(时钟信号线):通信数据同步,主机产生,决定了通信的速率,不同的设备支持的最高时钟频率不一样,STM32的SPI时钟频率最大为fpclk/2。两个设备之间的通信,通信速率受限于低速设备。

3)MOSI(Master Output,Slave Input):主设备输出,从设备输入引脚,线上数据方向为主设备到从设备。主设备写数据。
4)MISO(Master Input,Slave Output):主设备输入,从设备输出引脚,线上数据防线为从设备到主设备。主设备读入数据。

2、协议层

1)SPI的基本通信过程
这是一个主机通信时序,NSS、SCK、MOSI信号都是主机产生,MISO又从机产生,主机读取从机设备的数据,MOSI和MISO的信号只有在NSS为低电平时有效,在SCK的每个时钟周期,MOSI和MISO传输一位数据。

主机通信时序

2)通信的起始信号和停止信号

  • NSS信号从高电平变成低电平,SPI通信开始。
  • NSS信号从低电平变成高电平,SPI通信结束。

3)数据有效性
SPI采用MOSI和MISO传输数据,SCK进行数据同步。数据传输时,MSB先行或LSB先行没有硬性规定,但是要保证两个SPI通信设备之间使用同样的协定,一般采用MSB先行模式。

MOSI和MISO的数据在SCK的上升沿期间变化输出,SCK的下降沿时被采样,SCK的下降沿时刻,MOSI和MISO的数据有效,高电平表示数据“1”,低电平表示数据“0”.其他时刻,数据无效,MOSI和MISO为下次数据传输做准备。

SPI每次传输可以8位或16位为单位,每次传输的单位数不受限制。

4)CPOL/CPHA及通信模式
SPI一共有4种通信模式,主要区别是总线空闲时SCK的时钟状态以及数据采样时刻。
CPHA=0

  • “时钟极性CPOL”:SPI通信设备处于空闲时,SCK信号线的电平信号(SPI通信开始前,NSS为高电平时SCK的状态)。CPOL=0时,SCK在空闲状态时为低电平,CPOL=1时,相反。

  • “时钟相位CPHA”:数据的采样时刻,CPHA=0时,MOSI和MISO数据线上的信号将会在SCK时钟线的“奇数边沿”被采样;CPHA=1,数据线在SCK的“偶数边沿”被采样。

在这里插入图片描述
SPI的采样时刻不是由上升/下降沿决定的,当CPHA=0时,MOSI和MISO数据线的有效信号在SCK的奇数边沿保持不变,与CPOL的状态无关。当CPHA=1时,MOSI和MISO数据线的有效信号在SCK的偶数边沿被采样。

总结的SPI的4种模式,如下:

主机与从机的通信需要工作在相同的模式下,实际上采样较多的是“模式0”(CPHA=0,CPOL=0),模式“3”(CPHA=1,CPOL=1),CPHA和CPOL的状态相同。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值