SPI接口详细介绍

1. 概述

SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线。常规只占用四根线,节约了芯片管脚,PCB的布局省空间。现在越来越多的芯片集成了这种通信协议,常见的有EEPROM、FLASH、AD转换器等。

  • 优点:

支持全双工,push-pull的驱动性能相比open-drain信号完整性更好

支持高速(100MHz以上);

协议支持字长不限于8bits,可根据应用特点灵活选择消息字长;

硬件连接简单;

  • 缺点:

相比IIC多两根线;

没有寻址机制,只能靠片选选择不同设备;

没有从设备接受ACK,主设备对于发送成功与否不得而知;

典型应用只支持单主控;

相比RS232 RS485和CAN总线,SPI传输距离短;

2. 硬件结构

SPI总线定义两个及以上设备间的数据通信,提供时钟的设备为主设备Master,接收时钟的设备为从设备Slave;

  • 信号定义如下:

SCK : Serial Clock 串行时钟

MOSI : Master Output, Slave Input 主发从收信号

MISO : Master Input, Slave Output 主收从发信号

SS/CS : Slave Select 片选信号

  • 电路连接如下:

单个主设备和单个从设备:

单个主设备和多个从设备,通过多个片选信号或者菊花链方式实现:

3. 寄存器类型

Motorola定义的SPI寄存器包括:

SPI Control Register 1 (SPICR1)    控制寄存器1

SPI Control Register 2 (SPICR2)    控制寄存器2

SPI Baud Rate Register (SPIBR)    波特率寄存器

SPI Status Register (SPISR)            状态寄存器  (只读   其余均可读可写)

SPI Data Register (SPIDR)              数据寄存器

通过往寄存器中写入不同的值,设置SPI模块的不同属性。

4. SPI传输模式

通过设置控制寄存器SPICR1中的CPOLCPHA位,将SPI可以分成四种传输模式。

CPOL,即Clock Polarity,决定时钟空闲时的电平为高或低。对于SPI数据传输格式没有显著影响。

1 = 时钟低电平时有效,空闲时为高

0 = 时钟高电平时有效,空闲时为低

CPHA,即Clock Phase,定义SPI数据传输的两种基本模式。

1 = 数据采样发生在时钟(SCK)偶数(2,4,6,...,16)边沿(包括上下边沿)

0 = 数据采样发生在时钟(SCK)奇数(1,3,5,...,15)边沿(包括上下边沿)

四种模式如下图所示:

先看第一列两张图(CPHA = 0),采样发生在第一个时钟跳变沿,即数据采样发生在SCK奇数边沿;再看第二列(CPHA =1),采样发生在第二个时钟跳变沿,即数据采样发生在SCK偶数边沿

第一行两张图,第二行两张图(CPOL = 1),SCK空闲状态为高电平。

主从设备进行SPI通讯时,要确保它们的传输模式设置相同。

其中mode0mode3最为常见,SPI接口的flash中均会有标注。

5. 读写操作

  • 标准SPI读写为例

片选---读指令---地址---数据读出

片选---写指令---地址---数据写入

  • Dual I/O Fast Read Sequence Diagram  双路IO

  • Quad I/O Fast Read Sequence Diagram  四路IO

与IIC一样,是一种最常见的板内芯片间的串行接口。

欢迎加入硬件QQ群:1018083751,一起讨论硬件问题,分享调试心得,共同成长。

  • 60
    点赞
  • 424
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
EEPROM是一种电子可擦写可编程只读存储器,它能够存储数据并在断电后保持数据。SPI(Serial Peripheral Interface)是一种串行外设接口协议,常用于与微控制器或其他设备进行通信。 SPI接口可以用于与EEPROM进行通信。通常,SPI接口包括四个主要线路:时钟线(SCK),主设备输出数据线(MOSI),主设备输入数据线(MISO)和片选线(CS)。主设备通过时钟线向EEPROM发送时钟信号,通过MOSI线向EEPROM发送数据,通过MISO线接收来自EEPROM的数据,而片选线则用于选择与主设备通信的具体设备。 要使用SPI接口与EEPROM通信,您需要了解EEPROM的具体型号和其支持的SPI通信协议。不同的EEPROM芯片可能有不同的寄存器和命令集。您需要参考EEPROM的规格书或数据手册,以确定正确的通信协议和命令。 一般情况下,与EEPROM进行SPI通信的步骤如下: 1. 初始化主设备的SPI接口,包括设置时钟频率和模式。 2. 选择与主设备通信的EEPROM芯片,通过将片选线拉低。 3. 发送读取或写入命令以及地址到EEPROM芯片。 4. 对于读取操作,主设备通过MOSI线发送无效数据,并同时接收来自EEPROM芯片的数据。 5. 对于写入操作,主设备通过MOSI线发送要写入EEPROM的数据。 请注意,具体的SPI通信协议和命令可能因EEPROM芯片型号而异,因此您需要仔细阅读EEPROM的规格说明以获得正确的操作指南。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里沽山

给一缕阳光,将继续灿烂!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值