Texas Instruments (TI) Manufacturer Skill
MPN Structure
TI MPNs follow this general structure:
[PREFIX][SERIES][VARIANT][PACKAGE][TEMP][QUALIFIER]
│ │ │ │ │ │
│ │ │ │ │ └── Optional: R=Tape/Reel, E=Lead-free
│ │ │ │ └── Temperature: I=Industrial, Q=Automotive, M=Military
│ │ │ └── Package code (see table below)
│ │ └── Variant letter (A, B, C for improved specs)
│ └── Series number (e.g., 358, 7805, 317)
└── Family prefix (LM, TL, TPS, SN, etc.)
Example Decoding
LM358DR
│ │ ││
│ │ │└── R = Tape and Reel
│ │ └── D = SOIC package
│ └── 358 = Dual Op-Amp series
└── LM = Linear/Mixed-signal prefix
TPS63020DSJR
│ │ │ │
│ │ │ └── R = Tape and Reel
│ │ └── DSJ = SON package (3x3mm)
│ └── 63020 = Buck-Boost converter
└── TPS = Power Supply prefix
Package Codes
Through-Hole Packages
| Code |
Package |
Pin Count |
Notes |
| N |
DIP |
8-40 |
Plastic DIP |
| P |
DIP |
8-40 |
Plastic DIP (alternate) |
| T |
TO-220 |
3-5 |
Power package |
| T3 |
TO-220 |
3 |
3-pin TO-220 |
| K |
TO-3 |
2-3 |
Metal can power |
| H |
TO-39 |
8 |
Metal can |
Surface Mount - Small Signal
| Code |
Package |
Pitch |
Notes |
| D |
SOIC |
1.27mm |
8-16 pins |
| DW |
SOIC-Wide |
1.27mm |
Wide body |
| PW |
TSSOP |
0.65mm |
Thin profile |
| DGK |
MSOP/VSSOP |
0.5mm |
Mini SOIC |
| DBV |
SOT-23 |
0.95mm |
5-6 pins |
| DRL |
SOT-553 |
0.5mm |
Very small |
| DRV |
SON |
0.5mm |
QFN variant |
Surface Mount - Power
| Code |
Package |
Notes |
| KC |
TO-252 (DPAK) |
Medium power SMD |
| KV |
TO-252 |
Variant |
| MP |
SOT-223 |
4-pin power |
| DT |
SOT-223 |
Alternate code |
Family Prefixes
Analog/Linear (LM, TL, NE)
| Prefix |
Category |
Examples |
| LM |
General analog |
LM358 (op-amp), LM7805 (regulator), LM317 (adj reg) |
| TL |
TI Linear |
TL072 (JFET op-amp), TL431 (reference) |
| NE |
Signetics legacy |
NE5532 (low-noise op-amp) |
| UA |
Original TI |
UA7805 (equivalent to LM7805) |
Power Management (TPS, TLV, LP)
| Prefix |
Category |
Examples |
| TPS |
Power supply |
TPS63020 (buck-boost), TPS7350 (LDO) |
| TLV |
Low voltage |
TLV431 (low-V reference) |
| LP |
Low power |
LP2950 (LDO) |
Logic & Interface (SN, CD)
| Prefix |
Category |
Examples |
| SN |
TI logic |
SN74HC595 (shift register) |
| CD |
CMOS logic |
CD4017 (decade counter) |
Microcontrollers (MSP, CC)
| Prefix |
Category |
Examples |
| MSP430 |
Ultra-low-power MCU |
MSP430G2553 |
| CC |
Wireless MCU |
CC2541 (BLE), CC3200 (WiFi) |
Temperature Grades
| Suffix |
Range |
Application |
| (none) |
0°C to +70°C |
Commercial |
| I |
-40°C to +85°C |
Industrial |
| A |
-40°C to +85°C |
Industrial (alternate) |
| Q |
-40°C to +125°C |
Automotive |
| M |
-55°C to +125°C |
Military |
Critical Pattern Conflicts
LM35 vs LM358
LM35 = Temperature sensor (letter A-D after "35")
LM358 = Dual op-amp (digit 8 after "35")
LM35DZ → Temperature sensor (D = grade, Z = TO-92 package)
LM358N → Dual op-amp (8 = part of series, N = DIP package)
Handler Pattern:
// LM35 sensors: letter A-D immediately after "35"
"^LM35[A-D][A-Z0-9-]*$"
// LM358 op-amps: digit after "35"
"^LM358[A-Z0-9]*(?:N|D|P|DG|PW)?$"
78xx vs 79xx Regulators
78xx = Positive voltage regulator
79xx = Negative voltage regulator
LM7805CT → +5V regulator, TO-220
LM7905CT → -5V regulator, TO-220
Common Series Reference
Op-Amps
| Series |
Type |
Equivalent |
| LM358 |
Dual, general purpose |
MC1458, RC4558 |
| LM324 |
Quad, general purpose |
MC3403 |
| TL072 |
Dual JFET, low noise |
TL082 |
| TL074 |
Quad JFET |
TL084 |
| NE5532 |
Dual, low noise |
SA5532 |
| LM311 |
Comparator |
LM211 |
Voltage Regulators
| Series |
Type |
Voltage |
Equivalent |
| LM7805 |
Fixed positive |
+5V |
MC7805, UA7805 |
| LM7812 |
Fixed positive |
+12V |
MC7812 |
| LM7905 |
Fixed negative |
-5V |
MC7905 |
| LM317 |
Adjustable positive |
1.25-37V |
LM350, LM338 |
| LM337 |
Adjustable negative |
-1.25 to -37V |
- |
Temperature Sensors
| Series |
Type |
Output |
| LM35 |
Precision analog |
10mV/°C |
| TMP36 |
Precision analog |
10mV/°C + 500mV offset |
Handler Implementation Notes
Package Code Extraction
// TI package codes come AFTER the base part number
// Example: LM358D → base="LM358", package="D"
// For voltage regulators, package often follows voltage
// Example: LM7805CT → base="LM7805", package="CT" (TO-220)
// CRITICAL: Check longer suffixes BEFORE shorter ones!
// "LM7805DT".endsWith("T") is TRUE, but DT=SOT-223, not TO-220
if (suffix.endsWith("CT")) return "TO-220"; // 2-char first
if (suffix.endsWith("DT")) return "SOT-223"; // 2-char first
if (suffix.endsWith("MP")) return "SOT-223"; // 2-char first
if (suffix.endsWith("KC")) return "TO-252"; // 2-char first
if (suffix.endsWith("T")) return "TO-220"; // 1-char LAST
// Same for SOIC vs MSOP vs TSSOP
if (suffix.startsWith("DGK")) return "MSOP"; // 3-char first
if (suffix.startsWith("PW")) return "TSSOP"; // 2-char
if (suffix.startsWith("D")) return "SOIC"; // 1-char LAST
Bug Example (Fixed in PR #78):
// WRONG - "DT" ends with "T" so this returns TO-220 incorrectly
if (upperMpn.endsWith("T")) return "TO-220"; // Matches first!
if (upperMpn.endsWith("DT")) return "SOT-223"; // Never reached
// CORRECT - Check longer suffixes first
if (upperMpn.endsWith("DT")) return "SOT-223"; // Matches correctly
if (upperMpn.endsWith("T")) return "TO-220"; // Only bare "T"
Series Extraction
// Extract base series before package/temperature suffix
// LM358APWRQ1 → LM358 (ignore A=variant, PW=package, R=tape, Q1=automotive)
// Voltage regulators include voltage in series
// LM7805 → full series is "LM7805" not just "LM78"
Related Files
- Handler:
manufacturers/TIHandler.java
- Component types:
OPAMP_TI, VOLTAGE_REGULATOR_LINEAR_TI, VOLTAGE_REGULATOR_SWITCHING_TI, TEMPERATURE_SENSOR_TI, LED_TI
- Package registry:
PackageCodeRegistry.java (standard codes)
Learnings & Edge Cases
- LM317 vs LM350 vs LM338: Same adjustable regulator family, different current ratings (1.5A/3A/5A)
- UA prefix: Original TI designation, functionally equivalent to LM (UA7805 = LM7805)
- Automotive suffix Q1/Q: Indicates AEC-Q100 qualified for automotive use
- Green/lead-free: Suffix "G" or "E" sometimes indicates RoHS compliance
- Suffix ordering bug (PR #78): When using
endsWith() for package detection, ALWAYS check longer suffixes first. "DT" ends with "T", so checking "T" first causes wrong results.
- TIHandlerTest location: Tests must be in
handlers package, NOT manufacturers package (causes classpath shadowing)
- Handler initialization: Use
MPNUtils.getManufacturerHandler("LM358") in tests, not new TIHandler() (causes circular init)