2.2 串行外设接口 SPI Serial Peripheral Interface


1 SPI是什么?

SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。与IIC不同,SPI没有明文标准,只是一种事实标准,对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过data sheets和application notes沟通实现上的细节。
标准SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。
(1)MOSI:主器件数据输出,从器件数据输入
(2)MISO:主器件数据输入,从器件数据输出
(3)SCLK :时钟信号,由主器件产生
(4)/SS:从器件使能信号,由主器件控制
在这里插入图片描述

2 SPI的主要寄存器

SPIE:SPI Interrupt Enable Bit SPI中断使能位
SPE: SPI System Enable Bit SPI系统使能位
SPTIE:SPI Transmit Interrupt Enable SPI传输中断使能位
MSTR:SPI Master/Slave Mode Select Bit SPI主/从模式选择位
CPOL:SPI Clock Polarity Bit SPI时钟极性控制位
CPHA:SPI Clock Phase Bit SPI时钟相位控制位
SSOE:Slave Select Output Enable 从选择输出使能位
LSBFE:LSB-First Enable 最低有效位使能位
在这里插入图片描述
MODFEN:Mode Fault Enable Bit 模式错误使能位
BIDIROE:Output Enable in the Bidirectional Mode of Operation 双向模式输出使能位
SPISWAI:SPI Stop in Wait Mode Bit SPI等待模式停止位
SPC0:Serial Pin Control Bit0 串行控制位0
在这里插入图片描述
SPPR2-SPPR0:SPI Baud Rate Preselection Bits
SPI波特率预分频位
SPR2-SPR0:SPI Baud Rate Selection Bits
SPI波特率选择位
在这里插入图片描述
在这里插入图片描述
SPIF:SPI Interrupt Flag SPI中断标志位
SPTEF:SPI Transmit Empty Interrupt Flag SPI传输空中断标志
MODF:Mode Fault Flag 模式错误标志位
在这里插入图片描述
在这里插入图片描述

3 4种数据传输时序

SPI接口有四种不同的数据传输时序,取决于CPOL和CPHA这两位的组合。
如果CPOL=0,串行同步时钟为高电平有效;如果CPOL=1,串行同步时钟为低电平有效。如果CPHA=0,在串行同步时钟的第一个跳变沿/奇数边沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿/偶数边沿(上升或下降)数据被采样。 SPI主模块和与之通信的从模块应该保持CPOL和CPHA一致才能正常通讯。
实际中采用较多的是“模式0”和“模式3”。
在这里插入图片描述
在这里插入图片描述
SPI数据交换过程
SPI是一个环形总线结构,由SS(CS)、SCK、MOSI、MISO构成,其时序其实很简单,主要是在SCK的控制下,两个双向移位寄存器进行数据交换。上升沿发送、下降沿接收、高位先发送(对于主从都一样)。
上升沿到来的时候,MOSI上的电平将被发送到从设备的寄存器中。MISO上的电平将被发送到主设备的寄存器中。
下降沿到来的时候,MISO上的电平将被接收到主设备的寄存器中。MOSI上的电平将被接收到从设备的寄存器中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 I2C与SPI总线协议解析与对比

1.公司:I2C是1982年由Philips开发,SPI是2000年由Motorola开发。
2.I2C是半双工,有2根线SCL SDA,而SPI是全双工,通常是4根线SCK CS MOSI MISO
3.I2C总线是多主机总线,通过SDA上的地址信息来锁定从设备。SPI总线只有一个主设备,主设备通过CS片选来确定从设备
4.I2C总线传输速度在标准模式下可高达100kbit/s,在快速模式下可高达400kbit/s,在快速加模式(Fm+)下可高达1Mbit/s,或者在高速模式下可高达3.4Mbit/s。SPI没有定义速度限制,一般的实现通常能达到甚至超过10Mbit/s。
5.I2C总线空闲状态下SDA、SCL都是高电平。SPI总线空闲状态MOSI、MISO也都是高电平,而SCK是由CPOL决定的
6.I2C总线SCL高电平时SDA下降沿标志传输开始,上升沿标志传输结束。SPI总线CS拉低标志传输开始,CS拉高标志传输结束.
7.I2C总线是SCL高电平采样。SPI总线因为是全双工,因此是沿采样,具体要根据CPHA决定。
8.I2C总线和SPI总线时钟都是由主设备产生,并且只在数据传输时发出时钟。

在数字通信协议簇中,Ethernet, USB, SATA, PCI-Express等传输速度达数百上千兆字节每秒的总线,通常称为“大”协议,用于系统外的整个系统之间的通信,而I2C和SPI则称为“小”协议,用于系统内各芯片间的通信。这两种协议也是我们如今应用最多的总线协议,掌握其相关知识至关重要。

5 SPI的调试测试

可以通过回环测试验证自发自收是否正常。将MOSI跟MISO短接即可。
在这里插入图片描述
在这里插入图片描述
Loopback Test
在这里插入图片描述

SPI 时序分析软件用户手册

6 参考链接

SPI协议详解(Standard SPI、Dual SPI和Queued SPI)

SPI Block Guide V04.01——Motorola
Serial Peripheral Interface Bus——Wikipedia

SPI总线协议介绍

I2C和SPI总线对比

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值