前言
- 使用標准SPI指令格式;
- 3字節地址模式或4字節地址模式;
- 支持SPI 總線 模式0 和 模式3;
- 存儲容量32MB;
- 時鍾頻率范圍:80Mhz – 104Mhz;
-
主機:STM32F103ZET6 ;主機的SPI 總線模式應該與從機的SPI 總線模式保持一致;
-
電路原理
-
內存組織
-
狀態寄存器和擴展地址寄存器
備注:外部擴展寄存器僅用於3字節地址模式,用來設置更高的地址;
部分位說明:
WIP位:只讀;可以根據這個位判斷Flash的工作狀態;WIP = 1:Flash正在執行寫(數據或狀態寄存器)操作或擦除操作;WIP = 0:無執行寫(數據或狀態寄存器)操作或擦除操作;
WEL位:可讀寫;WEL = 1:使能寫(數據或狀態寄存器)操作或擦除操作;WEL = 0:失能寫(數據或狀態寄存器)操作或擦除操作;
TB位、BP3、BP2、BP1、BP0位、SRP1、SRP0位:可讀寫;保持0,不使用數據保護模式;
LB3、LB2、LB1位:OTP,一次性可編程;一旦這三個位都被置1,安全寄存器將永久性變為只讀;(GD25Q256提供可被編程和擦除的具有2048字節的安全寄存器)
DRV1、DRV0位:可讀寫;可編程讀操作速度,默認值為01,75%;可配置為00,100% 來增加讀取速度;
PE位:只讀;編程出錯標志;
EE位:只讀;擦除出錯標志;
ADS位:只讀;指示當前Flash的地址模式;ADS = 0:3字節地址模式;ADS = 1:4字節地址模式;
ADP位:可讀寫;決定上電或復位后的Flash的地址模式;ADP = 0:3字節地址模式;ADP = 1:4字節地址模式;
A24位:可讀寫;A24 = 1:選擇高128Mb(01000000h – 01FFFFFF)內存空間;A24 = 0:選擇低128Mb(00000000h – 00FFFFFFh)內存空間;
- 一些命令使用的注意事項
- 在傳輸完一幀數據的最后一個位必須取消片選(把片選線拉高);
- 對於以下命令:頁編程、扇區擦除、塊擦除、整片擦除、寫狀態寄存器、寫使能/失能、深度休眠指令,必須在傳輸完一幀數據的最后一個位的字節邊界(准確的8的倍數個CLK脈沖后),取消片選,否則命令不會被執行。
-
對於頁編程指令,如果寫入不足一個字節,那么寫使能WEL 不會被取消。
-
命令列表
備注:
Table of ID Definitions:
Security Registers Address
Security Register1: A23-A16=00H, A15-A12=1H, A11=0b, A10-A0=Byte Address;
Security Register2: A23-A16=00H, A15-A12=2H, A11=0b, A10-A0=Byte Address;
Security Register3: A23-A16=00H, A15-A12=3H, A11=0b, A10-A0=Byte Address.
- 命令解析
-
Write Enable (WREN) (06H)
在頁編程、擦除、寫狀態寄存器之前,必須先進行寫使能。
-
Write Disable (WRDI) (04H)
以下操作將會使寫使能位失效:上電、頁編程、擦除、寫狀態寄存器、寫失能指令;
寫失能后,不能進行頁編程、擦除以及寫狀態寄存器;注意:不能在執行頁編程、擦除、寫狀態寄存器期間,進行寫失能操作,否則命令不會生效;
-
Read Status Register (RDSR) (05H or 35H or 15H)
可以在任何時候讀取狀態寄存器;注意:當WIP被置0時,讀取到的值為准!
-
Write Status Register (WRSR) (01H or 31H or 11H)
I、 寫狀態寄存器之前,必須先寫使能;
ii、 寫操作對S0、S1、S8、S10、S15、S18、S19無影響;
iii、必須在傳輸完最后一位的時候,把片選取消,否則寫狀態寄存器將會失敗;
iv、寫狀態寄存器期間,WIP位置1,當寫操作完成,WIP置0,並且寫使能失效(WEL:1 -> WEL:0);
-
Read Extended Register (C8H)
-
Write Extended Register (C5H)
寫操作之前,不需要執行寫使能操作;掉電或復位,該寄存器的值將會清除;
-
Read Data Bytes (READ 03H or 4READ 13H)
i、 可以讀取任意地址;
ii、 字節地址自加;
iii、當WIP = 1,不能進行讀取操作;
-
Read Data Bytes at Higher Speed (Fast Read 0BH or 4Fast Read 0CH)
i、 空閑時鍾數量可編程(決定Dummy byte的數量);
ii、字節地址自加;
-
Page Program (PP 02H or 4PP 12H)
i、 頁編程前,必須先進行寫使能操作;
ii、 寫操作必須以頁首地址作為起始地址;
iii、寫入前先擦出;(按照Datasheet的說法,應該是寫入前不需要先擦除的,但是,如果不先擦除,寫入再讀出的數據是錯亂的)
iv、一次寫入的大小不應超過最大頁大小;
-
Sector Erase (SE 20H or 4SE 21H) Page Program (PP 02H or 4PP 12H)
i、 擦除之前必須先執行寫使能操作;
ii、 擦除期間,WIP置1;擦除完成,WIP置0;注意:WIP是在片選取消后被置位的;
iii、地址可以是待擦除扇區內的任意地址;
-
32KB Block Erase (BE32 52H or 4BE32 5CH)
i、 擦除之前必須先執行寫使能操作;
ii、 擦除期間,WIP置1;擦除完成,WIP置0;注意:WIP是在片選取消后被置位的;
iii、地址可以是待擦除塊區內的任意地址;
-
64KB Block Erase (BE64 D8H or 4BE64 DCH)
i、 擦除之前必須先執行寫使能操作;
ii、 擦除期間,WIP置1;擦除完成,WIP置0;注意:WIP是在片選取消后被置位的;
iii、地址可以是待擦除塊區內的任意地址;
-
Chip Erase (CE) (60/C7H)
i、 擦除之前必須先執行寫使能操作;
ii、 擦除期間,WIP置1;擦除完成,WIP置0;注意:WIP是在片選取消后被置位的;
-
Deep Power-Down (DP) (B9H)
i、 這個模式僅僅只能通過except the Release from Deep Power-Down and Read Device ID (RDI) 命令或者復位來退出;
-
Enter 4-Byte Address Mode (B7H)
i、 狀態寄存器ADS位自動置1,表示已進入4字節地址模式;
-
Exit 4-Byte Address Mode (E9H)
i、 狀態寄存器ADS位自動置0,表示已退出4字節地址模式;
-
Clear SR Flags (30H)
-
Release from Deep Power-Down and Read Device ID (RDI) (ABH)
-
Read Manufacture ID/ Device ID (REMS) (90H)
-
Read Identification (RDID) (9FH)
-
Erase Security Registers (44H)
i、 該Flash有3組2048個字節的安全寄存器;
ii、擦除之前必須先執行寫使能操作;;
iii、擦除期間,WIP置1;擦除完成,WIP置0;注意:WIP是在片選取消后被置位的;
-
Program Security Registers (42H)
i、 寫入操作至少寫入一個字節;
ii、編程之前必須先執行寫使能操作;;
iii、寫入期間,WIP置1;擦除完成,WIP置0;注意:WIP是在片選取消后被置位的;
-
Read Security Registers (48H)
i、 可以讀取范圍內任意地址,並且地址自增;
ii、如果A0 – A10范圍超過7FFFH,會自動復位為0000H;
