runpatrick/sa-sim-pcb

This code defines PCB footprints for various electronic modules, including BG95 cellular modem, BNO086 sensor, BQ25180 battery charger, and BQ27220 power management IC, detailing their physical pad layouts and key external features.

Version
1.0.6
License
unset
Stars
0

footprints/nrf52840.tsx

// nRF52840 QFN73 7×7mm 0.5mm pitch — 72 perimeter pads + 1 center thermal EP
// Pin 1 = bottom-left corner, CCW numbering (IPC convention)
// Side distribution: 20-bottom, 16-right, 20-top, 16-left = 72 + EP(73)
// Pad lengths: 0.4mm (perpendicular to edge) × 0.25mm (along edge)

export const nrf52840Footprint = () => (
  <footprint>
    {/* BOTTOM row pins 1-20 (left → right), y = +3.7mm (south edge) */}
    {Array.from({ length: 20 }, (_, i) => (
      <smtpad
        portHints={[String(i + 1)]}
        shape="rect"
        width="0.25mm"
        height="0.4mm"
        pcbX={`${-4.75 + i * 0.5}mm`}
        pcbY="3.7mm"
        layer="top"
      />
    ))}

    {/* RIGHT column pins 21-36 (bottom → top), x = +3.7mm */}
    {Array.from({ length: 16 }, (_, i) => (
      <smtpad
        portHints={[String(i + 21)]}
        shape="rect"
        width="0.4mm"
        height="0.25mm"
        pcbX="3.7mm"
        pcbY={`${3.25 - i * 0.5}mm`}
        layer="top"
      />
    ))}

    {/* TOP row pins 37-56 (right → left), y = -3.7mm (north edge) */}
    {Array.from({ length: 20 }, (_, i) => (
      <smtpad
        portHints={[String(i + 37)]}
        shape="rect"
        width="0.25mm"
        height="0.4mm"
        pcbX={`${4.75 - i * 0.5}mm`}
        pcbY="-3.7mm"
        layer="top"
      />
    ))}

    {/* LEFT column pins 57-72 (top → bottom), x = -3.7mm */}
    {Array.from({ length: 16 }, (_, i) => (
      <smtpad
        portHints={[String(i + 57)]}
        shape="rect"
        width="0.4mm"
        height="0.25mm"
        pcbX="-3.7mm"
        pcbY={`${-4.25 + i * 0.5}mm`}
        layer="top"
      />
    ))}

    {/* Center thermal EP (pin 73) — GND */}
    <smtpad
      portHints={["73"]}
      shape="rect"
      width="5.4mm"
      height="5.4mm"
      pcbX="0mm"
      pcbY="0mm"
      layer="top"
    />

    {/* Body silkscreen */}
    <silkscreenpath
      route={[
        { x: -3.5, y: 4.0 },
        { x: 3.5, y: 4.0 },
        { x: 3.5, y: -4.0 },
        { x: -3.5, y: -4.0 },
        { x: -3.5, y: 4.0 },
      ]}
    />
  </footprint>
)