目录
前言
工作中,用到过两种flash:M25P32、AT25DF641A。
下面以这个串行Flash(AT25DF641A)为例,对Flash读写访问进行简单介绍。
1、AT25DF641A flash芯片简介
AT25DF641A flash芯片管脚封装
2、AT25DF641A flash读访问时序
按照芯片手册的读时序进行即可,没有特别需要注意的地方。
3、AT25DF641A flash写访问时序
有几点说明需要注意:
(1)关于Protect Sector
由下图芯片手册说明可知,该Flash芯片在上电后,会默认处于保护状态。
在Flash芯片处于保护状态下,是不允许写访问和擦除操作。
(2)关于Write Enable
首先需要知道,WEL bit 需要在写访问和擦除操作之前置1。
其次需要知道,WEL bit在写访问和擦除操作等成功后,会被自动清0。
(3)关于Erase
首先需要知道,写访问的地址空间必须是擦除过的地址空间。
其次需要知道,进行擦除操作之前,需要先将WEL bit置1.
最后需要知道,擦除操作成功后,Flash芯片会自动将WEL bit清零。
(4)关于状态寄存器
一般在所有数据全部写入Flash之后,会将Flash芯片置于保护状态。
(5)写访问时序
在发写指令和写地址之前,需要进行下面几个步骤:
- Write Enable,取消保护
- Write Enable,擦除对应地址空间
- Write Enable,等待写指令、写地址、写数据。
在上面3个步骤执行完之后,按照手册的写访问时序进行即可实现数据的写入操作。
Byte写访问和Page写访问,是没有太大区别的。因为他们发的写指令码是一样的。
详细的代码不再介绍,按时序图写Verilog代码即可。
参考文献