NXP Semiconductors MPN encoding patterns, suffix decoding, and handler guidance. Use when working with LPC, Kinetis, i.MX, S32K, MOSFETs, or transistors.
BC847[GAIN][PACKAGE_SUFFIX]
| | |
| | +-- Package: (none)=SOT-23, W=SOT-323, MB=DFN
| +-- Gain group: A, B, C (hFE ranges)
+-- BC847 = NPN (BC857 = PNP complement)
Transistor Gain Groups
Suffix
hFE Range
A
110-220
B
200-450
C
420-800
Package Variants
Suffix
Package
Size
(none)
SOT-23
TO-236AB
W
SOT-323
SC-70
MB
DFN
SOT883B
PN Series (2N Equivalents)
NXP Part
Equivalent
Type
PN2222
2N2222
NPN
PN2907
2N2907
PNP
PN3904
2N3904
NPN
PN3906
2N3906
PNP
PN4401
2N4401
NPN
PN4403
2N4403
PNP
Temperature Grades
Grade
Range
Suffix
Commercial
0C to +70C
(none) or C
Industrial
-40C to +85C
I
Extended
-40C to +105C
E
Automotive
-40C to +125C
A
Handler Implementation Notes
Package Code Extraction
// LPC: Extract from FBD, FET, FHN, JBD, UK patterns
if (upperMpn.startsWith("LPC")) {
// LPC1768FBD100 -> FBD100
// Find where letters after digits start
int numEnd = findLastDigit(mpn, "LPC".length()) + 1;
if (numEnd < mpn.length()) {
return mpn.substring(numEnd);
}
}
// Kinetis: Package is between V and speed digit
// MK64FN1M0VLL12 -> VLL (LQFP100)
if (upperMpn.startsWith("MK")) {
int vPos = upperMpn.indexOf('V');
if (vPos > 0) {
// Extract 3-letter package code after V
return upperMpn.substring(vPos, Math.min(vPos + 4, upperMpn.length()));
}
}
// i.MX: Complex - after variant letters
// MCIMX6Q5EYM10AC -> M (BGA)
Series Extraction
// LPC: Family is LPC + series digits
// LPC1768FBD100 -> LPC1768
// LPC55S69JBD100 -> LPC55S69
// Kinetis: MK + family + subseries
// MK64FN1M0VLL12 -> MK64
// MKL25Z128VLK4 -> MKL25
// S32K: Full model number
// S32K144 -> S32K144
Known Issues in Current Handler
HashSet usage: Line 80 uses new HashSet<>() - should use Set.of() for immutability
Op-amp attribution error: LM358, LM324, LM741 are Texas Instruments parts, NOT NXP
QorIQ pattern too broad: ^P[0-9]+.* may match unrelated parts
Missing patterns: PMV and BSS MOSFETs in matches() but not initializePatterns()
Package extraction incomplete: Only handles LPC and MCIMX, missing Kinetis, S32K, MOSFETs
Pattern Recommendations
// LPC - more specific
"^LPC[0-9]{3,4}[A-Z]?[A-Z]{2,3}[0-9]{2,3}.*"
// Kinetis K series
"^MK[0-9]{2}[A-Z]{0,2}[0-9]+V[A-Z]{2,3}[0-9]+$"
// Kinetis L series
"^MKL[0-9]{2}[A-Z][0-9]+V[A-Z]{2,3}[0-9]+$"
// S32K with optional suffix
"^S32K[0-9]{3}[A-Z]?.*"
// i.MX - starts with MCIMX or MIMX
"^(?:MC)?IMX[0-9][A-Z0-9]+.*"