
USB 2.0 扩展坞这东西看起来简单真动手做的时候才发现坑不少。市面上成品从十几块到上百块都有但内部用的什么主控、供电怎么处理、晶振走线有没有讲究基本没人告诉你。我这次用 SL2.1A 这颗主控芯片从头搭了一个一拖四的 USB 2.0 扩展坞从选型、画板、打样到实测跑数据完整走了一遍。SL2.1A 是一颗四端口 USB 2.0 HUB 主控QFN 封装外围器件少支持自供电和总线供电两种模式很适合个人小批量自制。这篇文章适合有基本焊接能力、想搞清楚扩展坞内部到底怎么回事的硬件爱好者也适合想拿它当练手项目的新手。我会把选型逻辑、电路设计要点、PCB 布局的坑、以及实测带宽数据全部摊开讲你照着做基本能少走八成弯路。1. 为什么选 SL2.1A 而不是拆一个成品板1.1 成品扩展坞拆开之后我看到了什么手头正好有几个不同价位的成品 USB 2.0 扩展坞我全拆了对比。十几块的那种里面通常是一颗打磨掉丝印的 COB 封装芯片直接黑胶点在板子上连型号都查不到。稍微贵一点的用 GL850G 或者 FE1.1s这两颗都是经典的四口 HUB 主控资料多、便宜、好买。但问题在于成品板为了压成本供电部分往往极其敷衍——有的直接用一根细走线从上行口取 5V 分给四个下行口连个像样的滤波电容都不舍得多放。你插一个移动硬盘上去电压直接掉到 4.5V 以下硬盘反复重启。我拆的那几个板子还有一个共性问题晶振走线又长又细有的甚至从晶振到芯片引脚绕了半个板子。USB 2.0 对时钟精度的要求是 ±500ppm晶振走线太长会引入寄生电容和干扰轻则枚举不稳定重则直接不识别。这些细节成品厂不会告诉你但你自己做的时候如果也这么干就会遇到一模一样的问题。1.2 SL2.1A 的核心参数与选型理由SL2.1A 是 CoreChips和芯出的一颗 USB 2.0 四口 HUB 控制器我选它的理由很直接封装友好QFN-28引脚间距 0.5mm手工焊接用热风枪或者铁板烧都能搞定比 BGA 友好太多。外围精简只需要一颗 12MHz 晶振、几个去耦电容、一个复位电路不需要外挂 EEPROM默认配置就够用。供电灵活支持自供电Self-Powered和总线供电Bus-Powered两种模式通过引脚配置切换做扩展坞的时候可以根据你的电源方案灵活选。资料相对齐全数据手册能拿到引脚定义清晰参考电路不复杂。对比一下常见的几颗型号封装晶振外围器件资料获取难度价格区间SL2.1AQFN-2812MHz少中等低GL850GSSOP-2812MHz少容易低FE1.1sSSOP-2812MHz少容易低SL2.1AQFN-2812MHz少中等低GL850G 和 FE1.1s 确实更常见资料也更多但我想试一颗不太一样的而且 SL2.1A 的 QFN 封装体积更小做出来的板子可以更紧凑。如果你是完全新手我建议先用 GL850G 练手SSOP 封装更容易焊。但如果你已经焊过 QFN 或者想挑战一下SL2.1A 完全值得一试。1.3 总线供电还是自供电这个选择决定了后面一半的设计这是很多人做扩展坞时最容易忽略的一个决策点。总线供电意味着整个扩展坞的电流全部来自上行口也就是插电脑的那个口USB 2.0 规范规定上行口最大提供 500mA。四个下行口如果都插满平均每个口只能分到 125mA连一个 2.5 寸移动硬盘启动电流通常 700mA~1A都带不动。自供电则是扩展坞自己接一个外部电源比如 5V DC 插座或者从别的地方取电下行口的电流由外部电源提供每个口可以给到 500mA 甚至更多。我这次做的是自供电方案因为我的使用场景里经常要插移动硬盘和多个 USB 设备总线供电根本不够用。注意如果你选总线供电SL2.1A 的配置引脚要拉到对应电平同时下行口的过流检测电阻要选对否则芯片会误判过流保护。2. 电路设计里那些数据手册不会强调的细节2.1 晶振电路12MHz 不是随便放上去就行SL2.1A 需要一颗 12MHz 的无源晶振配合两个负载电容。数据手册上通常写 22pF但实际取值要根据晶振的负载电容规格来算。公式是CL (C1 × C2) / (C1 C2) Cstray其中 Cstray 是 PCB 走线的寄生电容一般取 3~5pF。如果你用的晶振标称负载电容是 12pF那么 C1 和 C2 应该选 18~20pF 左右而不是无脑上 22pF。我第一版用了 22pF结果枚举偶尔失败换成 18pF 之后稳定了。晶振的走线要尽可能短最好控制在 10mm 以内并且包地处理。晶振下面不要走任何其他信号线尤其是 USB 差分对。我第二版把晶振挪到了芯片背面正下方走线长度不到 5mm效果明显更好。2.2 USB 差分对的阻抗控制90 欧姆不是闹着玩的USB 2.0 高速模式480Mbps要求差分对阻抗控制在 90Ω±10%。这个在四层板上比较容易实现但如果你用两层板就要靠走线宽度和间距来凑。以常见的 1.6mm 厚 FR-4 板材为例两层板想要做到 90Ω 差分阻抗走线宽度大约 0.3mm间距 0.15mm 左右具体数值要用阻抗计算工具算。我第一版用的是两层板差分对走线宽度 0.25mm、间距 0.2mm算下来阻抗大概 100Ω 出头实测高速设备比如 USB 3.0 的 U 盘插在 2.0 口上枚举成功率只有七成左右。第二版改成四层板差分对走线宽度 0.2mm、间距 0.15mm参考层完整阻抗控制在 90Ω 附近枚举成功率直接拉到百分之百。提示如果你只是做全速12Mbps设备阻抗要求没那么严格但既然 SL2.1A 支持高速没理由不做好。2.3 供电部分的去耦电容布局SL2.1A 的电源引脚需要去耦电容数据手册一般建议 0.1μF 和 10μF 组合。但关键在于布局位置0.1μF 必须尽可能靠近芯片的电源引脚最好在 2mm 以内否则高频噪声滤不掉。10μF 可以稍微远一点放在电源入口附近。我第一版把 0.1μF 放在了芯片旁边 5mm 左右的位置结果插上设备后偶尔出现掉线。后来把电容挪到紧贴引脚问题消失。这个细节看起来小但实际影响很大。另外自供电模式下外部 5V 电源进来之后要先经过一个肖特基二极管防止电流倒灌回电脑然后接一个大容量电解电容我用了 470μF做储能再分给四个下行口。每个下行口的 VBUS 引脚也要加 0.1μF 去耦。2.4 过流检测与电源开关SL2.1A 支持过流检测但需要你在每个下行口的 VBUS 上串一个采样电阻或者用专用的电源开关芯片。我为了简化设计用了两个双通道的电源开关芯片比如 MIC2025 之类的每个通道负责两个下行口。这样过流的时候芯片会自动切断输出保护主控和上行口。如果你不想用电源开关芯片也可以直接用电阻采样但精度和响应速度都不如专用芯片。我建议至少用电阻采样不要直接把 VBUS 短接过去否则一旦某个口短路整个扩展坞都可能挂掉。3. PCB 布局那些让我返工两次的坑3.1 第一版布局的错误差分对跨分割第一版板子我为了走线方便把 USB 差分对从地平面的一个缺口上方跨了过去。结果就是高速设备枚举极不稳定有时候插上去要等好几秒才识别。后来查资料才知道差分对跨分割会导致阻抗突变信号反射严重。第二版我把地平面做成完整的差分对下面没有任何分割问题解决。这个坑其实很典型很多人画两层板的时候地平面被各种走线割得七零八落差分对跨过去自己还不知道。我的建议是如果做 USB 2.0 高速尽量用四层板第二层完整地平面差分对走在顶层参考第二层。这样阻抗可控信号质量也有保障。3.2 晶振与 USB 差分对的距离晶振是板上最大的干扰源之一它的谐波可能会耦合到 USB 差分对上。我第二版把晶振放在了板子的一角距离最近的 USB 差分对超过 15mm并且中间用地线隔开。实测眼图比第一版干净很多。如果你实在空间紧张至少要在晶振周围包一圈地线并且晶振下面不要走任何信号线。晶振的两个负载电容也要紧贴晶振引脚走线尽量短。3.3 电源走线的宽度计算自供电模式下外部 5V 电源要给四个下行口供电总电流可能达到 2A 甚至更多。PCB 走线宽度要按电流来算。以 1oz 铜厚为例1mm 宽的走线大约能过 1A 电流温升 10°C 左右。如果你要过 2A走线宽度至少 2mm或者用铺铜的方式。我第一版电源走线只用了 0.5mm结果插满设备之后走线发热明显压降也大。第二版改成 2mm 宽并且在下行口附近铺了大面积铜皮压降从 0.3V 降到了 0.1V 以内。注意压降太大会导致设备供电不足尤其是移动硬盘这种对电压敏感的。USB 规范要求 VBUS 电压在 4.75V~5.25V 之间如果压降超过 0.25V加上线缆本身的压降设备端可能就只有 4.5V 了。3.4 连接器选型与固定USB-A 母座我选的是直插式的虽然比贴片式的占空间但机械强度好很多。贴片式的用久了容易松动尤其是经常插拔的场景。直插式的焊盘大焊接也更容易。固定方面我在板子四角留了 M3 螺丝孔准备装在一个 3D 打印的外壳里。如果你不打算做外壳至少要在板子背面贴一层绝缘垫防止短路。4. 焊接与调试从裸板到能用的完整过程4.1 QFN 封装的手工焊接方法SL2.1A 是 QFN-28引脚在芯片底部四周没有伸出引脚。手工焊接的步骤涂锡膏用针管把锡膏涂在焊盘上量不要多薄薄一层就行。放芯片用镊子把芯片放到焊盘上注意方向引脚 1 的位置看数据手册。热风枪加热风枪温度设 280~300°C风量调小对着芯片周围均匀加热。看到锡膏融化、芯片自动归位有轻微的“塌陷”感就差不多了。检查连锡用放大镜看引脚之间有没有连锡如果有用助焊剂加烙铁拖一下。我焊第一颗的时候风量开太大把芯片吹跑了浪费了一颗。后来把风量调到最小慢慢加热成功率就上来了。4.2 上电前的检查清单焊接完之后不要急着上电先做这几项检查用万用表测电源和地之间的电阻确认没有短路。正常应该在几百欧姆以上如果接近 0 欧姆说明有短路。检查晶振引脚有没有连锡。检查 USB 差分对有没有和相邻引脚短路。确认所有去耦电容都焊好了没有虚焊。我第一版就是没测短路直接上电结果 5V 电源直接拉低芯片发烫。后来发现是一个 0.1μF 电容焊反了其实是无极性电容但焊盘设计有问题导致短路。从那以后我每次上电前都测一遍。4.3 枚举测试与常见问题排查上电之后把扩展坞的上行口插到电脑上看设备管理器里有没有识别出 USB HUB。如果识别到了再插设备测试。常见问题现象可能原因排查方法完全不识别供电问题、晶振没起振测 5V 和 3.3V 电压用示波器看晶振识别但不稳定差分对阻抗不对、晶振走线太长检查 PCB 布局换负载电容插设备掉线供电不足、去耦电容位置不对测 VBUS 电压挪电容某个口不工作该口焊接不良、电源开关损坏换口测试检查焊接我遇到过一次插上设备后电脑提示“USB 端口电涌”原因是下行口的 VBUS 和地短路了电源开关芯片保护了。后来发现是 USB 母座的焊盘和地铺铜太近焊接的时候连锡了。5. 性能实测SL2.1A 到底能不能跑满 480Mbps5.1 测试环境与方法测试平台电脑一台带 USB 3.0 接口的笔记本扩展坞插在 3.0 口上但扩展坞本身是 2.0 的测试设备一个 USB 3.0 的固态 U 盘插在扩展坞上会协商到 2.0 高速模式、一个 USB 2.0 的读卡器、一个 2.5 寸移动硬盘测试软件CrystalDiskMark、HD Tune、以及自己写的一个批量读写脚本测试方法分别测试直连电脑和通过扩展坞连接的速度对比差异。每个设备测三次取平均值。5.2 带宽数据高速模式下的实际表现先看 U 盘的数据测试项目直连电脑通过扩展坞差异顺序读取42.3 MB/s41.8 MB/s-1.2%顺序写入38.7 MB/s37.9 MB/s-2.1%4K 随机读取8.2 MB/s7.9 MB/s-3.7%4K 随机写入6.5 MB/s6.1 MB/s-6.2%USB 2.0 高速模式的理论带宽是 480Mbps换算成字节是 60MB/s但实际有效载荷因为协议开销通常只能跑到 40MB/s 左右。从数据看通过扩展坞之后速度损失很小顺序读写基本在 2% 以内4K 随机性能损失稍大但也在可接受范围内。移动硬盘的数据测试项目直连电脑通过扩展坞差异顺序读取35.6 MB/s34.9 MB/s-2.0%顺序写入32.1 MB/s31.2 MB/s-2.8%移动硬盘的速度受限于机械盘本身USB 2.0 的带宽足够所以损失更小。5.3 多设备同时读写的带宽分配这是很多人关心的问题四个口同时插设备带宽怎么分USB 2.0 HUB 的架构是所有下行口共享上行口的 480Mbps 带宽。也就是说如果你同时读写两个设备总带宽不会超过 480Mbps。我实测了一下同时插两个 U 盘互相拷贝文件。总速度大约在 38MB/s 左右两个设备各分到 19MB/s。如果只插一个设备可以跑到 41MB/s。所以多设备场景下带宽是实打实被分掉的。提示如果你需要同时高速读写多个设备USB 2.0 HUB 满足不了得上 USB 3.0 HUB。但 USB 2.0 的好处是兼容性好几乎不会遇到驱动问题。5.4 供电能力实测带移动硬盘稳不稳自供电模式下我用一个 5V/3A 的电源适配器给扩展坞供电。实测四个口同时插设备口 12.5 寸移动硬盘启动电流约 800mA口 2U 盘约 100mA口 3读卡器约 200mA口 4手机充电约 500mA总电流约 1.6A5V 电源完全带得动。测每个口的 VBUS 电压最低的也有 4.92V在规范范围内。移动硬盘启动的时候没有出现掉盘或者异响。如果换成总线供电移动硬盘根本起不来电脑会直接提示“USB 端口电涌”或者设备反复重启。所以如果你要做扩展坞自供电是必须的。5.5 长时间运行的稳定性我让扩展坞连续跑了 48 小时四个口都插着设备每隔一段时间用脚本读写数据。期间没有出现掉线、枚举失败或者速度骤降的情况。芯片表面温度用红外测温枪测大约 42°C摸上去温热但不烫手。电源开关芯片温度稍高大约 48°C也在正常范围内。注意如果你把扩展坞放在密闭外壳里温度会更高建议留散热孔或者加个小散热片。6. 几个让我印象深刻的调试经历6.1 那颗让我怀疑人生的晶振第一版板子焊好之后插上电脑完全不识别。我测了电压5V 和 3.3V 都正常测了晶振用示波器看发现没有起振。换了一颗晶振还是不行。后来查了半天发现是负载电容焊错了——我用了 22pF但晶振的负载电容是 12pF算下来应该用 18pF。换掉之后立刻起振电脑也识别了。这件事让我明白数据手册上的“典型值”不一定适合你手头的物料一定要根据实际晶振的规格来算。6.2 差分对走线引发的枚举不稳定第二版板子刚焊好的时候插 U 盘有时候能识别有时候要插拔好几次。我用示波器看差分信号发现眼图张开度不够有明显的过冲和振铃。检查 PCB 发现差分对有一段跨了地平面的分割。用刀片把分割处刮开补了一根飞线让地平面完整问题立刻改善。后来重新打样了一版把地平面做完整就再也没出现过。6.3 电源开关芯片的选型教训我一开始为了省钱用了某款便宜的电源开关芯片结果发现它的导通电阻比较大约 100mΩ在 1A 电流下压降有 0.1V。加上线缆和连接器的压降设备端电压只有 4.7V 左右移动硬盘偶尔会掉盘。后来换了导通电阻更小的芯片约 50mΩ压降降到 0.05V问题解决。这个教训是电源路径上的每一个器件都要算压降不能只看价格。7. 做这个项目我学到的几件事SL2.1A 这颗芯片本身很靠谱外围简单性能也够用。但扩展坞这个东西芯片只是其中一环PCB 布局、供电设计、连接器选型、焊接工艺每一个环节都能决定最终成败。我前后打了三次板第一次差分对跨分割第二次晶振走线太长第三次才把所有问题都解决。如果你也想自己做我的建议是先用 GL850G 或者 FE1.1s 练手SSOP 封装好焊资料也多。等有经验了再上 SL2.1A 这种 QFN 封装的。PCB 尽量用四层板差分对阻抗控制好晶振走线短且包地电源走线够宽去耦电容紧贴引脚。做到这几点基本就能一次成功。实测数据也说明SL2.1A 做的扩展坞在高速模式下的性能损失很小顺序读写基本在 2% 以内带移动硬盘也稳。如果你需要一个稳定可靠的 USB 2.0 扩展坞这个方案完全值得一试。