gokul/usb3-sd-hub
Engineering draft: four-layer, computer-powered USB 3 hub with one USB-C host socket, two USB-C and two USB-A accessory sockets, and a full-size SD slot. Board and three schematic previews are available. Routing and production checks are incomplete; not fabrication ready.
- Version
- 0.1.4
- License
- unset
- Stars
- 0
components/Decoupling.tsx
import { hubPinNames, readerPinNames } from "../design/pinouts";
import { Passives, type PassiveSpec } from "./Passives";
export const HubBypass = () => (
<>
<group
pcbAnchorAlignment="center"
pcbX="0mm"
pcbY="0mm"
pcbLayout={{ layoutMode: "none" }}
schTitle="Local supply bypass capacitors"
schGrid
gridCols={6}
gridGap={2}
>
<Passives
parts={hubPinNames.flatMap((label, index): PassiveSpec[] => {
if (!label.startsWith("VDD")) return [];
const side = Math.floor(index / 25);
const along = ((index % 25) - 12) * 0.4;
return [
{
name: `C_HUB_${index + 1}`,
kind: "capacitor",
rating: "100nF",
pcbX: [-8, along, 8, -along][side],
pcbY: 5 + [-along, -8, along, 8][side],
pcbRotation: side % 2 ? 90 : 0,
from: label.startsWith("VDD33") ? "VDD33" : "VDD12",
to: "GND",
},
];
})}
/>
</group>
</>
);
export const SdBypass = () => (
<>
<group
pcbAnchorAlignment="center"
pcbX="0mm"
pcbY="0mm"
pcbLayout={{ layoutMode: "none" }}
schTitle="Local 3.3 V bypass capacitors"
schGrid
gridCols={4}
gridGap={2}
>
<Passives
parts={readerPinNames.flatMap((label, index): PassiveSpec[] => {
if (!label.startsWith("VDD33") && !label.startsWith("VDDA33"))
return [];
const side = Math.floor(index / 12);
const along = ((index % 12) - 5.5) * 0.5;
return [
{
name: `C_SD_${index + 1}`,
kind: "capacitor",
rating: "100nF",
pcbX: -4 + [-5.1, along, 5.1, -along][side],
pcbY: -17 + [-along, -5.1, along, 5.1][side],
pcbRotation: side % 2 ? 90 : 0,
from: "SD_VDD33",
to: "GND",
},
];
})}
/>
</group>
</>
);