S29GL01GP
S29GL512P
S29GL256P
S29GL128P
Autoselect Addresses in System
Description
Address
Read Data (word/byte mode)
Device ID, Word 3
Base + 0Fh 2201h/01h
For S29GLxxxPH: XX19h/19h = Not Factory Locked. XX99h/99h = Factory Locked.
For S29GLxxxPL: XX09h/09h = Not Factory Locked. XX89h/89h = Factory Locked.
Secure Device
Verify
Base + 03h
(SA) + 02h
Sector Protect
Verify
xx01h/01h = Locked, xx00h/00h = Unlocked
Software Functions and Sample Code
Autoselect Entry in System
(LLD Function = lld_AutoselectEntryCmd)
Cycle
Operation
Byte Address
Base + AAAh
Base + 555h
Base + AAAh
Word Address
Data
Unlock Cycle 1
Unlock Cycle 2
Autoselect Command
Write
Write
Write
Base + 555h
Base + 2AAh
Base + 555h
0x00AAh
0x0055h
0x0090h
Autoselect Exit
(LLD Function = lld_AutoselectExitCmd)
Byte
Address
Word
Address
Cycle
Operation
Data
0x00F0h
Autoselect Exit Command
Write
base + XXXh base + XXXh
Note
1. Any offset within the device works.
2. base = base address.
The following is a C source code example of using the autoselect function to read the manufacturer ID. Refer to the Cypress Low
Level Driver User’s Guide (available on www.cypress.com) for general information on Cypress Flash memory software development
guidelines.
/* Here is an example of Autoselect mode (getting manufacturer ID) */
/* Define UINT16 example: typedef unsigned short UINT16; */
UINT16 manuf_id;
/* Auto Select Entry */
*( (UINT16 *)base_addr + 0x555 ) = 0x00AA; /* write unlock cycle 1 */
*( (UINT16 *)base_addr + 0x2AA ) = 0x0055; /* write unlock cycle 2 */
*( (UINT16 *)base_addr + 0x555 ) = 0x0090; /* write autoselect command */
/* multiple reads can be performed after entry */
manuf_id = *( (UINT16 *)base_addr + 0x000 ); /* read manuf. id */
/* Autoselect exit */
*( (UINT16 *)base_addr + 0x000 ) = 0x00F0; /* exit autoselect (write reset command) */
Document Number: 002-00886 Rev. *B
Page 19 of 83