SPIFLASH操作(通过波形分析SPI)

1.背景

前面刚刚分析了EEPROM,那就顺带把SPIFLASH写了吧,器件性质,SPI的通信过程我就不过多分析了,网上讲的都非常详细了。这次我以W25Q32来介绍了

2.读取器件信息

dc910137f82d404e8ec1e93b94d414dc.png

d540d7e0cb5b45da87220ac08ef80d67.png对于FLASH来说读取器件地址是0x90,我们先发送0x90

33dc5d1dd32f4133a3eccee6b5b25cc0.png

之后的三个数据是没用的。

50bddc333978417996fc4f64b5e7c8e4.png

而最后两位是有用信息

其中EF代表制造商是华邦,15代表容量32Mb

644d13345a3140759cf2fd554537aed1.png

5c491f4484da4303ac4865811debaf73.png

3.擦除扇区

芯片一共有三种擦除方式:擦除扇区,擦整块,擦两块和全片擦除,而flash最明显的特点就是在写入前必须先擦除对应扇区。下面我就介绍擦除扇区,也是最常用的擦除,其他几种擦除也大同小异。

这是实际擦除扇区的波形

acc7fcc9706a4cd980277d1d6a53d685.png

想进行擦除先发送0x20,表示擦除扇区

751c28917364431aa4b0513879ddf491.png

edc39bf601094d97a255022b1dc57308.png

后面是三个地址。

ba1fec92b4c14c7990a18cc1a2cc99c3.png

这里地址是怎么分配的,和芯片内部原理有关系,我就过多赘述了,大家想找可以去网上找。

4.擦除扇区等待

与EEPROM一样擦除扇区也是需要时间的,同样有两种方法,这里我也都介绍一下

4.1方法一

读取寄存器

在flash芯片内部有一个状态寄存器,其中s0是判忙寄存器,当芯片处于写入和读取未完成时这一位会变1。

58dbde51c72c44609fd55063bb1c2365.png

向芯片发送0x05即可读取

23e5fdeb6bef4dbe805ff7a4a637dd14.png

实际波形如下

d3fecf7af1e04f00bcdc58a367de974d.png

4.2方法二

等!

7dea40d136e44b48aaa5dc2477766d7a.png

数据手册上给出的擦除一个扇区的典型时间是45ms,最长是400ms

b625157e91f14d93b887f696a7c95c2a.png

这里我等待了50ms

4.3总结

我在实际使用的时候是两种方案结合,即在等待50ms后再读取一次状态寄存器如果芯片不忙再进行下一步。

5.扇区写入

在写入前我还是重申一下请一定保证已经擦除扇区了,这时flash的特性决定的

fb3e567bac404444977a4740dc502fe5.png

首先我们需要先进行写入使能即写入0x06

29f6b430e32b4326869199c004286118.png

之后是扇区写入了

a56deac53fbf48de979d7f3c8cd32197.png

07641c58f4a54f50a4c599acdd536546.png

先发送0x02写入命令,然后是三位地址,后面接数据。这里不要写超了,flash内部如一本书一样,每本书上由很多页纸组成,当写入数据量超过一页纸就会又从纸顶部开始写起,这样数据就会产生覆盖的情况。这里我就不再过多赘述了,想了解的还是请上网搜索。

最后注意一下,扇区写入后也需要时间

1431d24cc3a24c6da69aca3484a4af4d.png

手册上给出的时间是0.4ms到3ms

我还是建议延迟加读状态寄存器结合来判忙

6.读取

184b7cec6f56429e9e2ec5a460edeeee.png

0a8af9387c9440fd967bc0c2fa37eee2.png

读取和写入的过程差不多,不过不用写入使能了。

先发送0x03,然后三位地址,后面就是从机发送的数据

7.总结

总的来说spiflash的操作比eeprom复杂的多,不过spiflash的用途比eeprom用的多的多,从嵌入式到电脑都有应用,在高端的场景还有qspiflash甚至直接挂载到总线上,还是非常建议大家充分理解上述的过程。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SPIFlash仿真文件是用于模拟SPI闪存的工作原理和功能的文件。SPI闪存是一种常见的存储设备,采用SPI(Serial Peripheral Interface)总线协议进行数据交互。仿真文件通过模拟SPI闪存的输入和输出信号,可以在计算机上模拟SPI闪存的工作过程。 首先,SPIFlash仿真文件可以模拟SPI闪存的读取操作。当系统需要读取SPI闪存中的数据时,仿真文件会根据指定的地址和读取模式,返回对应的数据给主控制器。这样可以方便地验证读取操作的正确性,避免实际连接硬件设备的复杂性。 其次,SPIFlash仿真文件还能够模拟SPI闪存的写入操作。通过定义写入的地址和数据,仿真文件能够在内部模拟SPI闪存的存储结构,将数据写入到指定的地址中。这样可以用于验证写入操作的准确性和效果,避免对实际设备进行频繁的写入操作。 最后,SPIFlash仿真文件还可以模拟SPI闪存的操作时序和时钟频率。SPI闪存的操作需要按照一定的时序和时钟频率进行,仿真文件可以根据设定的参数模拟SPI闪存操作的时钟波形和传输速率。这样可以方便地测试和验证系统对SPI闪存的时序和时钟频率的要求。 总之,SPIFlash仿真文件是一种方便、实用的工具,可以用于验证和调试SPI闪存相关的软件程序和系统设计。通过使用仿真文件,可以提高开发效率,减少对实际硬件设备的依赖,避免操作风险和成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值