SPI协议_FLASH

SPI协议

SPI(Serial Peripheral Interface,串行外围设备接口) 通讯协议,是 Motorola 公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输,广泛用于 EEPROM、 Flash、 ADC(数模转换器)、 DSP(数字信号处理器)以及数字信号解码器上,是常用的也是较为重要的通讯协议之一。SPI 通讯协议的优点是支持全双工通信,通讯方式较为简单,且相对数据传输速率较快;缺点是没有指定的流控制,没有应答机制确认数据是否接收,与 IIC 总线通讯协议相比,在数据可靠性上有一定缺陷。

物理层

一主一从
在这里插入图片描述
一主多从
在这里插入图片描述
SPI 通讯协议包含 1 条时钟信号线、 2 条数据总线和 1 条片选信号线, 时钟信号线为SCK, 2 条数据总线分别为 MOSI(主输出从输入)、 MISO(主输入从输出),片选信号线为CS_n。

(1) SCK (Serial Clock): 时钟信号线,用于同步通讯数据。由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不同,两个设备之间通讯时,通讯速率受限于低速设备。

(2) MOSI (Master Output, Slave Input): 主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,数据方向由主机到从机。

(3) MISO (Master Input, Slave Output): 主设备输入/从设备输出引脚。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,数据方向由从机到主机。

(4) CS_n(Chip Select): 片选信号线,也称为 CS_N,以下用 CS_N 表示。 当有多个 SPI 从设备与 SPI 主机相连时,设备的其它信号线 SCK、 MOSI 及 MISO 同时并联到相同的 SPI总线上,即无论有多少个从设备,都共同使用这 3 条总线;而每个从设备都有独立的这一条 CS_N 信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。 I2C 协议中通过设备地址来寻址、选中总线上的某个设备并与其进行通讯;而 SPI协议中没有设备地址,它使用 CS_N 信号线来寻址,当主机要选择从设备时,把该从设备的 CS_N 信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行 SPI 通讯。所以 SPI 通讯以 CS_N 线置低电平为开始信号,以 CS_N 线被拉高作为结束信号

协议层

SPI 通讯协议一共有四种通讯模式, 模式 0、模式 1、模式 2 以及模式 3, 这 4 种模式
分别由**时钟极性(CPOL, Clock Polarity)时钟相位(CPHA, Clock Phase)**来定义,其中
CPOL 参数规定了空闲状态(CS_N 为高电平,设备未被选中)时 SCK 时钟信号的电平状态,
CPHA 规定了数据采样是在 SCK 时钟的奇数边沿还是偶数边沿。

在这里插入图片描述
有四种模式,其中常用的是模式0和3。

  1. 模式 0: CPOL= 0, CPHA=0。 空闲状态时 SCK 串行时钟为低电平; 数据采样在 SCK 时钟的奇数边沿,本模式中,奇数边沿为上升沿; 数据更新在 SCK 时钟的偶数边沿,本模 式中,偶数边沿为下降沿。
  2. 模式 1: CPOL= 0, CPHA=1。 空闲状态时 SCK 串行时钟为低电平; 数据采样在 SCK 时钟的偶数边沿, 本模式中,偶数边沿为下降沿; 数据更新在 SCK 时钟的奇数边沿,本模 式中,偶数边沿为上升沿。
  3. 模式 2: CPOL= 1, CPHA=0。 空闲状态时 SCK串行时钟为高电平; 数据采样在 SCK 时钟的奇数边沿, 本模式中,奇数边沿为下降沿; 数据更新在 SCK 时钟的偶数边沿,本模式中,偶数边沿为上升沿。
  4. 模式 3: CPOL= 1, CPHA=1。 空闲状态时 SCK 串行时钟为高电平; 数据采样在 SCK 时钟的偶数边沿, 本模式中,偶数边沿为上升沿; 数据更新在 SCK 时钟的奇数边沿,本模 式中,偶数边沿为下降沿

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

FLASH芯片

非易失性存储器,掉电后数据不会丢失,在 FPGA 工程的设计中, Flash 主要用作外接芯片来存储 FPGA 程序,使 FPGA 在上电后可以立即执行我们想要执行的程序。 SPIFlash 芯片就是支持 SPI 通讯协议的 Flash 芯片。

Flash 型号为 W25Q16 存储容量为 16Mbit(2M 字节),实验原理图如下:
在这里插入图片描述

SPI-Flash 全擦除指令

全擦除(Bulk Erase)操作,简称 BE,操作指令为 8’b1100_0111(C7h)。

在这里插入图片描述

如下图中从芯片手册中截取的内容,对全擦除指令进行了介绍,其大致意思就是:全擦除指令是将 Flash 芯片中的所有存储单元设置为全 1,在 Flash 芯片写入全擦出指令之前,需要先写入写使能(WREN)指令,将芯片设置为写使能锁存(WEL)状态;随后要拉低片选信号,写入全擦除指令,在指令写入过程中,片选信号始终保持低电平,待指令被芯片锁存后,将片选信号拉高;全擦除指令被锁存并执行后,需要等待一个完整的全擦除周期(tBE),才能完成 Flash 芯片的全擦除操作。
在这里插入图片描述
写使能(Write Enable)指令,简称 WREN,操作指令为 8’b0000_0110(06h)。
在这里插入图片描述

全擦除操作时序

在这里插入图片描述
**注意:**片选信号自下降沿始到第一个有效数据写入时止,这一段等待时间定义为片选信号有效建立时间 tSLCH,由图 38-15 可知,这一时间段必须大于等于 5ns;片选信号自最后一个有效数据写入时始到片选信号上升沿止,这一段等待时间定义为片选信号有效保持时间 tCHSH,这一时间段必须大于等于 5ns;片选信号自上一个上升沿始到下一个下降沿止,这一段等待时间定义为片选信号高电平等待时间 tSHSL,这一时间段必须大于等于 100ns。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是SPI_FLASH的相关资料: 1. 什么是SPI_FLASHSPI_FLASH是一种使用串行外设接口(SPI)通信协议的闪存存储器。它与常规的闪存存储器相比,具有更快的读取速度,更低的功耗和更小的封装。 2. SPI_FLASH的特点 - 通过SPI接口实现与主控芯片的通信,使用简单。 - 读取速度快,适合存储大量数据。 - 低功耗,适用于移动设备。 - 小型化封装,适合在空间有限的应用中使用。 3. SPI_FLASH的应用场景 SPI_FLASH广泛应用于嵌入式系统中,如智能家居、智能手环、智能穿戴设备、工业控制设备等。它能够存储各种数据,如程序代码、配置信息、用户数据等。 4. SPI_FLASH的工作原理 SPI_FLASH通过SPI接口与主控芯片通信。主控芯片向SPI_FLASH发送指令,SPI_FLASH根据指令执行相应的操作,如读取数据、写入数据等。SPI_FLASH的内部结构包括多个扇区,每个扇区又包括多个块。每个块由多个页组成,每个页包含若干字节的数据。主控芯片可以通过指令读取、写入某个扇区、块或页的数据。 5. SPI_FLASH的选型 选择SPI_FLASH时,需要考虑以下因素: - 存储容量:根据应用需求选择适当的存储容量。 - 封装类型:选择适合应用的封装类型,如SOIC、WSON、BGA等。 - 工作电压:根据应用需求选择适当的工作电压,如1.8V、3.3V等。 - 读取速度:根据应用需求选择适当的读取速度,如20MHz、50MHz等。 以上是关于SPI_FLASH的相关资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值