w25q128中文數據手冊


W25Q128中文數據手冊
一、產品概述
1.1 產品簡介
W25Q128是一款由華邦電子(Winbond)推出的高性能串行NOR閃存芯片,采用SPI(Serial Peripheral Interface)接口協議。其存儲容量為128兆位(16兆字節),支持標準SPI、雙線SPI(Dual SPI)和四線SPI(Quad SPI)模式,能夠滿足不同應用場景下的數據存儲需求。W25Q128具有低功耗、高可靠性、快速讀寫速度等特點,廣泛應用于嵌入式系統、消費電子、工業控制、汽車電子等領域。
1.2 主要特性
存儲容量:128兆位(16兆字節)
接口類型:SPI(支持標準SPI、Dual SPI、Quad SPI模式)
工作電壓:2.7V至3.6V
時鐘頻率:最高支持104MHz(標準SPI模式),Quad SPI模式下可達更高頻率
頁大小:256字節
塊大小:64KB(塊擦除)
扇區大小:4KB(扇區擦除)
擦寫周期:約10萬次
數據保存時間:20年以上
工作溫度范圍:-40℃至+85℃
封裝形式:SOIC-8、WSON-8、USON-8等
1.3 應用領域
嵌入式系統:存儲固件、啟動代碼、配置文件等
消費電子:智能手機、平板電腦、智能穿戴設備等
工業控制:PLC、傳感器節點、工業儀表等
汽車電子:車載儀表盤、行車記錄儀、ECU等
物聯網設備:智能家居、智能電表、環境監測儀等
二、電氣特性
2.1 絕對最大額定值
供電電壓(VCC):-0.5V至4.0V
輸入電壓(VI):-0.5V至VCC+0.5V
輸出電壓(VO):-0.5V至VCC+0.5V
工作溫度范圍:-40℃至+85℃
存儲溫度范圍:-65℃至+150℃
2.2 直流特性
工作電壓(VCC):2.7V至3.6V
輸入高電平(VIH):0.7×VCC至VCC+0.5V
輸入低電平(VIL):-0.5V至0.3×VCC
輸出高電平(VOH):0.7×VCC至VCC+0.5V
輸出低電平(VOL):-0.5V至0.3×VCC
輸入漏電流(II):±1μA(最大)
輸出漏電流(IO):±1μA(最大)
2.3 交流特性
時鐘頻率(fCLK):
標準SPI模式:最高104MHz
Dual SPI模式:最高104MHz
Quad SPI模式:最高104MHz
頁編程時間(tPP):0.7ms(典型值)
扇區擦除時間(tSE):400ms(典型值)
塊擦除時間(tBE):400ms(典型值)
芯片擦除時間(tCE):40s(典型值)
寫使能延遲時間(tW):50ms(最大)
讀數據時間(tRC):25ns(最大)
三、功能描述
3.1 存儲器組織
W25Q128的存儲器組織結構如下:
總容量:128兆位(16兆字節)
塊(Block):256個塊,每個塊64KB
扇區(Sector):每個塊包含16個扇區,每個扇區4KB
頁(Page):每個扇區包含16個頁,每個頁256字節
3.2 操作模式
W25Q128支持以下操作模式:
標準SPI模式:單線數據傳輸,時鐘頻率最高104MHz
Dual SPI模式:雙線數據傳輸,時鐘頻率最高104MHz
Quad SPI模式:四線數據傳輸,時鐘頻率最高104MHz
3.3 指令集
W25Q128支持豐富的指令集,以下為常用指令:
指令 | 指令碼 | 描述 |
---|---|---|
寫使能(Write Enable) | 06H | 使能寫操作 |
寫禁止(Write Disable) | 04H | 禁止寫操作 |
讀狀態寄存器(Read Status Register) | 05H | 讀取狀態寄存器1的值 |
寫狀態寄存器(Write Status Register) | 01H | 寫入狀態寄存器1的值 |
讀數據(Read Data) | 03H | 從指定地址讀取數據 |
快速讀數據(Fast Read) | 0BH | 快速讀取數據,支持Dummy Cycle |
頁編程(Page Program) | 02H | 向指定頁寫入數據 |
扇區擦除(Sector Erase) | 20H | 擦除指定扇區(4KB) |
塊擦除(Block Erase) | D8H | 擦除指定塊(64KB) |
芯片擦除(Chip Erase) | C7H | 擦除整個芯片 |
讀制造商ID(Read Manufacturer/Device ID) | 90H | 讀取制造商ID和設備ID |
讀唯一ID(Read Unique ID) | 4BH | 讀取唯一ID(64位) |
進入掉電模式(Power Down) | B9H | 進入低功耗掉電模式 |
釋放掉電模式(Release Power Down) | ABH | 釋放掉電模式 |
3.4 狀態寄存器
W25Q128包含三個狀態寄存器(SR1、SR2、SR3),用于監控和控制芯片狀態。以下為狀態寄存器1的主要位定義:
位 | 名稱 | 描述 |
---|---|---|
0 | BUSY | 忙標志位(1=忙,0=空閑) |
1 | WEL | 寫使能鎖存位(1=允許寫,0=禁止寫) |
2 | BP0 | 塊保護位0 |
3 | BP1 | 塊保護位1 |
4 | BP2 | 塊保護位2 |
5 | TB | 頂部/底部塊保護選擇位 |
6 | SEC | 扇區/塊保護選擇位 |
7 | SRP0 | 狀態寄存器保護位0 |
四、操作流程
4.1 寫操作流程
寫使能:發送寫使能指令(06H),使能寫操作。
頁編程:發送頁編程指令(02H),指定目標地址和數據。
等待寫入完成:通過輪詢狀態寄存器的BUSY位,確認寫入完成。
4.2 讀操作流程
發送讀指令:發送讀數據指令(03H)或快速讀數據指令(0BH),指定目標地址。
讀取數據:通過MISO引腳讀取數據。
4.3 擦除操作流程
寫使能:發送寫使能指令(06H),使能寫操作。
擦除指令:發送扇區擦除(20H)、塊擦除(D8H)或芯片擦除(C7H)指令,指定目標地址。
等待擦除完成:通過輪詢狀態寄存器的BUSY位,確認擦除完成。
五、硬件連接示例
5.1 與STM32的連接
以下為W25Q128與STM32微控制器的典型連接方式:
W25Q128引腳 | STM32引腳 | 描述 |
---|---|---|
/CS(片選) | GPIO引腳(如PA4) | 片選信號,低電平有效 |
CLK(時鐘) | SPI_SCK(如PA5) | SPI時鐘信號 |
DO(數據輸出) | SPI_MISO(如PA6) | 主機輸入,從機輸出 |
DI(數據輸入) | SPI_MOSI(如PA7) | 主機輸出,從機輸入 |
/WP(寫保護) | NC或GPIO引腳 | 寫保護信號,低電平有效(可選) |
/HOLD(保持) | NC或GPIO引腳 | 保持信號,低電平暫停通信(可選) |
VCC | 3.3V | 電源電壓 |
GND | GND | 接地 |
5.2 硬件設計注意事項
電源濾波:在VCC引腳附近添加去耦電容(如0.1μF),以減少電源噪聲。
信號完整性:SPI信號線(CLK、MOSI、MISO、/CS)應盡量短,避免信號干擾。
上拉電阻:/WP和/HOLD引腳可通過上拉電阻(如10kΩ)接至VCC,以確保默認狀態。
六、軟件編程示例
6.1 初始化SPI接口
以下為基于STM32 HAL庫的SPI初始化代碼示例:
#include "stm32f1xx_hal.h"
SPI_HandleTypeDef hspi1;
void SPI1_Init(void) { hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi1.Init.CRCPolynomial = 7; if (HAL_SPI_Init(&hspi1) != HAL_OK) { // 初始化錯誤處理 Error_Handler(); } }
6.2 寫使能函數
void W25Q128_WriteEnable(void) { uint8_t cmd = 0x06; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // 拉低/CS HAL_SPI_Transmit(&hspi1, &cmd, 1, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // 拉高/CS }
6.3 頁編程函數
void W25Q128_PageProgram(uint32_t addr, uint8_t *data, uint16_t size) { uint8_t cmd[4]; cmd[0] = 0x02; // 頁編程指令 cmd[1] = (addr >> 16) & 0xFF; cmd[2] = (addr >> 8) & 0xFF; cmd[3] = addr & 0xFF;
W25Q128_WriteEnable(); // 寫使能 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // 拉低/CS HAL_SPI_Transmit(&hspi1, cmd, 4, HAL_MAX_DELAY); HAL_SPI_Transmit(&hspi1, data, size, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // 拉高/CS
// 等待寫入完成 while (W25Q128_ReadStatusRegister() & 0x01); }
6.4 讀數據函數
void W25Q128_ReadData(uint32_t addr, uint8_t *data, uint16_t size) { uint8_t cmd[4]; cmd[0] = 0x03; // 讀數據指令 cmd[1] = (addr >> 16) & 0xFF; cmd[2] = (addr >> 8) & 0xFF; cmd[3] = addr & 0xFF;
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // 拉低/CS HAL_SPI_Transmit(&hspi1, cmd, 4, HAL_MAX_DELAY); HAL_SPI_Receive(&hspi1, data, size, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // 拉高/CS }
七、注意事項
寫保護:在寫入數據前,需確保寫保護引腳(/WP)為高電平,或通過狀態寄存器禁用寫保護。
擦除操作:寫入數據前需先擦除對應扇區或塊,直接覆蓋寫入會導致數據錯誤。
總線沖突:在多設備共享SPI總線時,需合理管理片選信號(/CS),避免總線沖突。
供電穩定性:在寫入或擦除操作過程中,需確保供電穩定,避免因斷電導致數據損壞。
溫度范圍:W25Q128的工作溫度范圍為-40℃至+85℃,超出此范圍可能導致性能下降或損壞。
W25Q128是一款高性能、低功耗的串行NOR閃存芯片,具有128兆位(16兆字節)的存儲容量,支持SPI、Dual SPI和Quad SPI模式。其豐富的指令集和靈活的操作模式,使其廣泛應用于嵌入式系統、消費電子、工業控制等領域。通過合理的硬件設計和軟件編程,可充分發揮W25Q128的性能優勢,滿足各種數據存儲需求。
責任編輯:David
【免責聲明】
1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業目的。
3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。
4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。
拍明芯城擁有對此聲明的最終解釋權。