pub struct JedecParams {Show 24 fields
pub block_erase_size: BlockEraseSize,
pub write_granularity: WriteGranularity,
pub write_en_required: bool,
pub write_en_opcode: u8,
pub erase_opcode_4kib: u8,
pub support_fast_read_112: bool,
pub address_modes: SupportedAddressModes,
pub support_double_rate_clocking: bool,
pub support_fast_read_122: bool,
pub support_fast_read_144: bool,
pub support_fast_read_114: bool,
pub support_fast_read_222: bool,
pub support_fast_read_444: bool,
pub density: u32,
pub param_112: FastReadParam,
pub param_122: FastReadParam,
pub param_114: FastReadParam,
pub param_144: FastReadParam,
pub param_222: FastReadParam,
pub param_444: FastReadParam,
pub erase: [SectorErase; 4],
pub rev_b: Option<JedecParamsRevB>,
pub rev_d: Option<JedecParamsRevD>,
pub rev_f: Option<JedecParamsRevF>,
}
Expand description
The JEDEC parameter table is documented in JESD216 “Serial Flash Discoverable Parameters”. This structure represents the parameter table after decoding it from the packed bitfield representation documented by JEDEC.
I have access to the following specs:
-
JESD216 dated April 2011 (Flash parameters version 1.0).
-
JESD216B dated May 2014 (Flash parameters version 1.6).
-
JESD216D dated August 2019 (Flash parameters version 1.7, unchanged since rev C).
-
JESD216F dated February 2022 (Flash parameters version 1.7, unchanged since rev D).
-
Version 1.0 defines a table of 9 “dwords”. I’m considering this to be the minimum required parameter table.
-
Rev B, version 1.6 extends the table to 16 “dwords”, including information about erase timing, powerdown and alternate mode requirements.
-
Rev D, version 1.7 extends the table to 20 “dwords”, including information about eight-lane SPI modes.
-
Rev F, version 1.7 extends the table to 23 “dwords”, including information about dual data rate operations.
Fields§
§block_erase_size: BlockEraseSize
Erase granularity.
write_granularity: WriteGranularity
Write granularity / buffer size.
write_en_required: bool
WREN instruction required for writing to volatile status register.
write_en_opcode: u8
Write enable opocde (this is a single bit in the jedec table; expanded to the actual opcode here).
erase_opcode_4kib: u8
Erase opcode for 4KiB sector erase.
support_fast_read_112: bool
Support Fast Read 1-1-2.
address_modes: SupportedAddressModes
The address modes supported by the device.
support_double_rate_clocking: bool
Device supports double rate clocking.
support_fast_read_122: bool
Other styles of Fast Read. The numerical designator refers to the instruction transfer mode, the address transfer mode and data transfer mode. ie: 1-2-2 means single bit mode for the opcode, dual mode for the address and dual mode for the data phase.
support_fast_read_144: bool
§support_fast_read_114: bool
§support_fast_read_222: bool
§support_fast_read_444: bool
§density: u32
The density of the part. In the jedec table, this is expressed in bits, but it is converted to bytes here.
param_112: FastReadParam
Parameters for the various supported FastRead modes.
param_122: FastReadParam
§param_114: FastReadParam
§param_144: FastReadParam
§param_222: FastReadParam
§param_444: FastReadParam
§erase: [SectorErase; 4]
Erase sector sizes. It is common for devices to support a 4KiB erase size, a 32KiB erase size and a 64KiB erase size.
rev_b: Option<JedecParamsRevB>
§rev_d: Option<JedecParamsRevD>
§rev_f: Option<JedecParamsRevF>