尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

自制多口USB Type-C扩展坞全解析:芯片选型到PCB布线实战

自制多口USB Type-C扩展坞全解析:芯片选型到PCB布线实战 这两年公司发的笔记本越来越轻薄接口也跟着一路精简最后只剩下两个 Type-C 口。一个是充电口另一个要接显示器、接键鼠接收器、接 U 盘、接网线运气不好还得临时读个相机 SD 卡每天光插拔就快把 Type-C 口插出心理阴影。市面上的扩展坞倒是不少但真正用下来就两个极端便宜货暗坑多标着 USB 3.0 实际跑 2.0 速度标着 4K60 实际只能输出 4K30正经品牌货质量没话说价格却顶得上半台显示器。被来回折腾几轮之后我决定自己动手做一个 Multiport USB Type-C Docking System把所有想用的口一次性做全把芯片选型、供电架构、高速布线这些命门都攥在自己手里。这篇文章就是整个项目的完整复盘从需求拆解到方案选型从 PD 供电到 PCB 布线再到固件烧录和实测踩坑适合想深入了解 Type-C 扩展坞原理、或者打算自己画板做一套的工程师和 DIY 玩家参考。1. 需求拆解这个扩展坞到底要解决什么问题1.1 端口盘点与日常使用场景动手之前先做了个简单的需求盘点把一周之内在工位和会议室实际要插的东西全列出来一台只带两个 Type-C 口的 Windows 轻薄本支持 DP Alt Mode 和 USB PD 充电一台 4K 显示器走 HDMI 输入一套无线键鼠的 USB 接收器一个外置 NVMe 移动硬盘习惯走 USB 3.0 高速口若干 U 盘、读卡器时不时的 SD 卡需求偶尔需要插网线的场景公司某些会议室 Wi-Fi 实在一言难尽笔记本电源适配器原装 65W Type-C 充电器。把这些堆在一起一个比较完整的扩展坞端口组合就出来了一个上行 Type-C 口接笔记本一个 PD 输入口接充电器一个 HDMI 口接 4K 显示器两个到三个 USB-A 3.0 口接外设一个千兆网口一个 SD/TF 卡槽。也就是说这是一台典型的 7 合 1 到 8 合 1 扩展坞唯一不同的是这些配置完全由我自己定不会出现买来的扩展坞A 口够用但 HDMI 缩水这种尴尬。1.2 市售扩展坞的两个深坑可能有人会问网上几十块到几百块的扩展坞一大堆为什么非要自己折腾我在做这个项目之前还真认真测过几款踩过的坑可以归纳成两类。第一类是速度虚标。很多低价扩展坞标的是 USB 3.0 口实际拷贝大文件时只能跑到 35MB/s 左右一查才发现主控芯片用的是老掉牙的 USB 2.0 Hub或者虽然用了 USB 3.0 主控但 PCB 布局上高速线走了长距离过孔信号质量差到只能降速运行。这个坑买之前根本看不出来只能拿移动固态硬盘插上去实测才能发现。第二类是 HDMI 缩水。部分扩展坞的 HDMI 口标注支持 4K 30Hz如果你只是办公可能感觉不明显但在 4K 显示器上移动鼠标都能看到明显拖影。还有内部用料更省的直接用一个 DP 1.1 转 HDMI 1.4 的方案4K 输出想都不要想。大多数消费者不会去拆机看里面的视频转换芯片到底是什么型号只能被参数表牵着走。我想要的是一台真正能作为生产力工具的扩展坞USB 口必须实打实跑 5GbpsHDMI 必须实打实输出 4K 60Hz网卡必须是千兆满速多口同时满载还不能掉盘断连。既然市面上选择太少那就自己做一个。1.3 最终需求清单整理后的目标规格如下端口规格要求备注上行 Type-CUSB 3.1 Gen1 DP Alt Mode接笔记本最高 4K60PD 输入口USB PD 3.0最大 100W接充电器同时给扩展坞内部供电HDMI 输出HDMI 2.04K60Hz必须支持 HDCP 2.2USB-A x3USB 3.1 Gen15Gbps其中一个支持 BC1.2 充电千兆网口10/100/1000Mbps使用 RTL8153B 方案SD/TF 卡槽USB 3.0 读卡器支持 SD 3.0 协议这里有个设计细节扩展坞自身芯片的供电和笔记本充电的功率分配必须分开处理否则会出现插上扩展坞笔记本反而掉电的问题。后面会专门讲。2. 方案选型一颗主控芯片定生死扩展坞的核心其实可以拆成几大功能块USB Hub、视频转换、PD 电源管理、网卡和读卡器。每一块都对应一颗关键芯片选型基本决定了整个扩展坞的体验上限。2.1 USB Hub 主控为什么选了 VL817USB Hub 是整个扩展坞的数据中枢所有 USB 外设的数据都要经过它再汇流到笔记本的 Type-C 口。市面上常见的 USB 3.1 Gen1 Hub 芯片主要是这三颗威锋的 VL817、瑞昱的 RTS5411、创惟的 GL3520。芯片端口数MTT 支持发热配置灵活性参考价格VL8174 口/5 口支持较低外挂 EEPROM可配置性强约 10-15 元RTS54114 口支持中等配置方式相对固定约 8-12 元GL35204 口支持较高EEPROM 配置但资料较少约 8-12 元我最终选了 VL817主要看中三点。第一VL817 的 MTTMulti Transaction Translator做得很成熟。USB 2.0 设备挂多个时不容易互相拖慢速度这是老扩展坞最容易忽略的地方。很多便宜的扩展坞插一个 U 盘再去插键盘鼠标U 盘拷贝速度马上掉一半就是单 TT 的锅。第二VL817 的外挂 EEPROM 配置非常灵活。你可以通过一颗 24C02 之类的 EEPROM 配置端口顺序、过流检测阈值、甚至每个口是否支持充电协议。量产时同一块板子只需要烧不同配置文件就能出不同型号的扩展坞这个灵活度对后期调试特别有用。第三VL817 在市场上的出货量大参考设计和应用笔记都很齐全。TI、威锋的官方资料里有大量现成的电路可以参考个人开发者也能很容易看懂。2.2 视频转换芯片DP Alt Mode 到 HDMI 的关键一跳Type-C 的 DP Alt Mode 可以让 4 对高速差分线中的 2 对复用成 DisplayPort 信号但要输出到 HDMI 显示器还需要一颗 DP 转 HDMI 的转换芯片。这个环节直接决定了你能不能跑上 4K60。常见的两颗方案是谱瑞 PS186 和 NXP PTN36502。PS186 是 DP 1.2 转 HDMI 2.0官方支持 4K60Hz、HDCP 2.2是目前 Type-C 扩展坞里非常主流的方案。PTN36502 虽然也是 DP Alt Mode 转 HDMI但规格基本是 DP 1.2 转 HDMI 1.4最高只到 4K30Hz。对于已经用上 4K 显示器的用户来说这两者的体验差距非常明显。这里有个技术点要说明Type-C 的 DP Alt Mode 下2 对差分线可以承载 2 Lane 的 DP 信号DP 1.2 的 HBR2 速率下单 Lane 是 5.4Gbps2 Lane 总带宽 10.8Gbps。4K60Hz 24bit 色深的视频流大约需要 10.03Gbps所以 2 Lane 的 HBR2 刚好能满足 4K60。PS186 的设计目标就是对准这个带宽需求这也是它能在扩展坞领域经久不衰的原因。我最后选了 PS186不光是冲着 4K60 去的还因为它内部带了一颗 MCU可以通过外挂的 SPI Flash 加载固件。这个特性对调试帮助很大固件可以根据实际显示器兼容性更新就算布线有点小问题有时也能通过固件配置绕过去后面会详细说。2.3 外围芯片网卡、读卡器、PD 选型剩下的功能模块选型相对简单都是成熟方案千兆网卡用瑞昱 RTL8153B。这颗芯片是从 USB 3.0 转千兆以太网的绝对主流驱动兼容性最好Windows、macOS、Linux 都是免驱或系统自带驱动功耗也低发热不大。读卡器用了创惟 GL3224USB 3.0 接口的 SD/TF 读卡器控制芯片支持 SD 3.0 的 UHS-I 速度基本能跑满 SD 卡极限。PD 取电部分用了沁恒的 CH224K。这是一颗国产 PD Sink 芯片成本很低支持 PD 2.0/3.0 协议可以通过外部电阻配置请求 5V/9V/12V/15V/20V 电压档位非常适合做扩展坞板内的电源管理。笔记本充电那一侧的 PD Source 功能则用了一颗现成的 PD 控制模块来实现避免自己写 PD 协议栈。选型做完之后整个系统的信号流和数据流大概是这样的逻辑笔记本的上行 Type-C 口进入扩展坞后USB 2.0 和 USB 3.0 信号直接进 VL817 分配给各个 USB-A 口和外围芯片DP Alt Mode 的两对差分线进 PS186 转换成 HDMI 信号电源侧则是 PD 输入口进 CH224K 取电一路直通给笔记本充电一路降压成 5V 给板内所有芯片供电。3. 供电设计PD 协议协商和功率分配才是扩展坞的命门很多做扩展坞翻车的人都会忽略一个问题Type-C 扩展坞不只是数据转接它本质是一台小型电源管理设备。插上扩展坞之后笔记本要能正常充电扩展坞自己的芯片们也要有稳定的供电两条路必须同时走通缺一个设备都没法正常工作。3.1 一条 CC 线是怎么聊出电压来的先理解 USB PD 的基本逻辑。Type-C 口上有两根 CC 引脚CC1 和 CC2它们的作用不是传数据而是做设备识别和供电协商。电源端Source会在自己的 CC 脚上输出一个上拉电阻信号设备端Sink则通过一个 5.1kΩ 的下拉电阻到地电源端检测到这个下拉电阻才知道有个设备插进来了可以开始供电了。接下来的电压协商是靠 CC 线上的 BMC 编码信号进行的。Source 问 Sink你要几伏Sink 回答我要 20V。Source 确认后VBUS 上的电压才会从 5V 抬高到 20V。这个过程就是 PD 协议里最核心的协商机制。我用的 CH224K 做的事情很简单它内部已经集成了 PD 协议 Sink 的逻辑你只需要通过它的 CFG1 引脚电阻配置好想要的电压档位它上电后就会自动和充电器协商出对应电压。比如我配置成请求 20V如果充电器支持 PD 3.0 的 PDOPower Data ObjectCH224K 就能拿到 20V。这里有个很关键的细节CH224K 协商出来的电压是给扩展坞内部用的不是直接决定笔记本能不能充电。扩展坞内部需要先把 20V 一路直通到上行 Type-C 口的 VBUS然后由另一颗 PD Source 控制器去和笔记本协商充电功率。这相当于在一条供电链路上有两个 PD 节点一个负责从充电器取电一个负责给笔记本送电互不干扰。3.2 100W 输入进去怎么分配才合理充电器输入 100W20V/5A扩展坞不能把全部功率都吃掉。实际上扩展坞自身的功耗并不大全部芯片加在一起满载也就 4W 左右。100W 里的大部分是要直通给笔记本充电的板内的 4W 从 20V 降压产生即可。供电架构上我设计了三级电源PD 输入口进来的 20V VBUS先进一颗 TVS 管做瞬态保护然后并联两个方向一路直通上行口的 VBUS另一路进 DC-DC 降压DC-DC 用的是矽力杰 SY8368输入支持最高 20V输出设成 5V给 VL817、PS186、RTL8153B、GL3224 以及 SD 卡座供电其中 PS186 内部需要 3.3V 和 1.2V 等低电压所以 5V 进来之后再由板载的 LDO 转出。整套供电树算下来5V 总线的最大需求大约 1A 左右SY8368 最大输出 3A余量很足。实际调试时我用电子负载拉过 1.5A 的电流纹波在 30mV 以内对 USB 高速信号的影响很小。3.3 这部分的坑防倒灌、过流和上电时序供电设计里最容易翻车的几个点我在这里先提前说了都是血泪教训。一个是防倒灌。如果上行口和 PD 口之间只是简单直通当笔记本的电池通过上行口向扩展坞反向供电时电流方向是反的可能直接打坏 CH224K。因此我在这条 VBUS 直通通路上放了一颗理想二极管控制芯片或者至少是一颗低 VF 的肖特基二极管确保电流只能从 PD 输入口流向上行口不能反向。另一个是上电时序。VL817 和 PS186 都对供电时序有要求如果 5V 还没稳定芯片就开始初始化会出现设备枚举不成功的情况。当时我加了一个简单的电源监控复位芯片让所有芯片在 5V 稳定至少 10ms 之后才解除复位这个问题就消失了。还有过流保护。USB-A 口如果短路或者接了过流设备不能让它直接拖垮整条 5V 总线。VL817 的每个下行端口都有过流检测引脚配合外部的限流开关使用哪个口短路就关断哪个口而不是整机断电。这个设计在实际测试中救过我至少两次。4. 高速信号布线USB3.0 和 DP Alt Mode 的 PCB 实战芯片方案定了供电架构也定了接下来最大头的就是 PCB 布线。扩展坞里跑着两路高速信号USB 3.0 的 5Gbps 差分信号以及 DP Alt Mode 的 5.4Gbps 差分信号。这些信号走线稍微处理不好轻则降速重则完全无法工作。4.1 PCB 叠层与 90Ω 阻抗控制高性价比的做法是 4 层板。我的叠层设计是L1 顶层信号层放置所有元器件和高速差分走线L2 内层完整地平面高速信号的参考回流面L3 内层电源平面按 5V、3.3V、1.2V 进行分割L4 底层信号层走低速信号和少量电源线。USB 3.0 和 DP 信号的差分阻抗要求都是 90Ω±10%这个必须靠准确的层间距和线宽来控制。我的板材是普通 FR4介电常数 4.3 左右L1 到 L2 的介质厚度 0.11mm经过阻抗计算软件模拟后90Ω 微带线大概需要 0.2mm 线宽、0.15mm 的差分对间距。这里我要强调一句不要纯靠经验拍脑袋定线宽不同板厂的材料和压合厚度会有差异。最稳妥的方法是在画板之前给板厂提供一份阻抗测试条的需求让他们在一个拼板角上做一根差分阻抗测试条打样回来后用网分或者示波器实测确认阻抗在 81Ω 到 99Ω 范围内再批量。4.2 Type-C 接口的引脚分配与信号走向做 Type-C 扩展坞第一步是把上行口的引脚搞明白。Type-C 是 24 pin 的连接器但真正要在扩展坞里用到的信号其实可以这样分组引脚组功能在扩展坞里的去向A1/B1, A12/B12GND 和 VBUS接电源网络A4/B4, A9/B9VBUS接 5V/20V 电源网络A6/B6, A7/B7D / D-进 VL817 的 USB 2.0 上游A2/B2, A3/B3SSTX 差分对DP Alt Mode 时作为 DP Lane0 进 PS186A10/B10, A11/B11SSRX 差分对默认走 VL817 的 USB 3.0 上游Alt Mode 时也可作为 DP Lane1A5/B5CC1/CC2接 PD 控制器和 Rd 下拉电阻A8/B8SBU1/SBU2接 PS186 的 AUX 通道这里有一个设计上的取舍Type-C 一共最多可以复用 4 对高速差分线如果全部给 DP 用扩展坞就没有 USB 3.0 了。日常场景通常只拿其中 2 对跑 DP剩下 2 对跑 USB 3.0。PS186 支持 2 Lane 的 DP 输入刚好匹配这个方案。所以我画的是 2 Lane DP 1 Lane USB 3.0 的混合拓扑。4.3 等长控制、回流路径和防割裂高速布线的几个硬性要求我这里直接给结论差分对内等长控制在 ±5mil 以内差分对之间的长度差控制在 10mil 以内每一对差分线正下方必须保证完整的参考地平面这是保证 90Ω 阻抗的前提过孔不能打太多每对差分线的过孔数量越少越好信号换层时旁边一定要加接地过孔提供回流路径DP 的 AUX 通道SBU 引脚到 PS186走线虽然不用差分但也要和高速信号拉开距离避免串扰。我第一版板子上犯过一个错误为了省面积把一对差分线从底层换到顶层时参考平面恰好经过了电源层的一个分割区域信号回流路径被切断了结果那对线的眼图完全不行USB 3.0 直接掉到 2.0 模式。后来把分割线挪开并加了一排缝合地孔才恢复正常。ESD 防护也很重要。Type-C 接口是高频插拔的很容易积累静电。我在上行口和 PD 口的 CC、SBU、D/D-、差分对引脚都加了一颗 TPD4E05U06 之类的低电容 TVS 阵列注意选低电容型号不然高速信号会直接被滤没了。5. 固件烧录、调试与硬件改版很多硬件项目做到板子能上电就以为快完成了实际上从能上电到能稳定工作中间还有很长一段路。我的扩展坞经过了三版 PCB 迭代才达到目标性能其中固件和调试占了很大比重。5.1 VL817 的 EEPROM 配置搞定 VID/PID 和端口映射VL817 上电后如果没有外接 EEPROM会以默认配置运行基本功能都能用但如果你要调整端口属性、过流保护使能、充电协议支持等就要外挂一颗 24C02 到它的 I2C 总线上。配置流程是先通过 USB 接口连接 VL817 到电脑用厂家提供 Windows 工具把当前默认配置读出来然后按需修改 VID/PID、端口使能顺序、每口过流门限之后写入 EEPROM。写入后 VL817 会重新加载配置。这里有一个非常容易被忽略的点VID/PID 不要随便填。如果你准备把这套东西量产VID 需要向 USB-IF 申请如果是自用或小范围分享可以沿用默认 ID但注意不要和市面上的正式产品冲突不然后续操作系统驱动匹配时可能出现奇怪问题。5.2 PS186 的固件加载NPI 固件和 SPI Flash 的坑PS186 和普通视频转换芯片不太一样它内部 MCU 需要从外挂的 SPI Flash 里加载一份固件才能正常输出 HDMI。如果不外挂 Flash或者在 Flash 里没烧固件PS186 上电后会处于一种近乎半睡半醒的状态HDMI 口完全没输出或者只有极少数显示器能碰运气点亮。第一次打样时我就踩了这个坑PS186 旁边只焊了空白的 SPI Flash结果 HDMI 黑屏。后来从参考设计包里找到了对应的 NPI 固件文件用烧录器写入 SPI Flash 再焊回去HDMI 就正常了。需要注意的是固件版本要和芯片型号严格匹配PS186 和 PS196 等不同型号的固件不能混用。这块我觉得是 DIY 项目里最大的门槛因为固件很多时候不是公开下载的需要从芯片代理商或原厂参考设计里获取。如果是纯个人玩建议优先选择固件公开或者自带 ROM 的芯片方案不要一上来就挑战这种需要闭源固件的芯片。5.3 三次改板的核心问题复盘整个项目改了三版我把每次翻车的原因都记录下来方便后面做类似项目的朋友参考。第一版的故障是笔记本完全识别不到扩展坞。排查了很久最后发现是上行 Type-C 口的 CC 引脚缺少 Rd 下拉电阻。笔记本的 Source 检测不到 Sink 的存在自然不供电也不枚举。解决方法是把 CC 引脚的 5.1kΩ 下拉电阻补上问题立刻消失。第二版的故障是 HDMI 输出花屏和间歇黑屏。GPI 排查逻辑大致是先用示波器看 PS186 输入的 DP 信号眼图和输出的 TMDS 信号发现信号幅度偏小、振铃严重。原因是前置的共模电感选型不当标称阻抗太高相当于把高速信号的高频分量滤掉了。换了一颗阻抗正确的共模电感后画面就稳定了。第三版的故障是 USB 3.0 口速度始终只有 2.0。USB 3.0 降速到 2.0通常意味着高速差分对没跑起来或信号完整性太差。检查下来发现是 Type-C 母座的一根 SSRX 差分引脚虚焊导致高速链路无法建立。补焊之后速度恢复到了正常的 5Gbps。6. 成品实测发热、兼容性和实际性能板子改稳定之后终于到了验收环节。我搭了一个相对完整的测试环境一台支持 DP Alt Mode 的笔记本、一个 65W PD 充电器、一台 4K 显示器、一块移动 SSD、一个 USB 3.0 U 盘、一张 SD 卡、一台千兆交换机把所有端口全部插满进行持续负载测试。6.1 USB 3.0 速度和 HDMI 4K60 同开测试先测最核心的 USB 3.0 速度。移动 SSD 插在扩展坞的 USB-A 口上用 CrystalDiskMark 跑顺序读取实测读取速度 438MB/s写入速度 402MB/s基本跑满了 USB 3.1 Gen1 的实际带宽5Gbps 链路扣除开销后上限大约 450MB/s没有出现掉到 2.0 的情况。然后再同时把 HDMI 接到 4K 显示器上确认输出分辨率为 3840x216060HzRGB 4:4:4 8bit 模式全部解锁。在显示器和移动 SSD 同时满速工作的情况下USB 拷贝速度没有明显波动这说明 2 Lane DP 1 Lane USB 3.0 的带宽分配方式是可行的两条链路互不挤占。这里跑了一个小时的循环视频播放加 SSD 读写整个板子没有出现一次断连或掉盘。这个稳定性指标对我来说是关键之前用的几个市售扩展坞在这套压力测试下几十分钟就出幺蛾子。6.2 千兆网卡和读卡器测试网卡用 iperf3 和另一台机器对接测吞吐实测稳定在 940Mbps 左右这是千兆以太网的物理上限说明 RTL8153B 的 USB 桥接效率没有问题。功耗方面满载拷机时 RTL8153B 的芯片表面温度用手背触摸只是温热没有到烫手的程度。读卡器方面用一张 UHS-I 规格的 SD 卡测试读取速度稳定在 75MB/s 左右虽然受卡本身速度限制但已经接近 UHS-I 的理论上限。以前用读卡器最担心的一边读写一边掉卡的问题在这套方案里没有出现。6.3 发热、兼容性和功耗扩展坞没有主动散热全靠金属外壳被动散热。把全部端口满载跑了一小时之后测得外壳表面最高温度 46°C 左右出现在 PD 输入口和 DC-DC 芯片附近整体属于正常范围。温度曲线也不会持续上升半小时后基本进入热平衡。兼容性方面我在 Windows 11、macOS Ventura、Ubuntu 22.04 三套系统里分别做了插拔和热插拔测试结果如下测试项Windows 11macOSUbuntu 22.04USB 3.0 设备枚举正常正常正常HDMI 4K60 输出正常正常正常千兆网卡免驱识别免驱识别需要 r8152 驱动系统自带读卡器正常正常正常PD 充电正常正常正常三个系统下都没有出现识别不到、花屏或者插拔蓝屏的问题。说实话这个兼容性结果比我预想的要好可能和芯片选型偏成熟方案有关VL817、PS186、RTL8153B 这几颗芯片在各大操作系统里都有很成熟的驱动支持厂商的兼容性测试不是白做的。最后测了一下整机待机功耗笔记本不充电、只有扩展坞自身空载工作时输入功率约 0.8W基本可以忽略。插上笔记本并正常充电时系统会按笔记本的请求把自己需要的功率拉过来扩展坞自身只消耗很小的比例分配策略符合预期。整套项目做下来物料成本大约在 180 元左右如果算上 PCB 打样和焊接工具摊到每一套的成本大约 220 元左右相比同级市售扩展坞还是有明显的价格优势更重要的是每一颗料、每一段走线我都知道它是干什么的出了问题也能自己修。最后再分享一个小技巧如果你不想完全从零画板也可以用现成的 VL817 Hub 模块、PS186 HDMI 模块和 PD 诱骗模块拼装出第一版验证方案跑通所有功能再自己画集成板这样能把芯片选型风险和PCB 设计风险分开排查项目成功率会高很多。
返回列表