SPI FLASH的读写

1.FLASH基本认识

Flash是一种非易失性存储器,又称为闪存,掉电后数据不会丢失的存储器。和RAM不一样的是写入时写数据只能将1写为0,0不能写为1,所以每次写入已经写入过数据的区域时必须将该扇区擦除,擦除过程是将所有数据强制改为1,这样就可以重新写入了。

现在用的比较多的也是比较简单的一种器件是qspi flash,容量虽然不算大但是在大部分对存储要求不是那么大的工程中是挺好用的,操作简单,出现问题找资料网上有很多,通信协议也是很常用的spi,只不过为了增加读写速度增加了2条数据信号线

2.3字节地址和4字节地址

这部分内容的科普知识网上有是,我就不想再重复了,想看课本上的知识的可以自行百度。这里我就说一下自己在实际运用过程中的理解,不一定准确但实际撸码的时候是可行的。spi flash的每一个地址对应一个8位数据就是一个字节。3字节地址说白了就是长度有3个字节24位的地址,那24位地址能存储多少字节,自然是2^24-1个字节。那超出这么多字节怎么办只能增加地址数,就是4字节长度的地址。以前的flash存储容量没有那么大就用不到4字节地址,现在容量够大了就加了个4字节地址进去就是长度多了8位。

有了4字节地址原来的3字节读写擦除指令就需要加入新的用于4字节的指令,现在的qspi flash基本都支持直接用4字节指令或者通过寄存器设置进行3字节4字节模式切换,分别进行3字节地址空间和4字节地址空间的操作。

3.flash用途注意事项

qspi flash常用于存储程序,完成fpga、dsp等上电启动,有的项目里还把它用来存储用户数据,要注意的是存储用户数据要选好起始地址不要把存储程序的部分给擦除了,那样就启动不了了。还有如果用到了4字节地址模式要在关机前退出4字节地址模式,flash上电不会默认切换到3字节地址模式。很多芯片上电启动配置不支持从4字节地址模式的flash读取程序,我目前用到的fpga芯片还没有见到支持4字节flash启动的。同样的要控制写入程序文件的大小不能超过16M否则一样没法启动。

另外硬件选型上也要注意现在flash容量标的是兆位为单位不是兆字节这二者容量差着8倍,选型别选错了不然搞上去容量不够耽误事,这些都是之前项目里犯过的低级错误。

4.flash常用命令供参考

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spiflash是一种基于SPI(串行外设接口)总线传输协议的闪存存储器,具有存储容量大、数据取速度快、耐用性强等优势。在C51单片机中,可以通过编相关的SPIFlash代码实现对Spiflash取、入以及其他操作。 首先,在C51单片机中,需要定义SPIFlash的各种参数,如CS(片选)、SCK(时钟)、MOSI(数据输入)、MISO(数据输出)等,以及各种指令操作码等。然后,可以通过调用SPI总线传输协议中的相关函数(如SPI_ClkHalf、SPI_WriteByte等)来实现对Spiflash取、入等操作,具体操作还需根据所使用的Spiflash型号来确定。 例如,Spiflash中的数据可以通过以下步骤实现: 1.选择要取的Spiflash芯片,将CS置低; 2.发送“数据指令”并指定取起始地址; 3.使用SPI_ClkHalf函数以SPI总线的半速进行时钟传输,将数据从MISO输入到C51的内部存储器中; 4.将取的数据存储到指定的存储器地址中; 5.将CS置高,完成取操作。 类似地,Spiflash的数据可以通过将数据入到MOSI中,然后发送“数据指令”来实现,具体细节还需根据Spiflash型号和实际应用场景确定。 总之,通过编相应的SPIFlash代码,可以在C51单片机中实现对Spiflash取和入,提高数据存储和取效率,并广泛应用于各种需要大容量数据存储的应用中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mayidianzi

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值