日期:2014-05-16 浏览次数:20857 次
W25X是一系列SPI接口Flash芯片的简称,它采用SPI接口和CPU通信,本文使用的W25Q32BV容量为32M,具体特性如下:
该芯片最大支持104MHz的时钟,供电电压范围在2.7~3.6V,SPI的片选信号CS低有效,在操作芯片的时候,
需要将/WP和/HOLD管脚接电源。
发送地址或数据到设备时,MOSI管脚数据采样在CLK的上升沿,从芯片读数据或者状态时,MISO管脚数据采样在CLK
的下降沿,所以在设置SPI的工作模式时,必须设置为MODE0或者MODE3,本文设置为MODE3。
W25Q32BV总共有16384页(page),每页有256bytes,每次最大可以编程一页。在擦除上,可以一次擦除
4KB、32KB、64KB,或者擦除整个芯片。整个芯片的存储空间如下图:
W25Q32BV存储空间分为sector和block。一个sector共有4KB,一个block共有32KB。一个sector存储空间如下图:
本文共支持四种擦除方式,分别如下:
1) cmd = 0x20,sector擦除,一次可以擦除4KB。芯片共有1024个sector。
2) cmd = 0x52,半个block擦除,一次可以擦除32KB。芯片共有128个半block。
3) cmd = 0xd8,block擦除,一次可以擦除64KB。芯片共有64个block。
4) cmd = 0xC7,芯片擦除,擦除整个芯片。
W25Q32BV共有两个字节的状态寄存器,我们需要关心的就是BIT0和BIT1。
BIT0:busy flag,1:busy,0:free。
BIT1:write enable latch,1:write enable,0:write disable。
在操作W25Q32BV时,如果是写数据到芯片,则每写一个字节,都需要读取一个数据。
在从芯片接收数据时,首先往芯片写一个字节的0xff,然后就是需要读取的数据。
在系统启动的时候,首先会对设备信息进行注册,见《Linux spi驱动分析(一)----总线驱动》中的3.1,所以编写w25q的设备
驱动程序时,首先需要对设备信息进行注册,具体内容如下:
点击(此处)折叠或打开