gokul/usb-hub-board
A 4-layer 100×66 mm USB 2.0 hub board with a USB‑C upstream port, four protected downstream USB‑C/USB‑A ports, an integrated SD card reader, USB hub controllers, 3.3 V regulation, ESD protection, current-limited power switches, crystal oscillators, and filtering/passive components.
- Version
- 1.0.6
- License
- unset
- Stars
- 1
lib/usb-hub-board.tsx
import { AF_90_WJDG } from "../imports/AF_90_WJDG"
import { AP2112K_3_3TRG1 } from "../imports/AP2112K_3_3TRG1"
import { AP22653W6_7 } from "../imports/AP22653W6_7"
import { DM1AA_SF_PEJ_82_ } from "../imports/DM1AA_SF_PEJ_82_"
import { TAXM24M4RFBCCT2T } from "../imports/TAXM24M4RFBCCT2T"
import { TYPE_C_16PIN_2MD_073_ } from "../imports/TYPE_C_16PIN_2MD_073_"
import { TYPE_C_24P_GTJB_040 } from "../imports/TYPE_C_24P_GTJB_040"
import { USB2244_AEZG_06 } from "../imports/USB2244_AEZG_06"
import { USB2517I_JZX } from "../imports/USB2517I_JZX"
import { USBLC6_2SC6 } from "../imports/USBLC6_2SC6"
const hubNoConnectPins = [
"SDA",
"LED_A1_N",
"LED_A2_N",
"LED_A3_N",
"LED_A4_N",
"LED_A5_N",
"LED_A6_N",
"LED_A7_N",
"LED_B1_N",
"LED_B2_N",
"LED_B3_N",
"LED_B4_N",
"LED_B5_N",
"LED_B6_N",
"LED_B7_N",
"PRTPWR5",
"PRTPWR6",
"PRTPWR7",
"OCS5_N",
"OCS6_N",
"OCS7_N",
"USBDN6_DP",
"USBDN6_DM",
"USBDN7_DP",
"USBDN7_DM",
] as const
const readerNoConnectPins = [
"NC1",
"NC2",
"NC3",
"NC4",
"NC5",
"NC6",
"NC7",
"SD_D4",
"SD_D5",
"SD_D6",
"SD_D7",
"SDA",
"SCK",
] as const
const upstreamPlugNoConnectPins = [
"SSTXP1",
"SSTXn1",
"SSRXp1",
"SSRXn1",
"SSTXp2",
"SSTXn2",
"SSRXp2",
"SSRXn2",
"SBU1",
"SBU2",
] as const
const dataTraceWidth = "0.2mm"
const supplyTraceWidth = "1mm"
const inputSupplyTraceWidth = "2mm"
const HubController = () => (
<USB2517I_JZX
name="U1"
pcbX={-11}
pcbY={8}
pcbRotation={0}
noSchematicRepresentation
noConnect={hubNoConnectPins}
/>
)
const UpstreamAndPowerSheet = () => (
<schematicsheet
name="Upstream and Power"
displayName="Upstream USB-C and Power"
sheetIndex={0}
>
<schematicbox
name="U1A"
chipRef=".U1"
title="USB2517 Upstream / Power"
width="3.1mm"
height="3mm"
pinLabels={{
pin1: "USBUP_DP",
pin2: "USBUP_DM",
pin3: "VBUS_DET",
pin4: "RESET_N",
pin5: "CFG_SEL0",
pin6: "CFG_SEL1",
pin7: "CFG_SEL2",
pin8: "XTAL1",
pin9: "XTAL2",
pin10: "RBIAS",
pin11: "LOCAL_PWR",
pin12: "VDD33",
pin13: "VDD33CR",
pin14: "VDD33PLL",
pin15: "VDDA331",
pin16: "VDDA332",
pin17: "VDDA333",
pin18: "VDDA334",
pin19: "VDD18",
pin20: "VDD18PLL",
pin21: "TEST",
pin22: "VSS",
}}
schPinArrangement={{
leftSide: ["pin1", "pin2", "pin3", "pin4", "pin5", "pin6", "pin7"],
rightSide: ["pin8", "pin9", "pin10", "pin11"],
topSide: ["pin12", "pin13", "pin14", "pin15", "pin16", "pin17", "pin18"],
bottomSide: ["pin19", "pin20", "pin21", "pin22"],
}}
/>
<TYPE_C_24P_GTJB_040
name="J1"
pcbX={-45}
pcbY={-8}
pcbRotation={-90}
noConnect={[...upstreamPlugNoConnectPins]}
/>
<USBLC6_2SC6 name="U3" pcbX={-37} pcbY={-8} pcbRotation={90} />
<fuse
name="F1"
currentRating="3A"
voltageRating="32V"
footprint="1206"
supplierPartNumbers={{ jlcpcb: ["C2691997"] }}
schOrientation="vertical"
pcbX={-34}
pcbY={-3}
/>
<AP2112K_3_3TRG1 name="U4" schHeight="0.6mm" pcbX={-27} pcbY={19} pcbRotation={90} />
<TAXM24M4RFBCCT2T
name="Y1"
pcbX={-22}
pcbY={8}
pcbRotation={90}
/>
<resistor name="R1" resistance="5.1k" footprint="0603" pcbX={-42} pcbY={-15} />
<resistor name="R2" resistance="5.1k" footprint="0603" pcbX={-38} pcbY={-15} />
<resistor name="R3" resistance="12k" footprint="0603" pcbX={-15} pcbY={1} />
<resistor name="R4" resistance="1M" footprint="0603" pcbX={-26} pcbY={8} />
<resistor name="R5" resistance="100k" footprint="0603" pcbX={0} pcbY={14} />
<resistor name="R6" resistance="100k" footprint="0603" pcbX={4} pcbY={14} />
<resistor name="R7" resistance="100k" footprint="0603" pcbX={8} pcbY={14} />
<resistor name="R8" resistance="10k" footprint="0603" pcbX={1} pcbY={9} pcbRotation={180} />
<resistor name="R9" resistance="10k" footprint="0603" pcbX={5} pcbY={9} />
<capacitor name="C1" capacitance="10uF" footprint="0805" pcbX={-31} pcbY={22} />
<capacitor name="C2" capacitance="10uF" footprint="0805" pcbX={-23} pcbY={22} />
<capacitor name="C3" capacitance="18pF" footprint="0603" pcbX={-23} pcbY={4} />
<capacitor name="C4" capacitance="18pF" footprint="0603" pcbX={-23} pcbY={12} />
<capacitor name="C5" capacitance="100nF" footprint="0603" pcbX={0} pcbY={11} pcbRotation={180} />
<capacitor name="C6" capacitance="1uF" footprint="0603" maxDecouplingTraceLength="30mm" pcbX={-4} pcbY={5} />
<capacitor name="C7" capacitance="1uF" footprint="0603" maxDecouplingTraceLength="30mm" pcbX={-18} pcbY={4} pcbRotation={180} />
<capacitor name="C8" capacitance="100nF" footprint="0603" pcbX={-12} pcbY={15} pcbRotation={180} />
<capacitor name="C9" capacitance="100nF" footprint="0603" pcbX={-8} pcbY={15} />
<capacitor name="C10" capacitance="100nF" footprint="0603" pcbX={-18} pcbY={7} pcbRotation={180} />
<capacitor name="C11" capacitance="100nF" footprint="0603" pcbX={-18} pcbY={11} pcbRotation={180} />
<capacitor name="C12" capacitance="100nF" footprint="0603" pcbX={-15} pcbY={15} />
<capacitor name="C13" capacitance="100nF" footprint="0603" pcbX={-11} pcbY={19} />
<capacitor name="C14" capacitance="1uF" footprint="0603" pcbX={-4} pcbY={15} />
<capacitor name="C39" capacitance="10uF" footprint="0805" pcbX={-31} pcbY={17} />
<capacitor name="C40" capacitance="100nF" footprint="0603" pcbX={-31} pcbY={13} />
<diode
name="D2"
footprint="smb"
supplierPartNumbers={{ jlcpcb: ["C169448"] }}
manufacturerPartNumber="SMBJ5.0A"
pcbX={-38}
pcbY={1}
/>
<trace from="J1.DP1" to="U3.IO1_PORT" width={dataTraceWidth} />
<trace from="J1.DP2" to="U3.IO1_PORT" width={dataTraceWidth} />
<trace from="J1.DM1" to="U3.IO2_PORT" width={dataTraceWidth} />
<trace from="J1.DM2" to="U3.IO2_PORT" width={dataTraceWidth} />
<trace name="USB_UP_DP" from="U3.IO1_IC" to="U1.USBUP_DP" width={dataTraceWidth} />
<trace name="USB_UP_DM" from="U3.IO2_IC" to="U1.USBUP_DM" width={dataTraceWidth} />
<differentialpair
name="USB_UPSTREAM_PAIR"
positiveConnection="USB_UP_DP"
negativeConnection="USB_UP_DM"
maxLengthSkew="15mm"
targetDifferentialImpedance="90ohm"
pcbTraceGap="0.15mm"
maxUncoupledLength="3mm"
/>
<trace from="U3.VBUS" to="net.VBUS_RAW" />
<trace from="U3.GND" to="net.GND" />
<trace from="J1.CC1" to="R1.pin1" />
<trace from="R1.pin2" to="net.GND" />
<trace from="J1.CC2" to="R2.pin1" />
<trace from="R2.pin2" to="net.GND" />
<trace from="J1.VBUS1" to="net.VBUS_RAW" width={supplyTraceWidth} />
<trace from="J1.VBUS2" to="net.VBUS_RAW" width={supplyTraceWidth} />
<trace from="J1.VBUS3" to="net.VBUS_RAW" width={supplyTraceWidth} />
<trace from="J1.VBUS4" to="net.VBUS_RAW" width={supplyTraceWidth} />
<trace from="J1.GND1" to="net.GND" width={supplyTraceWidth} />
<trace from="J1.GND2" to="net.GND" width={supplyTraceWidth} />
<trace from="J1.GND3" to="net.GND" width={supplyTraceWidth} />
<trace from="J1.GND4" to="net.GND" width={supplyTraceWidth} />
<trace from="J1.GND5" to="net.GND" width={supplyTraceWidth} />
<trace from="J1.GND6" to="net.GND" width={supplyTraceWidth} />
<trace
from="J1.VBUS3"
to="J1.VBUS1"
width="0.2mm"
pcbPathRelativeTo="J1.VBUS3"
pcbPath={[
{ x: 1.25, y: 2.5 },
{ x: 1.25, y: 2.5, via: true, fromLayer: "bottom", toLayer: "top" },
{ x: 1.25, y: 2.5 },
]}
/>
<trace
from="J1.VBUS4"
to="J1.VBUS2"
width="0.2mm"
pcbPathRelativeTo="J1.VBUS4"
pcbPath={[
{ x: -1.25, y: 2.5 },
{ x: -1.25, y: 2.5, via: true, fromLayer: "bottom", toLayer: "top" },
{ x: -1.25, y: 2.5 },
]}
/>
<trace
from="J1.GND4"
to="J1.GND1"
width="0.2mm"
pcbPathRelativeTo="J1.GND4"
pcbPath={[
{ x: 2.75, y: 2.5 },
{ x: 2.75, y: 2.5, via: true, fromLayer: "bottom", toLayer: "top" },
{ x: 2.75, y: 2.5 },
]}
/>
<trace
from="J1.GND5"
to="J1.GND2"
width="0.2mm"
pcbPathRelativeTo="J1.GND5"
pcbPath={[
{ x: -2.75, y: 2.5 },
{ x: -2.75, y: 2.5, via: true, fromLayer: "bottom", toLayer: "top" },
{ x: -2.75, y: 2.5 },
]}
/>
<trace from="F1.pin1" to="net.VBUS_RAW" width={inputSupplyTraceWidth} />
<trace from="F1.pin2" to="net.VBUS_5V" width={inputSupplyTraceWidth} />
<trace from="D2.cathode" to="net.VBUS_RAW" width={supplyTraceWidth} />
<trace from="D2.anode" to="net.GND" width={supplyTraceWidth} />
<trace from="C39.pin1" to="net.VBUS_5V" width={supplyTraceWidth} />
<trace from="C39.pin2" to="net.GND" />
<trace from="C40.pin1" to="net.VBUS_5V" />
<trace from="C40.pin2" to="net.GND" />
<trace from="U4.VIN" to="net.VBUS_5V" width={supplyTraceWidth} />
<trace from="U4.EN" to="net.VBUS_5V" />
<trace from="U4.GND" to="net.GND" />
<trace from="U4.VOUT" to="net.V3_3" width="0.5mm" />
<trace from="C1.pin1" to="net.VBUS_5V" />
<trace from="C1.pin2" to="net.GND" />
<trace from="C2.pin1" to="net.V3_3" />
<trace from="C2.pin2" to="net.GND" />
<trace from="U1.VBUS_DET" to="net.VBUS_RAW" />
<trace from="U1.RBIAS" to="R3.pin1" />
<trace from="R3.pin2" to="net.GND" />
<trace from="U1.TEST" to="net.GND" />
<trace from="U1.VSS" to="net.GND" width={supplyTraceWidth} />
<trace from="U1.LOCAL_PWR" to="R9.pin1" />
<trace from="R9.pin2" to="net.GND" />
<trace from="U1.XTAL1" to="Y1.pin1" maxViaCount={4} />
<trace from="U1.XTAL2" to="Y1.pin3" maxViaCount={4} />
<trace from="Y1.pin2" to="net.GND" />
<trace from="Y1.pin4" to="net.GND" />
<trace from="Y1.pin1" to="C3.pin1" maxViaCount={2} />
<trace from="C3.pin2" to="net.GND" />
<trace from="Y1.pin3" to="C4.pin1" maxViaCount={2} />
<trace from="C4.pin2" to="net.GND" />
<trace from="Y1.pin1" to="R4.pin1" maxViaCount={2} />
<trace from="Y1.pin3" to="R4.pin2" maxViaCount={2} />
<trace from="U1.CFG_SEL2" to="R5.pin1" />
<trace from="R5.pin2" to="net.V3_3" />
<trace from="U1.CFG_SEL1" to="R6.pin1" />
<trace from="R6.pin2" to="net.GND" />
<trace from="U1.CFG_SEL0" to="R7.pin1" />
<trace from="R7.pin2" to="net.V3_3" />
<trace from="U1.RESET_N" to="R8.pin1" />
<trace from="R8.pin2" to="net.V3_3" />
<trace from="U1.RESET_N" to="C5.pin1" />
<trace from="C5.pin2" to="net.GND" />
<trace from="U1.VDD18" to="C6.pin1" />
<trace from="C6.pin2" to="net.GND" />
<trace from="U1.VDD18PLL" to="C7.pin1" />
<trace from="C7.pin2" to="net.GND" />
<trace from="U1.VDD33" to="net.V3_3" />
<trace from="U1.VDD33CR" to="net.V3_3" />
<trace from="U1.VDD33PLL" to="net.V3_3" />
<trace from="U1.VDDA331" to="net.V3_3" />
<trace from="U1.VDDA332" to="net.V3_3" />
<trace from="U1.VDDA333" to="net.V3_3" />
<trace from="U1.VDDA334" to="net.V3_3" />
<trace from="C8.pin1" to="net.V3_3" />
<trace from="C8.pin2" to="net.GND" />
<trace from="C9.pin1" to="net.V3_3" />
<trace from="C9.pin2" to="net.GND" />
<trace from="C10.pin1" to="net.V3_3" />
<trace from="C10.pin2" to="net.GND" />
<trace from="C11.pin1" to="net.V3_3" />
<trace from="C11.pin2" to="net.GND" />
<trace from="C12.pin1" to="net.V3_3" />
<trace from="C12.pin2" to="net.GND" />
<trace from="C13.pin1" to="net.V3_3" />
<trace from="C13.pin2" to="net.GND" />
<trace from="C14.pin1" to="net.V3_3" />
<trace from="C14.pin2" to="net.GND" />
</schematicsheet>
)
const PortPowerChannel = ({ index, x, y }: { index: 1 | 2 | 3 | 4; x: number; y: number }) => {
const switchName = `U${index + 4}`
const limitResistorName = `R${20 + index}`
const inputCapacitorName = `C${20 + index}`
const outputCapacitorName = `C${24 + index}`
const portPowerNet = `net.VBUS_P${index}`
return (
<>
<AP22653W6_7 name={switchName} pcbX={x} pcbY={y} />
<resistor name={limitResistorName} resistance="43.2k" footprint="0603" pcbX={x} pcbY={y + 3} pcbRotation={180} />
<capacitor name={inputCapacitorName} capacitance="100nF" footprint="0603" pcbX={x + 1} pcbY={y - 3} />
<capacitor name={outputCapacitorName} capacitance="120uF" footprint="electrolytic_d6.3mm_p2.5mm" pcbX={x - 7} pcbY={y} />
<trace from={`${switchName}.IN`} to="net.VBUS_5V" width={supplyTraceWidth} />
<trace from={`${switchName}.GND`} to="net.GND" />
<trace from={`${switchName}.EN`} to={`U1.PRTPWR${index}`} />
<trace from={`${switchName}.FAULT`} to={`U1.OCS${index}_N`} />
<trace from={`${switchName}.ILIM`} to={`${limitResistorName}.pin1`} />
<trace from={`${limitResistorName}.pin2`} to="net.GND" />
<trace from={`${switchName}.OUT`} to={portPowerNet} width={supplyTraceWidth} />
<trace from={`${inputCapacitorName}.pin1`} to="net.VBUS_5V" />
<trace from={`${inputCapacitorName}.pin2`} to="net.GND" />
<trace from={`${outputCapacitorName}.pin1`} to={portPowerNet} width={supplyTraceWidth} />
<trace from={`${outputCapacitorName}.pin2`} to="net.GND" width={supplyTraceWidth} />
</>
)
}
const UsbCPort = ({ connectorName, esdName, index, y }: { connectorName: "J2" | "J3"; esdName: "U9" | "U10"; index: 1 | 2; y: number }) => {
const cc1ResistorName = index === 1 ? "R11" : "R13"
const cc2ResistorName = index === 1 ? "R12" : "R14"
const portPowerNet = `net.VBUS_P${index}`
return (
<>
<TYPE_C_16PIN_2MD_073_ name={connectorName} pcbX={46} pcbY={y} pcbRotation={90} noConnect={["SBU1", "SBU2"]} />
<USBLC6_2SC6 name={esdName} pcbX={37} pcbY={y} pcbRotation={90} />
<resistor name={cc1ResistorName} resistance="56k" footprint="0603" pcbX={41} pcbY={y + 3} />
<resistor name={cc2ResistorName} resistance="56k" footprint="0603" pcbX={41} pcbY={y - 3} />
<trace from={`${connectorName}.DP1`} to={`${esdName}.IO1_PORT`} width={dataTraceWidth} />
<trace from={`${connectorName}.DP2`} to={`${esdName}.IO1_PORT`} width={dataTraceWidth} />
<trace from={`${connectorName}.DM1`} to={`${esdName}.IO2_PORT`} width={dataTraceWidth} />
<trace from={`${connectorName}.DM2`} to={`${esdName}.IO2_PORT`} width={dataTraceWidth} />
<trace name={`USB_P${index}_DP`} from={`${esdName}.IO1_IC`} to={`U1.USBDN${index}_DP`} width={dataTraceWidth} />
<trace name={`USB_P${index}_DM`} from={`${esdName}.IO2_IC`} to={`U1.USBDN${index}_DM`} width={dataTraceWidth} />
<differentialpair
name={`USB_PORT_${index}_PAIR`}
positiveConnection={`USB_P${index}_DP`}
negativeConnection={`USB_P${index}_DM`}
maxLengthSkew="10mm"
targetDifferentialImpedance="90ohm"
pcbTraceGap="0.15mm"
maxUncoupledLength="3mm"
/>
<trace from={`${esdName}.VBUS`} to={portPowerNet} />
<trace from={`${esdName}.GND`} to="net.GND" />
<trace from={`${connectorName}.VBUS1`} to={portPowerNet} width={supplyTraceWidth} />
<trace from={`${connectorName}.VBUS2`} to={portPowerNet} width={supplyTraceWidth} />
<trace from={`${connectorName}.GND1`} to="net.GND" width={supplyTraceWidth} />
<trace from={`${connectorName}.GND2`} to="net.GND" width={supplyTraceWidth} />
<trace from={`${connectorName}.pin13`} to="net.GND" />
<trace from={`${connectorName}.pin14`} to="net.GND" />
<trace from={`${connectorName}.CC1`} to={`${cc1ResistorName}.pin1`} />
<trace from={`${cc1ResistorName}.pin2`} to={portPowerNet} />
<trace from={`${connectorName}.CC2`} to={`${cc2ResistorName}.pin1`} />
<trace from={`${cc2ResistorName}.pin2`} to={portPowerNet} />
</>
)
}
const UsbAPort = ({ connectorName, esdName, index, y }: { connectorName: "J4" | "J5"; esdName: "U11" | "U12"; index: 3 | 4; y: number }) => {
const portPowerNet = `net.VBUS_P${index}`
return (
<>
<AF_90_WJDG name={connectorName} schHeight="0.6mm" pcbX={46} pcbY={y} pcbRotation={90} />
<USBLC6_2SC6 name={esdName} pcbX={37} pcbY={y} pcbRotation={90} />
<trace from={`${connectorName}.D_POS`} to={`${esdName}.IO1_PORT`} width={dataTraceWidth} />
<trace from={`${connectorName}.D_NEG`} to={`${esdName}.IO2_PORT`} width={dataTraceWidth} />
<trace name={`USB_P${index}_DP`} from={`${esdName}.IO1_IC`} to={`U1.USBDN${index}_DP`} width={dataTraceWidth} />
<trace name={`USB_P${index}_DM`} from={`${esdName}.IO2_IC`} to={`U1.USBDN${index}_DM`} width={dataTraceWidth} />
<differentialpair
name={`USB_PORT_${index}_PAIR`}
positiveConnection={`USB_P${index}_DP`}
negativeConnection={`USB_P${index}_DM`}
maxLengthSkew="10mm"
targetDifferentialImpedance="90ohm"
pcbTraceGap="0.15mm"
maxUncoupledLength="3mm"
/>
<trace from={`${esdName}.VBUS`} to={portPowerNet} />
<trace from={`${esdName}.GND`} to="net.GND" />
<trace from={`${connectorName}.VCC`} to={portPowerNet} width={supplyTraceWidth} />
<trace from={`${connectorName}.GND`} to="net.GND" width={supplyTraceWidth} />
<trace from={`${connectorName}.SHLD`} to="net.GND" />
</>
)
}
const DownstreamPortsSheet = () => (
<schematicsheet name="Downstream Ports" displayName="Four Protected USB 2.0 Ports" sheetIndex={1}>
<schematicbox
name="U1B"
chipRef=".U1"
title="USB2517 Ports 1-4"
width="3mm"
height="1.8mm"
pinLabels={{
pin1: "USBDN1_DP", pin2: "USBDN1_DM", pin3: "PRTPWR1", pin4: "OCS1_N",
pin5: "USBDN2_DP", pin6: "USBDN2_DM", pin7: "PRTPWR2", pin8: "OCS2_N",
pin9: "USBDN3_DP", pin10: "USBDN3_DM", pin11: "PRTPWR3", pin12: "OCS3_N",
pin13: "USBDN4_DP", pin14: "USBDN4_DM", pin15: "PRTPWR4", pin16: "OCS4_N",
}}
schPinArrangement={{
leftSide: ["pin1", "pin2", "pin3", "pin4", "pin5", "pin6", "pin7", "pin8"],
rightSide: ["pin9", "pin10", "pin11", "pin12", "pin13", "pin14", "pin15", "pin16"],
}}
/>
<PortPowerChannel index={1} x={28} y={24} />
<PortPowerChannel index={2} x={28} y={8} />
<PortPowerChannel index={3} x={28} y={-6} />
<PortPowerChannel index={4} x={28} y={-24} />
<UsbCPort connectorName="J2" esdName="U9" index={1} y={24} />
<UsbCPort connectorName="J3" esdName="U10" index={2} y={8} />
<UsbAPort connectorName="J4" esdName="U11" index={3} y={-6} />
<UsbAPort connectorName="J5" esdName="U12" index={4} y={-24} />
</schematicsheet>
)
const SdReaderSheet = () => (
<schematicsheet name="SD Reader" displayName="USB 2.0 SD Card Reader" sheetIndex={2}>
<schematicbox
name="U1C"
chipRef=".U1"
title="USB2517 Internal Port 5"
width="2.5mm"
height="0.6mm"
pinLabels={{ pin1: "USBDN5_DP", pin2: "USBDN5_DM" }}
schPinArrangement={{ leftSide: ["pin1", "pin2"] }}
/>
<USB2244_AEZG_06 name="U13" schHeight="3.8mm" pcbX={-22} pcbY={-14} noConnect={readerNoConnectPins} />
<DM1AA_SF_PEJ_82_ name="J6" pcbX={-2} pcbY={-14} pcbRotation={-90} />
<TAXM24M4RFBCCT2T name="Y2" pcbX={-34} pcbY={-14} />
<resistor name="R31" resistance="12k" footprint="0603" pcbX={-31} pcbY={-7} pcbRotation={180} />
<resistor name="R32" resistance="10k" footprint="0603" pcbX={-27} pcbY={-5} pcbRotation={180} />
<resistor name="R33" resistance="1M" footprint="0603" pcbX={-39} pcbY={-19} />
<resistor name="R34" resistance="1k" footprint="0603" pcbX={-34} pcbY={-27} pcbRotation={180} />
<led
name="D1"
color="green"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C22371299"] }}
manufacturerPartNumber="PSC-1608U49GC-G4"
pinLabels={{
pin1: ["cathode", "neg"],
pin2: ["anode", "pos"],
}}
schOrientation="horizontal"
pcbX={-30}
pcbY={-27}
/>
<capacitor name="C31" capacitance="18pF" footprint="0603" pcbX={-34} pcbY={-19} />
<capacitor name="C32" capacitance="18pF" footprint="0603" pcbX={-31} pcbY={-21} />
<capacitor name="C33" capacitance="1uF" footprint="0603" maxDecouplingTraceLength="30mm" pcbX={-25} pcbY={-23} pcbRotation={180} />
<capacitor name="C34" capacitance="1uF" footprint="0603" maxDecouplingTraceLength="30mm" pcbX={-28} pcbY={-7} pcbRotation={180} />
<capacitor name="C35" capacitance="100nF" footprint="0603" pcbX={-29} pcbY={-10} />
<capacitor name="C36" capacitance="100nF" footprint="0603" pcbX={-29} pcbY={-13} />
<capacitor name="C37" capacitance="100nF" footprint="0603" pcbX={-29} pcbY={-16} />
<capacitor name="C38" capacitance="1uF" footprint="0603" pcbX={-29} pcbY={-19} />
<capacitor name="C41" capacitance="4.7uF" footprint="0805" pcbX={-3} pcbY={2.5} />
<via name="U13_EP_VIA_1" pcbX={-23} pcbY={-15} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_2" pcbX={-22} pcbY={-15} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_3" pcbX={-21} pcbY={-15} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_4" pcbX={-23} pcbY={-14} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_5" pcbX={-22} pcbY={-14} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_6" pcbX={-21} pcbY={-14} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_7" pcbX={-23} pcbY={-13} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_8" pcbX={-22} pcbY={-13} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<via name="U13_EP_VIA_9" pcbX={-21} pcbY={-13} holeDiameter="0.3mm" outerDiameter="0.6mm" connectsTo="net.GND" />
<trace name="USB_SD_DP" from="U1.USBDN5_DP" to="U13.USB_POS" width={dataTraceWidth} />
<trace name="USB_SD_DM" from="U1.USBDN5_DM" to="U13.USB_NEG" width={dataTraceWidth} />
<differentialpair
name="USB_SD_PAIR"
positiveConnection="USB_SD_DP"
negativeConnection="USB_SD_DM"
maxLengthSkew="7mm"
targetDifferentialImpedance="90ohm"
pcbTraceGap="0.15mm"
maxUncoupledLength="3mm"
/>
<trace from="U13.VDD331" to="net.V3_3" />
<trace from="U13.VDD332" to="net.V3_3" />
<trace from="U13.VDD333" to="net.V3_3" />
<trace from="U13.VDD33A" to="net.V3_3" />
<trace from="U13.EP" to="net.GND" width={supplyTraceWidth} />
<trace from="U13.TEST" to="net.GND" />
<trace from="U13.RBIAS" to="R31.pin1" />
<trace from="R31.pin2" to="net.GND" />
<trace from="U13.RESET_N" to="R32.pin1" />
<trace from="R32.pin2" to="net.V3_3" />
<trace from="U13.VDD18" to="C33.pin1" />
<trace from="C33.pin2" to="net.GND" />
<trace from="U13.VDD18PLL" to="C34.pin1" />
<trace from="C34.pin2" to="net.GND" />
<trace from="C35.pin1" to="net.V3_3" />
<trace from="C35.pin2" to="net.GND" />
<trace from="C36.pin1" to="net.V3_3" />
<trace from="C36.pin2" to="net.GND" />
<trace from="C37.pin1" to="net.V3_3" />
<trace from="C37.pin2" to="net.GND" />
<trace from="C38.pin1" to="net.V3_3" />
<trace from="C38.pin2" to="net.GND" />
<trace from="U13.XTAL1" to="Y2.pin1" maxViaCount={4} />
<trace from="U13.XTAL2" to="Y2.pin3" maxViaCount={4} />
<trace from="Y2.pin2" to="net.GND" />
<trace from="Y2.pin4" to="net.GND" />
<trace from="Y2.pin1" to="C31.pin1" maxViaCount={2} />
<trace from="C31.pin2" to="net.GND" />
<trace from="Y2.pin3" to="C32.pin1" maxViaCount={2} />
<trace from="C32.pin2" to="net.GND" />
<trace from="Y2.pin1" to="R33.pin1" maxViaCount={2} />
<trace from="Y2.pin3" to="R33.pin2" maxViaCount={2} />
<trace from="U13.LED" to="D1.neg" />
<trace from="D1.pos" to="R34.pin1" />
<trace from="R34.pin2" to="net.V3_3" />
<trace from="U13.SD_D3" to="J6.DAT3" />
<trace from="U13.SD_CMD" to="J6.CMD" />
<trace from="U13.CARD_PWR" to="J6.VDD" width="0.4mm" />
<trace from="C41.pin1" to="J6.VDD" width="0.4mm" />
<trace from="C41.pin2" to="net.GND" width="0.4mm" />
<trace from="U13.SD_CLK" to="J6.CLK" />
<trace from="U13.SD_D0" to="J6.DAT0" />
<trace from="U13.SD_D1" to="J6.DAT1" />
<trace from="U13.SD_D2" to="J6.DAT2" />
<trace from="U13.SD_nCD" to="J6.CARD_DET" />
<trace from="U13.SD_WP" to="J6.WRITE_PROTECT" />
<trace from="J6.SW_COM" to="net.GND" />
<trace from="J6.GND1" to="net.GND" width="0.4mm" />
<trace from="J6.GND2" to="net.GND" width="0.4mm" />
<trace from="J6.SHIELD1" to="net.GND" />
<trace from="J6.SHIELD2" to="net.GND" />
<trace from="J6.SHIELD3" to="net.GND" />
<trace from="J6.SHIELD4" to="net.GND" />
</schematicsheet>
)
const UnusedHubPortsSheet = () => (
<schematicsheet name="Reserved Hub Ports" displayName="Reserved USB2517 Ports 6 and 7" sheetIndex={3}>
<schematicbox
name="U1D"
chipRef=".U1"
title="Reserved Hub Ports"
width="3mm"
height="0.6mm"
pinLabels={{ pin1: "USBDN6_DP", pin2: "USBDN6_DM", pin3: "USBDN7_DP", pin4: "USBDN7_DM" }}
schPinArrangement={{ leftSide: ["pin1", "pin2"], rightSide: ["pin3", "pin4"] }}
/>
</schematicsheet>
)
const BoardMechanicalFeatures = () => (
<>
<hole name="H1" diameter="3.2mm" pcbX={-43} pcbY={28} />
<hole name="H2" diameter="3.2mm" pcbX={12} pcbY={28} />
<hole name="H3" diameter="3.2mm" pcbX={-43} pcbY={-28} />
<silkscreentext text="USB 2.0 HUB + SD" pcbX={-13} pcbY={29} fontSize="1.3mm" />
<silkscreentext text="MAC DATA + POWER" pcbX={-43} pcbY={2} fontSize="0.9mm" pcbRotation={90} />
<silkscreentext text="USB-C 1" pcbX={41} pcbY={29} fontSize="0.8mm" />
<silkscreentext text="USB-C 2" pcbX={41} pcbY={13} fontSize="0.8mm" />
<silkscreentext text="USB-A 1" pcbX={41} pcbY={-3} fontSize="0.8mm" />
<silkscreentext text="USB-A 2" pcbX={41} pcbY={-19} fontSize="0.8mm" />
<silkscreentext text="SD CARD" pcbX={5} pcbY={-29} fontSize="0.9mm" />
</>
)
export const UsbHubBoard = () => (
<board
title="USB-C Male 4-Port USB 2.0 Hub with SD Reader"
width="100mm"
height="66mm"
layers={4}
thickness="1.6mm"
borderRadius="2mm"
solderMaskColor="blue"
silkscreenColor="white"
fabricatorPreset="jlcpcb_standard"
defaultViaTenting="top_and_bottom_tented"
isViaInPadAllowed
minTraceWidth="0.15mm"
minViaHoleDiameter="0.2mm"
minViaPadDiameter="0.45mm"
minTraceToPadEdgeClearance="0.1mm"
minBoardEdgeClearance="0.2mm"
autorouter={{ preset: "auto_local", allowViaInPad: false, traceClearance: "0.1mm" }}
autorouterEffortLevel="1x"
schAutoLayoutEnabled
schTraceAutoLabelEnabled
>
<HubController />
<UpstreamAndPowerSheet />
<DownstreamPortsSheet />
<SdReaderSheet />
<UnusedHubPortsSheet />
<BoardMechanicalFeatures />
<copperpour
name="GND_PLANE_INNER1"
layer="inner1"
connectsTo="net.GND"
clearance="0.25mm"
boardEdgeMargin="0.5mm"
/>
</board>
)