Claude-skill-registry artery

Artery Technology MPN encoding patterns, suffix decoding, and handler guidance. Use when working with Artery AT32 MCUs (STM32-compatible ARM Cortex-M4) or ArteryHandler.

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

Artery Technology Manufacturer Skill

MPN Structure

Artery MCUs follow a structure similar to STM32:

AT32[FAMILY][SERIES][VARIANT][PIN][FLASH][PKG][TEMP]
│      │       │       │       │     │      │     │
│      │       │       │       │     │      │     └── Temperature (6/7)
│      │       │       │       │     │      └── Package (T=LQFP, U=QFN, H=BGA)
│      │       │       │       │     └── Flash size (4=16KB...M=4096KB)
│      │       │       │       └── Pin code (C=48, R=64, V=100, Z=144)
│      │       │       └── Optional variant (A, etc.)
│      │       └── Series number (403, 413, 415, 421, 435, etc.)
│      └── Family (F=MCU, WB=Wireless)
└── AT32 prefix

Example Decoding

AT32F403AVCT7
│   │  │ ││││
│   │  │ │││└── Temp 7 (industrial extended, -40 to +105C)
│   │  │ ││└── Package T (LQFP)
│   │  │ │└── Flash C (256KB)
│   │  │ └── Pin V (100-pin)
│   │  └── Variant A
│   └── Series 403 (high performance)
└── F = MCU family

AT32WB415CCU6
│     │  │││
│     │  ││└── Temp 6 (industrial, -40 to +85C)
│     │  │└── Package U (QFN)
│     │  └── Flash C (256KB)
│     └── Pin C (48-pin)
└── WB415 = Wireless (Bluetooth LE)

Package Codes

Package Type (2nd from last character)

CodePackage
TLQFP
UQFN
HBGA

Pin Count (4th from last character)

CodePin Count
K32
T36
C48
R64
V100
Z144
I176

Flash Size Encoding (3rd from last character)

CodeFlash Size
416KB
632KB
864KB
B128KB
C256KB
D384KB
E512KB
G1024KB
M4096KB

Temperature Grades (last character)

CodeRangeDescription
6-40 to +85CIndustrial
7-40 to +105CIndustrial Extended

Product Series

High Performance (AT32F403, AT32F407)

SeriesCoreClockFeatures
AT32F403Cortex-M4240MHzHigh performance, up to 1MB Flash
AT32F403ACortex-M4240MHzEnhanced AT32F403
AT32F407Cortex-M4240MHzEthernet + CAN

Mainstream (AT32F413, AT32F415)

SeriesCoreClockFeatures
AT32F413Cortex-M4200MHzMainstream, cost-effective
AT32F415Cortex-M4150MHzUSB OTG support

Value Line (AT32F421, AT32F423, AT32F425)

SeriesCoreClockFeatures
AT32F421Cortex-M4120MHzEntry-level
AT32F423Cortex-M4150MHzEnhanced value
AT32F425Cortex-M496MHzUSB device

High-Performance Plus (AT32F435, AT32F437)

SeriesCoreClockFeatures
AT32F435Cortex-M4288MHzHigh-perf, up to 4MB Flash
AT32F437Cortex-M4288MHzHigh-perf + Ethernet

Wireless (AT32WB415)

SeriesCoreClockFeatures
AT32WB415Cortex-M4150MHzBluetooth LE 5.0

Handler Implementation Notes

Package Code Extraction

// Package type is 2nd from last character
// AT32F403AVCT7 -> T = LQFP
char packageChar = upperMpn.charAt(upperMpn.length() - 2);
String packageType = MCU_PACKAGE_CODES.get(packageChar);

// Combine with pin count for full package name
int pinCount = extractMCUPinCount(upperMpn);
return packageType + pinCount;  // e.g., "LQFP100"

Pin Count Extraction

// Pin code is 4th from last character
// AT32F403AVCT7 -> V = 100 pins
char pinCode = upperMpn.charAt(upperMpn.length() - 4);
Integer pinCount = MCU_PIN_COUNTS.get(pinCode);

Flash Size Extraction

// Flash code is 3rd from last character
// AT32F403AVCT7 -> C = 256KB
char flashCode = upperMpn.charAt(upperMpn.length() - 3);
Integer flashSize = MCU_FLASH_SIZES.get(flashCode);

Series Extraction

// AT32WB must be checked before AT32F
if (upperMpn.startsWith("AT32WB415")) return "AT32WB415";

// Standard series extraction
if (upperMpn.startsWith("AT32F403")) return "AT32F403";
if (upperMpn.startsWith("AT32F407")) return "AT32F407";
// etc.

Official Replacement Logic

// Same series AND same pin count = valid replacement
// Flash size, package type, and temperature can differ

String series1 = extractSeries(mpn1);
String series2 = extractSeries(mpn2);
if (!series1.equals(series2)) return false;

int pins1 = extractMCUPinCount(mpn1);
int pins2 = extractMCUPinCount(mpn2);
return pins1 == pins2;

Related Files

  • Handler:
    manufacturers/ArteryHandler.java
  • Component types:
    MICROCONTROLLER
    ,
    IC

STM32 Compatibility

Artery AT32 MCUs are designed as enhanced STM32-compatible alternatives:

AT32 SeriesSTM32 EquivalentAdvantages
AT32F403ASTM32F103Higher clock (240 vs 72MHz)
AT32F407STM32F107Higher clock, more Flash
AT32F413STM32F103Better price/performance
AT32F415STM32F105USB OTG compatible
AT32F421STM32F030Cortex-M4 vs M0
AT32F435/437STM32F4xxUp to 4MB Flash

Important: While register-compatible for most peripherals, always verify critical functionality when migrating from STM32.


Variant Suffixes

Some series have variant letters after the series number:

VariantMeaning
AEnhanced version (e.g., AT32F403A)
(none)Standard version

Learnings & Edge Cases

  • Position-based extraction: Package at -2, flash at -3, pin at -4 from end
  • 4MB Flash: AT32F435/437 support M=4096KB, larger than most STM32
  • AT32WB prefix: Wireless series uses WB instead of F in family position
  • 240MHz+ clocks: Artery MCUs often have higher clock speeds than equivalent STM32
  • Variant letter optional: AT32F403 and AT32F403A are different series
  • Temperature 7 is extended: Goes to +105C vs standard industrial +85C
  • STM32 migration: Pin-compatible but verify peripheral registers for critical functions
<!-- Add new learnings above this line -->