AgentSkillsCN

ti

德州仪器 MPN 编码规则、后缀解码及处理指南。适用于与 TI 元件或 TIHandler 配合使用时。

SKILL.md
--- frontmatter
name: ti
description: Texas Instruments MPN encoding patterns, suffix decoding, and handler guidance. Use when working with TI components or TIHandler.

Texas Instruments (TI) Manufacturer Skill

MPN Structure

TI MPNs follow this general structure:

code
[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

code
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

CodePackagePin CountNotes
NDIP8-40Plastic DIP
PDIP8-40Plastic DIP (alternate)
TTO-2203-5Power package
T3TO-22033-pin TO-220
KTO-32-3Metal can power
HTO-398Metal can

Surface Mount - Small Signal

CodePackagePitchNotes
DSOIC1.27mm8-16 pins
DWSOIC-Wide1.27mmWide body
PWTSSOP0.65mmThin profile
DGKMSOP/VSSOP0.5mmMini SOIC
DBVSOT-230.95mm5-6 pins
DRLSOT-5530.5mmVery small
DRVSON0.5mmQFN variant

Surface Mount - Power

CodePackageNotes
KCTO-252 (DPAK)Medium power SMD
KVTO-252Variant
MPSOT-2234-pin power
DTSOT-223Alternate code

Family Prefixes

Analog/Linear (LM, TL, NE)

PrefixCategoryExamples
LMGeneral analogLM358 (op-amp), LM7805 (regulator), LM317 (adj reg)
TLTI LinearTL072 (JFET op-amp), TL431 (reference)
NESignetics legacyNE5532 (low-noise op-amp)
UAOriginal TIUA7805 (equivalent to LM7805)

Power Management (TPS, TLV, LP)

PrefixCategoryExamples
TPSPower supplyTPS63020 (buck-boost), TPS7350 (LDO)
TLVLow voltageTLV431 (low-V reference)
LPLow powerLP2950 (LDO)

Logic & Interface (SN, CD)

PrefixCategoryExamples
SNTI logicSN74HC595 (shift register)
CDCMOS logicCD4017 (decade counter)

Microcontrollers (MSP, CC)

PrefixCategoryExamples
MSP430Ultra-low-power MCUMSP430G2553
CCWireless MCUCC2541 (BLE), CC3200 (WiFi)

Temperature Grades

SuffixRangeApplication
(none)0°C to +70°CCommercial
I-40°C to +85°CIndustrial
A-40°C to +85°CIndustrial (alternate)
Q-40°C to +125°CAutomotive
M-55°C to +125°CMilitary

Critical Pattern Conflicts

LM35 vs LM358

LM35 = Temperature sensor (letter A-D after "35") LM358 = Dual op-amp (digit 8 after "35")

code
LM35DZ   → Temperature sensor (D = grade, Z = TO-92 package)
LM358N   → Dual op-amp (8 = part of series, N = DIP package)

Handler Pattern:

java
// 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

code
LM7805CT  → +5V regulator, TO-220
LM7905CT  → -5V regulator, TO-220

Common Series Reference

Op-Amps

SeriesTypeEquivalent
LM358Dual, general purposeMC1458, RC4558
LM324Quad, general purposeMC3403
TL072Dual JFET, low noiseTL082
TL074Quad JFETTL084
NE5532Dual, low noiseSA5532
LM311ComparatorLM211

Voltage Regulators

SeriesTypeVoltageEquivalent
LM7805Fixed positive+5VMC7805, UA7805
LM7812Fixed positive+12VMC7812
LM7905Fixed negative-5VMC7905
LM317Adjustable positive1.25-37VLM350, LM338
LM337Adjustable negative-1.25 to -37V-

Temperature Sensors

SeriesTypeOutput
LM35Precision analog10mV/°C
TMP36Precision analog10mV/°C + 500mV offset

Handler Implementation Notes

Package Code Extraction

java
// 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):

java
// 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

java
// 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)
<!-- Add new learnings above this line -->