SPI协议的介绍

学习内容:

学习SPI协议记录


学习清单:

提示:这里可以添加要学的内容

例如:

  1. SPI协议的介绍
  2. 三根线还是四根线
  3. 两个概念四种模式
  4. SPI时序图
  5. SPI优缺点
  6. SPI和IIC的对比

学习详细内容:

1.SPI协议的介绍

SPI是串口外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。

2.三根线还是四根线

SPI一般都是默认4线制Motorola SPI协议,即有四根线,分别是:SCLK、MOSI、MISO和CS共4根数据线,标准4线制的好处是可以实现数据的全双工传输,当只有一个主机和一个从设备时,只需要一个CS、多个从机需要多个CS。(CS片选信号有的也叫做SS线),多从机模式,通常每个从机需要一条单独的SS线,如下图所示:

CS是chip select,即从设备使能信号,由主设备控制。当总线上有多个从设备时,主设备如果需要和某个从设备通信,就将该设备的片选引脚拉低使能。

在这里插入图片描述
即通过指定使能NSS,就能与对应的从机进行通信。

以上图中的4根线分别是:

  • SCLK:Synchronous CLock,同步时钟信号,时钟频率即SPI速率,和SPI模式有关
  • MOSI:Master output slave input,主设备数据输出,从设备数据输入
  • MISO:Master input slave output,主设备数据输入,从设备数据输出
  • CS:chip select,从机设备选择,低电平有效

3线制SPI,根据不同的应用场景,主要有以下2中类型:

  • 只有3根线:SCLK,MOSI和CS,没有MISO数据线,适用于单工通讯,主机只发送或只接收从机的数据
  • 只有3根线:SCLK,SDIO和CS,这里的SDIO作为双向端口,适用于半双工通讯,比如ADI的多款ADC芯片都支持双向传输。

3.两个概念四种模式

既然是要进行数据的传输,双方就要明确从机在什么时刻去采样主机发出的数据,主机在什么时刻去读取从机发来的数据。
CPOL(Clock Polarity)时钟的极性,规约了SPI总线在空闲时,时钟信号是高电平还是低电平;

  • CPOL=0 表示时钟空闲时为低电平
  • CPOL=1 表示时钟空闲时为高电平

CPHA(Clock Phase)时钟的相位,规约SPI设备是在时钟上升沿还是下降沿触发数据采样。

  • CPHA=0 表示数据在SCLK时钟上升沿被采样,在SCLK时钟下降沿切换(有的说法叫“在时钟信号SCLK的第一个跳变沿采样”)
  • CPHA=1表示数据在SCLK时钟下降沿被采样,在SCLK时钟上升沿切换(有的说法叫“在时钟信号SCLK的第二个跳变沿采样”)

时钟极性和时钟相位的不同组合,所以有了SPI总线传输的4种模式

模式1:CPOL=0,CPHA=0

模式1的示例图:即时钟空闲时为低电平,在时钟的上升沿被采样,下降沿切换
在这里插入图片描述
模式2:CPOL=0,CPHA=1
模式3:CPOL=1,CPHA=0
模式4:CPOL=1,CPHA=1

其余三个模式也是同理

4.SPI时序图

当以模式1为工作模式时:
在这里插入图片描述
先是将CS片选信号拉低,选中要通信的从设备,然后通过MOSI和MISO这两根数据线进行通信,MOSI数据线发出了0xD2这个数据给从设备,同时从设备也通过MISO线给主设备返回了0x66这个数据。由于SPI是全双工的,所以读写时序可以一起完成。

5.SPI的优缺点

SPI的优势

  • 全双工串行通信
  • 高速数据传输速率
  • 简单的软件配置
  • 及其灵活的数据传输,不限于8位,它可以是任意大小的字
  • 非常简单的硬件结构,从站不需要唯一地址(与IIC不同),从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同),不需要收发器(与CAN不同)

SPI的缺点

  • 没有硬件从机应答信号(主机可能在不知情的情况下无处发送)
  • 通常仅支持一个主设备
  • 需要更多的引脚(与IIC不同)
  • 没有定义硬件级别的错误检查协议
  • 与RS-232与CAN总线相比,只能支持非常短的距离

6.SPI和IIC的对比

  • SPI是全双工,而IIC是半双工
  • IIC支持多主机多从机,SPI只能有一个主机
  • 从GPIO占用上来看,IIC占用更少的GPIO,更节省资源
  • SPI的数据位宽更灵活,可以根据需要选择多位数数据宽度
  • SPI协议没有响应机制,主机无法得知从机是否接收到所发的数据,如果不采用一些方法的话可能会导致数据丢帧
  • 正是因为没有复杂的响应机制,SPI协议可以做到非常高的速率,每一个SCLK都可以进行数据的传输,通过引入CRC校验等校验方法,可以即高速传输数据,又能保持数据的准确度。
  • IIC通过期间地址来选择从机,从机数量的增加不会导致GPIO的增加,而SPI通过CS片选信号选择从机,每增加一个从机就要多占用一个GPIO,当然也可以通过加入译码器来实现多从机控制
  • 两者大多数都应用与板内器件短距离通讯

学习资料:

参考资料1
参考资料2
参考资料3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值