Linux的SPI应用(四)----访问Nor Flash(MT25QL01GBBB)
SPI FLASH的一些主要的命令的时序:读,写,擦除,写使能,读寄存器等。
Flash的特性是,写数据只能将1写为0,0不能写为1。擦除数据是将所有数据都写为1,因此如果想在已经数据的Flash上写入新的数据,则必须先擦除。
以MT25为例来讲解QSPI FLASH的一些主要的命令的时序。这里只讨论Extended SPI,Dual SPI和Qual SPI就不讨论了,这三种模式的差异仅仅体现在命令的传输上。Extended SPI命令传输使用DQ0,而Dual SPI使用两根线来传输命令, Quad SPI使用四根线来传输命令。
对于STR传输,也就是单时钟边沿采样,最高采样频率能达到133MHz。对于DTR双边沿采样来说,最高采样频率能达到66MHz。所以SDR和DTR的采样数据的速度其实是一样的。
-
MT25的内存分配
-
引脚图
引脚功能如下
-
读Flash ID 9Eh
9Eh时序非常简单,HOST送出8bit的命令,然后FLASH会依次送出8bit的Manufaturer ID,16bit的Device ID,以及不定长的UID。下图是MT25的Device ID数据结构 。
-
写使能 06h
不管是在擦除还是写数据之前,都需要进行写使能操作,才能操作SPI NOR FLASH。
-
4-BYTE 4KB SUBSECTOR ERASE擦除命令21h
Flash的擦除必须是以扇区为单位,在MT25中,可以进行64KB的扇区擦除,也可以做32KB或者4KB的子扇区擦除。
对NOR FLASH来说,只能从1写到0,所以在对某一个word或者byte进行写操作的时候,需要对NOR FLASH进行擦除。但一般SPI NOR FLASH都没有字节擦除的命令,最小都是基于SUBSECTOR的擦除。
-
写命令 12h
写命令一次只能写一个PAGE,也就是256个byte。
-
读Status Register 05h
时序是读register的操作,status register一共是八位,一般用来查询读操作是否完成。
-
读命令13h
借鉴于:
https://blog.****.net/u011280717/article/details/81408874