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/Controllers.tsx
import { placementFor } from "../design/placement";
import { QfnFootprint } from "./QfnFootprint";
import {
hubPinLabels,
readerPinLabels,
hubPinAttributes,
readerPinAttributes,
} from "../design/pinouts";
import { hubConnections, readerConnections } from "../design/connections";
export const Controllers = () => (
<>
<chip
name="U_HUB"
manufacturerPartNumber="USB5816C-I/KD"
pcbX="0mm"
pcbY={5}
{...placementFor("U_HUB")}
pinLabels={hubPinLabels}
pinAttributes={hubPinAttributes}
connections={hubConnections}
noSchematicRepresentation
footprint={
<QfnFootprint
pins={100}
pitch={0.4}
padWidth={0.2}
padLength={1.05}
rowSpacing={11.7}
bodySize={12}
exposedPad={8.1}
/>
}
cadModel={{
jscad: { type: "cuboid", size: [12, 12, 1] },
zOffsetFromSurface: 0.5,
}}
pcbStyle={{ silkscreenFontSize: 0.6 }}
/>
<chip
name="U_SD"
manufacturerPartNumber="USB2642-I/ML"
pcbX={-7}
pcbY={-16}
{...placementFor("U_SD")}
pinLabels={readerPinLabels}
pinAttributes={readerPinAttributes}
connections={readerConnections}
noSchematicRepresentation
footprint={
<QfnFootprint
pins={48}
pitch={0.5}
padWidth={0.25}
padLength={0.75}
rowSpacing={7}
bodySize={7}
exposedPad={5.3}
/>
}
cadModel={{
jscad: { type: "cuboid", size: [7, 7, 1] },
zOffsetFromSurface: 0.5,
}}
pcbStyle={{ silkscreenFontSize: 0.6 }}
/>
</>
);
export const hubPowerPinLabels = Object.fromEntries(
Object.entries(hubPinLabels)
.filter(([, label]) =>
/^(VDD|EP|TEST|RBIAS|XTAL|RESET|VBUS|CFG_|SPI_|SMB|GPIO|CC_POL|ALT_MUX|AB1|C_ATTACH|HOST_TYPE|SUSP)/.test(
label,
),
)
.map(([, label], index) => [`pin${index + 1}`, label]),
);
export const hubSignalPinLabels = Object.fromEntries(
Object.entries(hubPinLabels)
.filter(([, label]) => /^(UP_|D[1-6]_|PWR)/.test(label))
.map(([, label], index) => [`pin${index + 1}`, label]),
);