Lib-electronic-components xmc

XMC (Wuhan Xinxin Semiconductor) MPN encoding patterns, suffix decoding, and handler guidance. Use when working with XMC SPI NOR Flash memory components or XMCHandler.

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/manufacturers/xmc" ~/.claude/skills/cantara-lib-electronic-components-xmc && rm -rf "$T"
manifest: .claude/skills/manufacturers/xmc/SKILL.md
source content

XMC (Wuhan Xinxin Semiconductor) Manufacturer Skill

MPN Structure

XMC MPNs follow this general structure:

[PREFIX][DENSITY][PACKAGE]
   |       |        |
   |       |        +-- Package code (A, B, C, D)
   |       +-- Memory density (32, 64, 128, 256, 512)
   +-- Series prefix (XM25QH, XM25QU, XM25LU)

Example Decoding

XM25QH64A
|  |  |||
|  |  ||+-- A = SOIC-8 package
|  |  |+-- 64 = 64 Mbit density
|  |  +-- H = Standard 3.3V series
|  +-- 25Q = SPI Flash family
+-- XM = XMC prefix

XM25QU128B
|  |  | ||
|  |  | |+-- B = SOIC-16 package
|  |  | +-- 128 = 128 Mbit density
|  |  +-- U = 1.8V Low Voltage series
|  +-- 25Q = SPI Flash family
+-- XM = XMC prefix

XM25LU256C
|  |  | ||
|  |  | |+-- C = WSON-8 package
|  |  | +-- 256 = 256 Mbit density
|  |  +-- LU = Ultra Low Voltage series
|  +-- 25 = SPI Flash family
+-- XM = XMC prefix

Series Prefixes

PrefixVoltage RangeDescription
XM25QH2.7V - 3.6VStandard 3.3V SPI NOR Flash
XM25QU1.65V - 2.0V1.8V Low Voltage SPI NOR Flash
XM25LU1.65V - 1.95VUltra Low Voltage SPI NOR Flash

Density Codes

CodeDensitySize
3232 Mbit4 MB
6464 Mbit8 MB
128128 Mbit16 MB
256256 Mbit32 MB
512512 Mbit64 MB

Package Codes

CodePackagePin CountBody Size
ASOIC-88208mil
BSOIC-1616300mil
CWSON-886x5mm
DUSON-882x3mm

Product Families

XM25QH Series - Standard 3.3V SPI NOR Flash

Part NumberDensityVoltageMax SpeedInterface
XM25QH32A32 Mbit2.7V-3.6V104MHzSPI/Dual/Quad
XM25QH64A64 Mbit2.7V-3.6V104MHzSPI/Dual/Quad
XM25QH128A128 Mbit2.7V-3.6V104MHzSPI/Dual/Quad
XM25QH256B256 Mbit2.7V-3.6V104MHzSPI/Dual/Quad
XM25QH512512 Mbit2.7V-3.6V104MHzSPI/Dual/Quad

XM25QU Series - 1.8V Low Voltage SPI NOR Flash

Part NumberDensityVoltageMax SpeedInterface
XM25QU64A64 Mbit1.65V-2.0V104MHzSPI/Dual/Quad
XM25QU128B128 Mbit1.65V-2.0V104MHzSPI/Dual/Quad
XM25QU256C256 Mbit1.65V-2.0V104MHzSPI/Dual/Quad

XM25LU Series - Ultra Low Voltage SPI NOR Flash

Part NumberDensityVoltageMax SpeedApplication
XM25LU128128 Mbit1.65V-1.95V104MHzUltra-low power
XM25LU256256 Mbit1.65V-1.95V104MHzUltra-low power

Handler Implementation Notes

Pattern Matching

// XM25QH series - Standard 3.3V
Pattern XM25QH_PATTERN = Pattern.compile("^XM25QH\\d+[A-Z]*.*", Pattern.CASE_INSENSITIVE);

// XM25QU series - 1.8V Low Voltage
Pattern XM25QU_PATTERN = Pattern.compile("^XM25QU\\d+[A-Z]*.*", Pattern.CASE_INSENSITIVE);

// XM25LU series - Ultra Low Voltage
Pattern XM25LU_PATTERN = Pattern.compile("^XM25LU\\d+[A-Z]*.*", Pattern.CASE_INSENSITIVE);

Package Code Extraction

// XMC format: XM25QHxxxY where Y is the package code
// Extract the letter after density digits
Matcher matcher = DENSITY_PATTERN.matcher(upperMpn);
if (matcher.find()) {
    int densityEnd = matcher.end();
    if (densityEnd < upperMpn.length()) {
        String pkgCode = upperMpn.substring(densityEnd, densityEnd + 1);
        // Map to package: A=SOIC-8, B=SOIC-16, C=WSON-8, D=USON-8
    }
}

Voltage Range Extraction

// Determine operating voltage based on series
switch (series) {
    case "XM25QH" -> "2.7V-3.6V";
    case "XM25QU" -> "1.65V-2.0V";
    case "XM25LU" -> "1.65V-1.95V";
}

Cross-References

XMC Flash is pin-compatible with other SPI NOR Flash manufacturers:

3.3V Standard Series (XM25QH)

XMCWinbondGigaDeviceMacronix
XM25QH64AW25Q64JVGD25Q64CMX25L6433F
XM25QH128AW25Q128JVGD25Q128CMX25L12835F
XM25QH256BW25Q256JVGD25Q256CMX25L25645G

1.8V Low Voltage Series (XM25QU)

XMCWinbondGigaDeviceMacronix
XM25QU64AW25Q64FWGD25LQ64CMX25U6435F
XM25QU128BW25Q128FWGD25LQ128CMX25U12835F

Voltage Selection Guide

ApplicationRecommended SeriesVoltage
Legacy 3.3V systemsXM25QH2.7V-3.6V
Mobile/Battery poweredXM25QU1.65V-2.0V
Ultra-low power IoTXM25LU1.65V-1.95V

Related Files

  • Handler:
    manufacturers/XMCHandler.java
  • Component types:
    MEMORY
    ,
    MEMORY_FLASH
    ,
    IC

Learnings & Edge Cases

  • Series order: Check XM25QH before XM25QU before XM25LU for proper matching
  • Package code position: Single letter immediately after density digits
  • Voltage compatibility: XM25QH (3.3V) and XM25QU (1.8V) are NOT voltage compatible
  • Pin compatibility: All series are pin-compatible with Winbond 25Q series
  • Density encoding: Direct numeric encoding (64=64Mbit, 128=128Mbit, etc.)
  • SOIC-16 for high density: Larger densities (256Mbit+) often use SOIC-16 (package code B)
<!-- Add new learnings above this line -->