ShiboSoftwareDev/am625sip-linux-board
This code defines the physical footprint and pin layout for an AM625 System-in-Package (SIP) component, detailing pad positions, pin labels, and package outline for hardware integration.
- Version
- 1.0.24
- License
- unset
- Stars
- 0
components/tfp410.tsx
import type { ChipProps } from "@tscircuit/props"
import { Fragment } from "react"
/**
* TI TFP410PAP PanelBus transmitter.
*
* The PAP package is a 10 mm x 10 mm, 64-pin PowerPAD HTQFP with
* 0.5 mm lead pitch. Pin names follow TI SLDS145D, Figure 4-1.
*/
const TFP410_PIN_NAMES = [
"DVDD_1",
"DE",
"VREF",
"HSYNC",
"VSYNC",
"A3_DK3",
"CTL2_A2_DK2",
"CTL1_A1_DK1",
"EDGE_HTPLG",
"PD",
"MSEN_PO1",
"DVDD_12",
"ISEL_RST",
"DSEL_SDA",
"BSEL_SCL",
"DGND_16",
"PGND",
"PVDD",
"TFADJ",
"TGND_20",
"TXC_N",
"TXC_P",
"TVDD_23",
"TX0_N",
"TX0_P",
"TGND_26",
"TX1_N",
"TX1_P",
"TVDD_29",
"TX2_N",
"TX2_P",
"TGND_32",
"DVDD_33",
"RESERVED",
"DKEN",
"DATA23",
"DATA22",
"DATA21",
"DATA20",
"DATA19",
"DATA18",
"DATA17",
"DATA16",
"DATA15",
"DATA14",
"DATA13",
"DATA12",
"DGND_48",
"NC",
"DATA11",
"DATA10",
"DATA9",
"DATA8",
"DATA7",
"DATA6",
"IDCK_N",
"IDCK_P",
"DATA5",
"DATA4",
"DATA3",
"DATA2",
"DATA1",
"DATA0",
"DGND_64",
"THERMAL_PAD",
] as const
const TFP410_PIN_LABELS: Record<string, readonly string[]> = Object.fromEntries(
TFP410_PIN_NAMES.map((name, index) => [
`pin${index + 1}`,
[name, `${index + 1}_${name}`],
]),
)
const LEAD_PITCH_MM = 0.5
const FIRST_LEAD_OFFSET_MM = -3.75
const LEAD_CENTER_MM = 5.7
const qfpPadPosition = (pinNumber: number) => {
if (pinNumber <= 16) {
return {
x: FIRST_LEAD_OFFSET_MM + (pinNumber - 1) * LEAD_PITCH_MM,
y: -LEAD_CENTER_MM,
width: 0.3,
height: 1.5,
}
}
if (pinNumber <= 32) {
return {
x: LEAD_CENTER_MM,
y: FIRST_LEAD_OFFSET_MM + (pinNumber - 17) * LEAD_PITCH_MM,
width: 1.5,
height: 0.3,
}
}
if (pinNumber <= 48) {
return {
x: 3.75 - (pinNumber - 33) * LEAD_PITCH_MM,
y: LEAD_CENTER_MM,
width: 0.3,
height: 1.5,
}
}
return {
x: -LEAD_CENTER_MM,
y: 3.75 - (pinNumber - 49) * LEAD_PITCH_MM,
width: 1.5,
height: 0.3,
}
}
export const Tfp410 = (props: ChipProps) => (
<chip
{...props}
manufacturerPartNumber="TFP410PAP"
pinLabels={TFP410_PIN_LABELS}
footprint={
<footprint>
{Array.from({ length: 64 }, (_, index) => {
const pinNumber = index + 1
const pad = qfpPadPosition(pinNumber)
return (
<Fragment key={`tfp410-pad-${pinNumber}`}>
<smtpad
portHints={[`pin${pinNumber}`]}
pcbX={pad.x}
pcbY={pad.y}
width={pad.width}
height={pad.height}
shape="rect"
/>
</Fragment>
)
})}
<smtpad
portHints={["pin65"]}
pcbX={0}
pcbY={0}
width="5.9mm"
height="5.9mm"
shape="rect"
/>
<silkscreenpath
route={[
{ x: -5.1, y: -5.1 },
{ x: 5.1, y: -5.1 },
{ x: 5.1, y: 5.1 },
{ x: -5.1, y: 5.1 },
{ x: -5.1, y: -5.1 },
]}
/>
<silkscreencircle pcbX={-4.45} pcbY={-4.45} radius="0.22mm" />
<courtyardrect width="13.4mm" height="13.4mm" />
</footprint>
}
/>
)