SPI通讯协议详解

本文介绍了SPI的特点、物理连接和通讯过程。

SPI特点

  • 串行

  • 高速(波特率可以很高)

  • 全双工

  • 同步

物理连接

SPI通讯系统由一个主机、若干从机、三条总线和若干片选线组成。

SPI的物理连接

三条总线:

  1. 时钟信号线(SCK,Serial Clock):用于数据同步,由主机产生,决定着通讯的波特率。

  2. 主设备输出,从设备输入(MOSI,Master Output&Slave Input):主机在这条线上写数据,从机在这条线上读数据。即这条线用于主机给从机发数据。

  3. 主设备输入,从设备输出(MISO,Master Input&Slave Output):从机在这条线上写数据,主机在这条线上读数据。即这条线用于从机给主机发数据。

片选线(SS,Slave Select),也称为NSS,CS(Clip Select),每一个从机都有一条片选线连接主机,当某一条片选线上的电平被主机拉低时,连接该条片选线上的从机就被“选中”,可以和主机进行通讯。

通讯过程

SPI通讯时序(SPI模式1)

  1. 通讯开始①:主机拉低某一条片选线电平,与该片选线上的从机建立连接。

  2. 数据传输②③④:主机控制MOSI线,向从机传输数据;从机控制MISO线,向主机传输数据;两者可以同时进行。根据不同的SPI模式(下文介绍),数据的采样时刻(数据有效性)不同。

  3. 通讯结束⑥:拉高片选线。

SPI模式

SPI模式规定了空闲时SCK的时钟状态和数据采样时刻。为了方便说明,引入“时钟极性CPOL”和“时钟相位CPHA”的概念:

  • 时钟极性CPOL:规定SPI通讯设备处于空闲状态时,SCK时钟线的电平信号。CPOL=0,空闲时SCK为低电平;CPOL=1,空闲时SCK为高电平。

  • 时钟相位CPHA:规定SPI数据的采样时刻。CPHA=0时,将在SCK时钟线的“奇数边沿”采样;CPHA=1时,将在SCK时钟线的“偶数边沿”采样。

CPOL概念比较好理解,下面具体看看CPHA:

CPHA=0 时的 SPI 通讯模式时序图

当CPHA为0时,采样在奇数边沿进行(即上图SCK线上第1、3、5…个边沿时刻采样)。也可以说,在奇数边沿,MOSI和MISO上的电平有效。

例如,若在SCK线上电平第一次跳变(即第1个边沿)时,MOSI上的电平为高电平,则传输的数据为1,低电平则为0(数据有效);在SCK线上电平第二次跳变(即第2个边沿)时,MOSI上的电平无论是什么,都不会被读取(数据无效)。

CPHA=1 时的 SPI 通讯模式时序图

当时钟相位CPHA为1时,采样在偶数边沿进行(即上图SCK线上第2、4、6…个边沿时刻采样)。也可以说,在偶数边沿,MOSI和MISO上的电平有效。

例如,在SCK线上电平第一次跳变(即第1个边沿)时,MOSI上的电平无论是什么,都不会被读取(数据无效);在SCK线上电平第二次跳变(即第2个边沿)时,若MOSI上的电平为高电平,则传输的数据为1,低电平则为0(数据有效);

由时钟极性CPOL及时钟相位CPHA的不同取值,SPI分成了四种模式:

通讯时,主机和从机的SPI的模式要相同,才能保证数据正常传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值