Winbond: Difference between revisions

 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
[https://www.winbond.com/hq/ Winbond] of Taiwan manufactures semiconductor devices, including flash storage.
[https://www.winbond.com/hq/ Winbond] of Taiwan manufactures semiconductor devices, including flash storage.


==[https://www.winbond.com/resource-files/w25n01gv%20revg%20032116.pdf W25N01GVxxIG/IT]==
==Serial SLC NAND Memory==
A 1Gb (128MB) Quad-SPI SLC NAND chip of 1K 128KB blocks (each made up of 64 ECC-protected 2KB pages), capable of up to 104MHz Quad-SPI. Each page, in addition to the 2048 usable bytes, contains a 64-byte "Spare Area". Writes load 2,112 bytes. When on-device ECC is enabled, the majority of the Spare Area is used for ECC and bad block marking, though 2 unprotected and 4 ECC-protected bits are available to the user in each of 4 16-byte lines. When on-device ECC is disabled, the 64 bytes of the Spare Area are available to the user. The serial NAND employs 32-bit addresses: the four MSB are unused, 10 bits select the block, 6 bits select the page, and the 12 LSB specify the byte. The device also provides a 20-entry LUT for mapping logical page addresses away to undamaged physical page addresses (the manufacturer might set some of these entries at the factory).
Product family 25N.
 
===[https://www.winbond.com/resource-files/w25n01gv%20revg%20032116.pdf W25N01GVxxIG/IT]===
A 1Gb (128MB) Quad-SPI SLC NAND chip of 1K 128KB blocks (each made up of 64 ECC-protected 2KB pages), capable of up to 104MHz Quad-SPI. Each page, in addition to the 2048 usable bytes, contains a 64-byte "Spare Area". Writes load 2,112 bytes. When on-device ECC is enabled, the majority of the Spare Area is used for ECC and bad block marking, though 2 unprotected and 4 ECC-protected bytes are available to the user in each of 4 16-byte lines. When on-device ECC is disabled, the 64 bytes of the Spare Area are available to the user. The serial NAND employs 32-bit addresses: the four MSB are unused, 10 bits select the block, 6 bits select the page, and the 12 LSB specify the byte. The device also provides a 20-entry LUT for mapping logical page addresses away to undamaged physical page addresses (the manufacturer might set some of these entries at the factory).


The xx refers to the package code. The IT part sets the BUF mode selector to 0 on initialization. The IG part sets BUF to 1. Both allow the mode to be configured by writing to the BUF bit of the Configuration Register.
The xx refers to the package code. The IT part sets the BUF mode selector to 0 on initialization. The IG part sets BUF to 1. Both allow the mode to be configured by writing to the BUF bit of the Configuration Register.


The device has JEDEC Manufacturer ID 0xEF and evice ID 0xAA21.
The device has JEDEC Manufacturer ID 0xEF and Device ID 0xAA21.


Bad blocks are marked at the factory with a non-0xff byte as their first byte, and a non-0xff byte as the first byte of the first page's Spare Area (i.e. all blocks marked with 0xff as their first byte, and as the first byte of the first page's Spare Area, are considered good). Before executing the first program or erase instruction, pages ought be inspected, and added to the LUT if necessary.
Bad blocks are marked at the factory with a non-0xff byte as their first byte, and a non-0xff byte as the first byte of the first page's Spare Area (i.e. all blocks marked with 0xff as their first byte, and as the first byte of the first page's Spare Area, are considered good). Before executing the first program or erase instruction, pages ought be inspected, and added to the LUT if necessary.


===Packages===
====Packages====
* 8-pad WSON 8x6mm (package code ZE)
* 8-pad WSON 8x6mm (package code ZE)
* 16-pin SOIC 300-mil (package code SF)
* 16-pin SOIC 300-mil (package code SF)
Line 16: Line 19:
* 4x6 24-ball 8x6mm TFBGA (package code TC)
* 4x6 24-ball 8x6mm TFBGA (package code TC)


===Lines===
====Lines====
* CLK serial clock input
* CLK serial clock input
* /CS chip select input
* /CS chip select input
Line 34: Line 37:
Data is written on the rising edge of CLK, and read on the falling edge.
Data is written on the rising edge of CLK, and read on the falling edge.


===Status Registers===
====Status Registers====
Used with the ReadStatusRegister and WriteStatusRegister commands. Factory defaults are 1 for the 4 BP bits, TB, and ECC-E, and 0 for all other bits (though this can be changed via OTP locking).
Used with the ReadStatusRegister and WriteStatusRegister commands. Factory defaults are 1 for the 4 BP bits, TB, and ECC-E, and 0 for all other bits (though this can be changed via OTP locking).
* Protection Register (SR1)
* Protection Register (SR1)
Line 69: Line 72:
** B0: Busy, set to 1 while instructions are not being accepted following many instructions
** B0: Busy, set to 1 while instructions are not being accepted following many instructions


===Instructions===
====Instructions====
27 instructions are supported. Instruction read is initiated on the falling edge of /CS, and completion indicated by the rising edge. Write, Program, and Erase instructions must drive CS high on a byte boundary (8*n CLK cycles following /CS falling); this is relevant when using Quad-SPI (where a byte requires 2 rather than 8 clocks). Most instructions are ignored when the BUSY bit of SR3 is set.
27 instructions are supported, generally compatible with the SpiFlash NOR command set. Instruction read is initiated on the falling edge of /CS, and completion indicated by the rising edge. Write, Program, and Erase instructions must drive CS high on a byte boundary (8*n CLK cycles following /CS falling); this is relevant when using Dual- or Quad-SPI (where a byte requires 4 or 2 rather than 8 clocks). Most instructions are ignored when the BUSY bit of SR3 is set.
* 0xFF -- RESET. Data corruption can result if RESET is issued while BUSY is high.
* 0xFF -- RESET. Data corruption can result if RESET is issued while BUSY is high.
* 0x9F -- ReadJEDEC, returns 0xEFAA21
* 0x9F -- ReadJEDEC, returns 0xEFAA21
Line 86: Line 89:
* 0x34 -- QuadRandomLoadProgramData. RandomLoadProgramData using 4 pins for data transfer
* 0x34 -- QuadRandomLoadProgramData. RandomLoadProgramData using 4 pins for data transfer
* 0x10 -- ProgramExecute. 8 dummy clocks followed by 2-byte page address. The data buffer is written to the page.
* 0x10 -- ProgramExecute. 8 dummy clocks followed by 2-byte page address. The data buffer is written to the page.
** Pages must be written sequentially within a block!
* 0x13 -- PageDataRead. 8 dummy clocks followed by 2-byte page address. The data buffer is filled from the page.
* 0x13 -- PageDataRead. 8 dummy clocks followed by 2-byte page address. The data buffer is filled from the page.
** If OTP is enabled, page addresses 0x0--0xb are remapped to the Unique ID Page, Parameter Page, and 10 OTP pages
** If OTP is enabled, page addresses 0x0--0xb are remapped to the Unique ID Page, Parameter Page, and 10 OTP pages