SPI协议_FLASH

news/2025/3/28 17:56:18/

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。


http://www.ppmy.cn/news/587693.html

相关文章

嵌入式开发——EEPROM和FLASH的区别和优劣势

1、EEPROM的发展 (1)ROM(Read Only Memory):真正意义上的只读存储器,在出厂的时候数据就写在了芯片里,只能读不能写; (2)PROM(Program Rom):可编程只读存储器,可编程的ROM芯片,出厂的时候芯片是空白的,自己…

JFlash的高级使用教程(1)-- 固件合并

1.固件合并的使用场景; 为了使单片机拥有自定义的OTA功能,单片机程序都是有两段或者两段以上的程序组成,其中,负责实现OTA功能的程序叫做BootLoader程序,被升级的程序就是APP程序; 在量产过程中&#xff…

ERROR: Error while loading flash algo ELF file. No file specified

Connecting to J-Link... J-Link is connected. ERROR: Error while loading flash algo ELF file. No file specified Failed to set device (STM32G0B0RE). Unknown device selected?ERROR : Failed to set device. 搜索如何添加flash 编程算法 搜索后缀.FLM 在jlink目录…

EEPROM与FLASH闪存到底有什么区别?

1、擦写方式不同 FLASH在写新的数据前必须先擦除,而且经常是只允许整页擦除,没有办法擦除一个字节,换句话说,只能成块的读写,特别是写。 EEPROM写之前不需要擦除,可以每次改写一个字节。当然,…

rt-thread驱动篇(08)---STM32F429单片机NAND FLASH驱动

目录 参考资料 一、NAND FLASH 1.1、特性 1.2、存储单元结构 1.3、NAND FLASH寻址 1.4、坏块管理与磨损均衡 1.5、ECC校验 二、uffs 1、uffs配置相关宏 参考资料 1、rtthread-uffs 11.文件系统 - UFFS - 《RT-Thread编程手册》 - 书栈网 BookStack 2、UFFS嵌入式N…

PDF格式转swf格式

文章目录 java使用swfTools将pdf文件转换swf文件下载swfTools安装java代码如何查看生成的swfChrome出现adobe flash player被屏蔽如何处理 因为一位朋友需要帮忙,把PDF转为swf,一位很简单,不成想真难,其实也不难,只是没…

web安全--Flash跨域数据劫持漏洞

001,背景 很多上传文件的后端逻辑在实现时,仅仅验证了文件后缀名和Content-Type,没有对上传文件的内容进行验证。通常情况下这样的处理逻辑仅仅是不严谨,不会造成太大的安全隐患。但经过笔者测试,发现object标签在包含…

计算机存储程序错误检验,内存错误怎么办?内存错误的修复与检测方法介绍

导语: 电脑具有存储功能,这点毋庸置疑,一款电脑的内存大小能够在一定程度上决定这款产品的性能。但是,我们电脑用户在使用电脑的过程中常常会遇到电脑内部才能错误的故障。那么,内存错误的原因是什么?电脑内存错误之后…