0hmX/am3352-zcz-footprint
This code defines the physical footprint and pin layout for an 18x18 ball grid array (BGA) package of a Texas Instruments AM3352 microprocessor, including pad positions and outline drawing commands for PCB design.
- Version
- 1.0.2
- License
- unset
- Stars
- 0
index.tsx
PCB
Schematic
import { Fragment } from "react"
/** TI ZCZ0324A, top view: A1 upper left, numbers right, letters down.
* Source: https://www.ti.com/lit/ds/symlink/am3352.pdf
* Package outline / example board layout: PDF pages 260–261.
* 15 × 15 mm body; 18 × 18 balls; 0.8 mm pitch; Ø0.40 mm NSMD lands.
*/
const rows = ["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "T", "U", "V"] as const
type Column = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18
export type AM3352Ball = `${typeof rows[number]}${Column}`
// Preserve the import's numeric pin convention: 1=A1, 2=B1, 19=A2.
// Numeric pins are tscircuit identifiers; the package uses ball names.
export const am3352Balls = Array.from({ length: 324 }, (_, index) => {
const row = index % 18
const column = Math.floor(index / 18)
return {
pin: `pin${index + 1}` as `pin${number}`,
ball: `${rows[row]}${column + 1}` as AM3352Ball,
x: Number(((column - 8.5) * 0.8).toFixed(3)),
y: Number(((8.5 - row) * 0.8).toFixed(3)),
}
})
export const am3352BallLabels = Object.fromEntries(
am3352Balls.map(({ pin, ball }) => [pin, [ball]]),
) as Record<`pin${number}`, [AM3352Ball]>
export function AM3352ZCZFootprint() {
return (
<footprint>
{am3352Balls.map(({ pin, ball, x, y }) => (
<Fragment key={ball}>
<smtpad
portHints={[pin, ball]}
pcbX={x}
pcbY={y}
layer="top"
shape="circle"
radius={0.2}
solderMaskMargin={0.05}
solderPasteMargin={0}
/>
</Fragment>
))}
{/* Nominal body outline, chamfer identifies A1. */}
<fabricationnotepath strokeWidth={0.1} route={[
{ x: -6.7, y: 7.5 }, { x: 7.5, y: 7.5 },
{ x: 7.5, y: -7.5 }, { x: -7.5, y: -7.5 },
{ x: -7.5, y: 6.7 }, { x: -6.7, y: 7.5 },
]} />
<silkscreenpath strokeWidth={0.15} route={[
{ x: -6.85, y: 7.65 }, { x: 7.65, y: 7.65 },
{ x: 7.65, y: -7.65 }, { x: -7.65, y: -7.65 },
{ x: -7.65, y: 6.85 }, { x: -6.85, y: 7.65 },
]} />
{/* 0.25 mm clearance from the maximum 15.1 mm body. */}
<courtyardoutline outline={[
{ x: -7.8, y: 7.8 }, { x: 7.8, y: 7.8 },
{ x: 7.8, y: -7.8 }, { x: -7.8, y: -7.8 },
{ x: -7.8, y: 7.8 },
]} />
</footprint>
)
}
export default AM3352ZCZFootprint