JEDEC Flash Commands: What They Are & Why They Matter in Embedded Systems

When working with Flash memory in embedded systems, consistency and compatibility are crucial. That’s where JEDEC steps in. In addition to standardizing DRAM and packaging, JEDEC also defines the command sets for NOR and NAND Flash memory devices, ensuring seamless operation across devices from different manufacturers.

πŸ’Ύ What Are JEDEC Flash Memory Commands?

JEDEC Flash memory commands are standardized operation codes (opcodes) used to read, write, and erase data from Flash memory devices. These commands are typically sent over SPI, QSPI, or parallel interfaces, depending on the Flash type.

By following JEDEC-defined command sets, embedded developers can:

  • Interact with Flash devices from various vendors using the same code base
  • Reduce firmware complexity
  • Improve interoperability and maintenance.

 

Command Opcode (Hex) Description

Read Operations

Read Data 0x03 Standard read command using single SPI line.
Fast Read 0x0B Fast read using single SPI line and dummy cycles.
Dual Output Fast Read 0x3B Data output on two I/O lines (DQ0, DQ1).
Dual I/O Fast Read 0xBB Address and data both on dual lines.
Quad Output Fast Read 0x6B Data output on four I/O lines (DQ0–DQ3).
Quad I/O Fast Read 0xEB Address and data both on quad lines.
Read Unique ID 0x4B Reads unique 64-bit device ID.
Read Manufacturer/Device ID 0x90 Legacy command to read manufacturer and device ID.
Read JEDEC ID 0x9F Reads manufacturer ID, memory type, and capacity.

Write Operations

Page Program 0x02 Programs up to a full page (usually 256 bytes).
Quad Page Program 0x32 Page program using quad I/O lines.

Erase Operations

Sector Erase (usually 4KB) 0x20 Erases a 4KB sector.
Block Erase (32KB) 0x52 Erases a 32KB block.
Block Erase (64KB) 0xD8 Erases a 64KB block.
Chip Erase 0xC7 or 0x60 Erases the entire chip.

Register & Status Commands

Read Status Register-1 0x05 Reads status register-1 (WIP, WEL, etc.).
Read Status Register-2 0x35 Reads status register-2 (QE, etc.).
Read Status Register-3 0x15 Reads status register-3.
Write Status Register 0x01 Writes to status registers.
Write Enable 0x06 Enables writing to the flash memory.
Write Disable 0x04 Disables write access to the memory.

Power & Protection

Deep Power Down 0xB9 Reduces power consumption drastically.
Release from Deep Power Down 0xAB Wakes device from power-down mode.
Enable Reset 0x66 Prepares device to accept reset command.
Reset Device 0x99 Performs a software reset of the flash device.
Global Block Protection Unlock 0x98 Disables all block protections (some devices).

Advanced / Optional Commands

Toggle Bit 0xA0 Used in some devices for toggling during self-test or status check.
Set Burst Length 0xC0 Configures burst mode length in some memory devices.
Read SFDP 0x5A Reads Serial Flash Discoverable Parameters for standardized configuration.
Enter 4-Byte Address Mode 0xB7 Enables 4-byte addressing mode for large flash.
Exit 4-Byte Address Mode 0xE9 Disables 4-byte addressing mode.
Bank Register Access 0x16 For bank addressing in memory larger than 128Mb.

 

βš™οΈ How These Commands Work in Practice:

Flash memory devices are typically accessed through SPI or QSPI interfaces. The microcontroller communicates with the Flash chip by sending specific commands as part of the protocol. Here’s a simplified example of how a common read operation might look in practice:

  • Send 0x9F (JEDEC ID Command) – Reads the manufacturer ID, memory type, and capacity of the Flash device.
  • Send 0x04 (Write Disable) – Optionally used to ensure that write operations are disabled before a read.
  • Send 0x05 (Read Status Register) – Optionally used to check the device status, e.g., whether it’s busy with an internal operation.
  • Send 0x06 (Write Enable) – Required before issuing any write, erase, or similar modifying commands. Not necessary for a basic read operation.
  • Send 0x03 (Read Data) – Followed by a 3-byte or 4-byte address, depending on the addressing mode.
  • Receive Data – The Flash responds with the requested data starting from the specified address.

 

πŸ“¦ Why JEDEC Flash Commands Matter:

βœ… Vendor Independence: You can swap Flash chips (e.g., from Winbond to Micron) without changing your firmware.

πŸ”„ Consistency Across Platforms: Microcontrollers like STM32, NXP, or Renesas can all use the same commands to communicate.

🧩 Easier Integration: These standard commands make it easier to write reusable drivers and middleware.

 

Recommended Articles for you: