首页 > 代码库 > SPI_FLASH 操作

SPI_FLASH 操作

  前段时间需要另外规划Mboot的一些配置和功能,折腾了好一会Spi Flash 记录一下。


一.概念:


SPI:serial peripheral interface

串行接口设备,spi flash 就是通过串行的接口进行操作的flash存储设备

flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash!

spi flash 读写较慢,次数有限制,一般用于不经常更改的存储。



二.操作:


我这边用于存储Mboot的spi flash 只有2M大小,十六进制表示大小为:0x200000

操作之前需要进行spi flash的初始化,这个一般在Mboot 起来的时候初始化设备的时候执行。

会将flash 分为多少block,每个block的size设置,以及起始的地址。

我这边是把2M分为了32块,每块64K,起始地址为0x00

spi flash 的读操作一般没有什么问题。主要是写操作。在对flash写之前必须要进行擦除,因为spi flash 是 nor flash ,所以写操作只能把bit  1 变成 0 .

所以需要往哪个位置写入数据的时候,就要保证目标位置的byte为0xFF 。

一般的spi flash 都是支持扇区擦除的,意思就是一次只擦除一个扇区,全部置为0xFF,nor flash的页编程大小为256bytes, 16个page 为一个扇区 也就是4K的大小!

需要注意的是,flash 还会有protect status,想写入就得关掉保护。