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.5
License
MIT
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: [180, 270, 0, 90][side],
							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>
	</>
);