Lib-electronic-components memory

Use when working with memory components - Flash, EEPROM, SRAM, DRAM. Includes adding patterns, parsing memory MPNs, extracting capacity, interface type, and speed information.

install
source · Clone the upstream repo
git clone https://github.com/Cantara/lib-electronic-components
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Cantara/lib-electronic-components "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/memory" ~/.claude/skills/cantara-lib-electronic-components-memory && rm -rf "$T"
manifest: .claude/skills/memory/SKILL.md
source content

Memory Component Skill

Guidance for working with memory components in the lib-electronic-components library.

Supported Manufacturers & Patterns

ManufacturerHandlerMPN PatternsExample
Winbond
WinbondHandler
W25Q#
,
W25X#
,
W##
W25Q128JVSIQ
Micron
MicronHandler
MT#
,
N25Q#
,
M25P#
MT25QL128ABA
ISSI
ISSIHandler
IS#
,
IS25LP#
,
IS25WP#
IS25LP128F
Microchip
MicrochipHandler
AT24C#
,
AT25#
,
SST26#
AT24C256
MacronixVarious
MX25#
MX25L12835F
Cypress/Infineon
CypressHandler
S25FL#
,
FM24#
S25FL128S

ComponentTypes

// Base types
ComponentType.MEMORY
ComponentType.MEMORY_FLASH
ComponentType.MEMORY_EEPROM

// Manufacturer-specific types
ComponentType.MEMORY_FLASH_WINBOND
ComponentType.MEMORY_EEPROM_WINBOND
ComponentType.MEMORY_MICRON
ComponentType.MEMORY_ISSI
ComponentType.MEMORY_MICROCHIP
ComponentType.MEMORY_ATMEL
ComponentType.MEMORY_INFINEON
ComponentType.MEMORY_NXP
ComponentType.MEMORY_ST
ComponentType.MEMORY_RENESAS
ComponentType.MEMORY_MAXIM

Flash Memory

Winbond W25Q Series (SPI NOR Flash)

W25Q 128 JV SIQ
│    │   │  │
│    │   │  └── Package (SIQ=SOIC-8 150mil)
│    │   └───── Voltage/Grade (JV=3.3V, FV=1.8V)
│    └───────── Density (128=128Mbit)
└────────────── Series

Common Densities

CodeSize
3232Mbit (4MB)
6464Mbit (8MB)
128128Mbit (16MB)
256256Mbit (32MB)
512512Mbit (64MB)

Interfaces

TypeDescriptionSpeed
SPISerial Peripheral Interface50-133MHz
QSPIQuad SPI104-133MHz
DSPIDual SPI80-104MHz
ParallelParallel interfaceVarious

EEPROM

Microchip AT24C Series (I2C EEPROM)

AT24C 256 C
│     │   │
│     │   └── Temperature range (C=Commercial)
│     └────── Density (256=256Kbit)
└──────────── Series (I2C EEPROM)

Common EEPROM Series

SeriesInterfaceOrganization
AT24CI2Cx8
AT25SPIx8
93CMicrowirex8/x16

SRAM

Patterns

ManufacturerPatternExample
ISSI
IS61#
,
IS62#
IS62WV12816BLL
Cypress
CY62#
,
CY7C#
CY62256NLL

Adding New Memory Patterns

  1. In the manufacturer handler's
    initializePatterns()
    :
registry.addPattern(ComponentType.MEMORY, "^NEWMEM[0-9].*");
registry.addPattern(ComponentType.MEMORY_FLASH, "^NEWMEM[0-9].*");
registry.addPattern(ComponentType.MEMORY_MANUFACTURER, "^NEWMEM[0-9].*");
  1. Add to
    getSupportedTypes()
    :
types.add(ComponentType.MEMORY);
types.add(ComponentType.MEMORY_FLASH);
types.add(ComponentType.MEMORY_MANUFACTURER);

Similarity Calculation

MemorySimilarityCalculator
compares:

  • Memory type (Flash, EEPROM, SRAM)
  • Density/capacity
  • Interface (SPI, I2C, parallel)
  • Voltage range
  • Speed grade
  • Package

Package Codes

CodePackage
SIQSOIC-8 150mil
SIGSOIC-8 208mil
DIQDFN-8
CIQWSON-8
BIQBGA
PIQPDIP-8

Memory Type Detection

The library can detect memory types from MPN patterns:

// Detect flash memory
ComponentType type = ComponentType.fromMPN("W25Q128JVSIQ");
// Returns MEMORY_FLASH_WINBOND

// Detect EEPROM
ComponentType type = ComponentType.fromMPN("AT24C256");
// Returns MEMORY_EEPROM or MEMORY_ATMEL

Learnings & Quirks

<!-- Record component-specific discoveries, edge cases, and quirks here -->