pixalynx/usb3-hub-10g
A USB 3.2 Gen 2 six-port hub board with USB-C PD power input, regulated 5 V/3.3 V/1.15 V rails, one upstream and four protected downstream USB-A/USB-C ports, SuperSpeed muxes, ESD protection, and controlled port power.
- Version
- 0.0.1
- License
- unset
- Stars
- 0
parts/Usb7206c.tsx
import type { ChipProps } from "tscircuit"
import { JlcFootprint } from "../lib/jlc"
import { CAD } from "../lib/cad-models"
/** Microchip USB7206C 6-port USB 3.2 Gen 2 hub, 100-VQFN 12 x 12 mm. Pin table from DS00003850F
* Table 3-1 (research/usb7206c.txt), identical to JLC C3210686's symbol; programmable-function pins carry their Configuration 3 function
* (Table 3-5, CFG_STRAP2 200k pull-down / CFG_STRAP1 10k pull-down). Supply pins get unique labels
* (VCORE_9, VDD33_26, ...) so every one is declared and decoupled individually. */
export const usb7206cPins = {
pin1: ["RESET_N"], pin2: ["VBUS_DET"], pin3: ["MSTR_I2C_DATA"], pin4: ["NC4"],
pin5: ["DN1_DP"], pin6: ["DN1_DM"], pin7: ["DN1_TXP"], pin8: ["DN1_TXN"], pin9: ["VCORE_9"], pin10: ["DN1_RXP"], pin11: ["DN1_RXN"],
pin12: ["NC12"], pin13: ["NC13"],
pin14: ["DN2_DP"], pin15: ["DN2_DM"], pin16: ["DN2_TXP"], pin17: ["DN2_TXN"], pin18: ["VCORE_18"], pin19: ["DN2_RXP"], pin20: ["DN2_RXN"],
pin21: ["CFG_STRAP1"], pin22: ["CFG_STRAP2"], pin23: ["CFG_STRAP3"], pin24: ["TESTEN"], pin25: ["VCORE_25"], pin26: ["VDD33_26"],
pin27: ["DN3_DP"], pin28: ["DN3_DM"], pin29: ["DN3_TXP"], pin30: ["DN3_TXN"], pin31: ["VCORE_31"], pin32: ["DN3_RXP"], pin33: ["DN3_RXN"],
pin34: ["DN4_DP"], pin35: ["DN4_DM"], pin36: ["DN4_TXP"], pin37: ["DN4_TXN"], pin38: ["VCORE_38"], pin39: ["DN4_RXP"], pin40: ["DN4_RXN"],
pin41: ["DN6_DM"], pin42: ["DN6_DP"], pin43: ["VDD33_43"],
pin44: ["I2S_SDI"], pin45: ["I2S_SDO"], pin46: ["I2S_SCK"], pin47: ["I2S_LRCK"], pin48: ["I2S_MCLK"], pin49: ["PF8_NC"], pin50: ["PF9_NC"],
pin51: ["PRT_CTL3_U3"], pin52: ["PRT_CTL4_U3"], pin53: ["VDD33_53"], pin54: ["PRT_CTL5_U3"], pin55: ["VCORE_55"],
pin56: ["PRT_CTL5"], pin57: ["PRT_CTL4"], pin58: ["PRT_CTL3"], pin59: ["PRT_CTL2"], pin60: ["PRT_CTL1"],
pin61: ["MSTR_I2C_CLK"], pin62: ["VDD33_62"], pin63: ["TEST1"], pin64: ["TEST2"], pin65: ["TEST3"], pin66: ["MIC_DET"], pin67: ["VDD33_67"],
pin68: ["SPI_CLK"], pin69: ["CFG_NON_REM"], pin70: ["CFG_BC_EN"], pin71: ["SPI_D1"], pin72: ["SPI_D2"], pin73: ["SPI_D3"],
pin74: ["GPIO93"], pin75: ["SLV_I2C_CLK"], pin76: ["SLV_I2C_DATA"], pin77: ["PRT_CTL6"], pin78: ["VCORE_78"], pin79: ["VDD33_79"], pin80: ["NC80"],
pin81: ["DN5_DP"], pin82: ["DN5_DM"], pin83: ["DN5_TXP"], pin84: ["DN5_TXN"], pin85: ["VCORE_85"], pin86: ["DN5_RXP"], pin87: ["DN5_RXN"], pin88: ["VDD33_88"],
pin89: ["UP_DP"], pin90: ["UP_DM"], pin91: ["UP_TXP"], pin92: ["UP_TXN"], pin93: ["VCORE_93"], pin94: ["UP_RXP"], pin95: ["UP_RXN"],
pin96: ["ATEST"], pin97: ["XTALO"], pin98: ["XTALI"], pin99: ["VDD33_99"], pin100: ["RBIAS"], pin101: ["VSS"],
} as const
export const USB7206C_VCORE = ["VCORE_9", "VCORE_18", "VCORE_25", "VCORE_31", "VCORE_38", "VCORE_55", "VCORE_78", "VCORE_85", "VCORE_93"] as const
export const USB7206C_VDD33 = ["VDD33_26", "VDD33_43", "VDD33_53", "VDD33_62", "VDD33_67", "VDD33_79", "VDD33_88", "VDD33_99"] as const
export const Usb7206c = (props: ChipProps<typeof usb7206cPins>) => (
<chip
{...props}
manufacturerPartNumber="USB7206CT/KDX"
supplierPartNumbers={{ jlcpcb: ["C3210691"] }}
pinLabels={usb7206cPins}
footprint={<JlcFootprint part="usb7206c" margin={0.1} />} cadModel={CAD.usb7206c}
schWidth={3.0}
schHeight={10.2}
schPinArrangement={{
// left: upstream port, control, configuration straps, unused functions (pulled down), core supply, ground
leftSide: {
direction: "top-to-bottom",
pins: [
"UP_DP", "UP_DM", "UP_TXP", "UP_TXN", "UP_RXP", "UP_RXN", "VBUS_DET", "RESET_N", "XTALI", "XTALO", "RBIAS", "ATEST",
"CFG_STRAP1", "CFG_STRAP2", "CFG_STRAP3", "CFG_NON_REM", "CFG_BC_EN", "TESTEN", "TEST1", "TEST2", "TEST3",
"SPI_CLK", "SPI_D1", "SPI_D2", "SPI_D3", "MSTR_I2C_CLK", "MSTR_I2C_DATA", "SLV_I2C_CLK", "SLV_I2C_DATA", "MIC_DET",
"I2S_SDI", "I2S_SDO", "I2S_SCK", "I2S_LRCK", "I2S_MCLK", "GPIO93", "NC4", "NC12", "NC13", "NC80",
...USB7206C_VCORE, "VSS",
],
},
// right: downstream ports 1-4 with their power controls, disabled ports 5-6, 3.3 V supply
rightSide: {
direction: "top-to-bottom",
pins: [
"DN1_DP", "DN1_DM", "DN1_TXP", "DN1_TXN", "DN1_RXP", "DN1_RXN", "PRT_CTL1",
"DN2_DP", "DN2_DM", "DN2_TXP", "DN2_TXN", "DN2_RXP", "DN2_RXN", "PRT_CTL2",
"DN3_DP", "DN3_DM", "DN3_TXP", "DN3_TXN", "DN3_RXP", "DN3_RXN", "PRT_CTL3",
"DN4_DP", "DN4_DM", "DN4_TXP", "DN4_TXN", "DN4_RXP", "DN4_RXN", "PRT_CTL4",
"DN5_DP", "DN5_DM", "DN5_TXP", "DN5_TXN", "DN5_RXP", "DN5_RXN", "PRT_CTL5",
"DN6_DP", "DN6_DM", "PRT_CTL6", "PRT_CTL3_U3", "PRT_CTL4_U3", "PRT_CTL5_U3", "PF8_NC", "PF9_NC", ...USB7206C_VDD33,
],
},
}}
pinAttributes={{
VSS: { requiresGround: true },
...Object.fromEntries(USB7206C_VCORE.map((p) => [p, { requiresPower: true }])),
...Object.fromEntries(USB7206C_VDD33.map((p) => [p, { requiresPower: true }])),
}}
/>
)