1. 项目缘起与整体设计思路
桌面上USB口永远不够用这件事,大概每个折腾硬件的人都深有体会。键盘、鼠标、调试器、串口模块、烧录器、移动硬盘,随便一插就满了,低头一看机箱后面还藏着一堆线。市售的USB HUB拆开看,方案五花八门,有的用FE1.1s,有的用GL850G,便宜是便宜,但总感觉少了点“自己动手”的乐趣。这次我选的是CH334R这颗芯片,配合立创EDA画板子,最后再给它做一个3D打印外壳,从电路到结构全部自己搞定。
CH334R是沁恒微电子推出的一款USB 2.0四口HUB控制器,QFN28封装,支持MTT模式,每个下游端口都能独立进行事务翻译,这点比很多单TT方案要厚道。它内置了5V转3.3V的LDO,外围器件很少,基本上一个12MHz晶振加几个电容电阻就能跑起来。选它的理由很直接:一是国产芯片供货稳定,二是立创商城有现货,三是封装不算太变态,QFN28虽然需要点焊接功底,但比起BGA已经友好太多了。
整个项目的目标很明确:做一个四口USB 2.0 HUB,上行端口用Type-C或者Type-A都行,下行四个Type-A口,每个口配一个独立的过流保护,LED指示灯必须有,最好还能支持外部供电切换。外壳方面,用3D打印做一个上下盖结构,卡扣或者螺丝固定都可以,关键是USB口的位置要精准,不能出现插不进去或者歪斜的情况。
这个项目适合谁呢?如果你已经会用立创EDA画简单的双层板,能看懂基本的原理图,会一点焊接,那就可以直接上手。如果你完全没画过PCB,也没关系,我会把每一步都拆开讲,包括布线的时候怎么处理差分对、星型接地怎么接、3D打印外壳的尺寸怎么留公差。整个流程走下来,大概需要两三个晚上,成本控制在五十块钱以内。
提示:CH334R有两个版本,CH334R和CH334L,前者是QFN28,后者是SOP16。SOP16焊接更容易,但引脚功能少一些,不支持外部供电切换。如果你对自己的焊接技术没信心,可以先从CH334L开始练手。
2. 核心器件选型与原理图设计要点
2.1 CH334R最小系统与外围电路
CH334R的引脚不算多,但有几个地方容易踩坑。先看供电:芯片的VDD5引脚接USB 5V输入,VDD33是内部LDO的输出,需要外接一个1uF到10uF的电容做滤波。注意,VDD33不能给外部负载供电,它只是内部逻辑和PLL的电源,电流能力很有限。如果你需要给下游端口提供大电流,必须用外部电源或者从上行端口直接取电。
晶振部分,CH334R支持12MHz无源晶振,负载电容建议用两个22pF,但实际调试的时候发现,有些晶振用15pF更稳。我的做法是先用22pF,如果发现枚举不稳定或者频繁掉线,再换成15pF试试。晶振的走线要尽量短,最好包地处理,不然容易干扰USB信号。
复位电路很简单,一个10k上拉电阻加一个100nF电容到地,复位引脚是低电平有效。LED指示灯方面,CH334R有四个下游端口的LED驱动引脚,可以直接接LED到3.3V,但要注意限流电阻的计算。假设LED压降是2V,电流取5mA,那么限流电阻就是(3.3-2)/0.005=260欧姆,取270欧姆或者300欧姆都可以。
过流保护这块,我用了四个自恢复保险丝,型号是MF-MSMF050,保持电流0.5A,跳闸电流1A。每个下游端口的VBUS线上串一个,然后接到CH334R的过流检测引脚。注意,过流检测引脚是低电平有效,所以需要配合上拉电阻使用。如果你不想用自恢复保险丝,也可以用普通的限流开关芯片,比如MIC2025,但成本会高一些。
2.2 上行端口与供电切换设计
上行端口我选了Type-C,因为现在笔记本和台式机都开始普及Type-C了。Type-C座子用16Pin的,只接USB 2.0的D+和D-,CC引脚各接一个5.1k下拉电阻到地,这样主机就能识别到设备插入。VBUS直接接5V,不需要PD协议,因为HUB本身不耗电,下游端口的电流也是从上行端口取的。
供电切换这部分,我加了一个DC-DC插座,型号是DC-005,内正外负。当外部电源插入时,通过一个PMOS管自动切断上行端口的5V,改用外部电源供电。PMOS选的是AO3401,导通电阻只有50毫欧,压降很小。栅极通过一个10k电阻上拉到外部5V,当外部电源存在时,栅极是高电平,PMOS关断;当外部电源拔掉时,栅极被下拉到地,PMOS导通,上行端口的5V就能通过。
这个电路的好处是,你不需要手动拨开关,插上外部电源就自动切换。但要注意,外部电源的电压不能超过5.5V,否则可能损坏CH334R。另外,如果外部电源和上行端口同时供电,PMOS的体二极管可能会让电流倒灌,所以最好在PMOS的源极和漏极之间加一个肖特基二极管做保护。
2.3 立创EDA原理图绘制与元件库管理
立创EDA专业版的元件库很全,CH334R可以直接搜到,但要注意封装是不是QFN28。我一般会先确认立创商城的库存和封装,然后在EDA里搜索对应的元件。如果找不到,可以自己画一个,QFN28的焊盘尺寸是0.5mm间距,焊盘宽度0.3mm,长度0.8mm,中间散热焊盘是3.2mm x 3.2mm。
画原理图的时候,我习惯把功能模块分开,比如电源部分、晶振部分、USB下行部分、LED指示部分,每个模块用框线隔开。这样检查的时候不容易漏掉。网络标签要统一命名,比如VBUS_5V、GND、USB_DP1、USB_DM1,不要用自动生成的网络名,不然PCB布线的时候会乱。
注意:立创EDA专业版和标准版的元件库不通用,如果你用的是专业版,导入标准版的工程可能会丢失元件。建议一开始就选定一个版本,不要中途切换。
3. PCB布局布线与星型接地实操
3.1 双层板布局规划与差分对走线
PCB我画的是双层板,尺寸是45mm x 35mm,刚好能放下四个Type-A口和一个Type-C口。布局的时候,CH334R放在板子中间偏上,晶振紧挨着芯片的XI和XO引脚,走线长度不超过5mm。四个下行Type-A口放在板子下边缘,间距15mm,这样插拔的时候不会互相干扰。
差分对走线是USB 2.0的关键。D+和D-的线宽我设的是0.2mm,间距0.15mm,尽量保持等长。如果实在做不到等长,误差控制在5mil以内。差分对不要走过孔,如果必须换层,要在过孔旁边加地过孔,提供回流路径。上行端口的差分对从Type-C座子出来,直接走到CH334R的DPU和DMU引脚,中间不要经过任何其他信号。
下行端口的差分对从芯片出来,分别走到四个Type-A座子。这里有个细节:CH334R的四个下行端口差分对是分开的,不要为了省事把D+和D-并联在一起,那样会导致信号反射,枚举失败。每个端口的差分对要独立走线,间距至少3倍线宽,避免串扰。
3.2 星型接地与电源平面处理
星型接地这个说法,在USB HUB这种混合信号电路里特别重要。我的做法是,把CH334R的GND引脚、晶振的负载电容地、USB座子的屏蔽地,分别用独立的走线连接到板子中间的一个接地点,这个接地点再通过一个0欧姆电阻或者磁珠连接到总地。这样做的目的是防止数字地和模拟地之间的噪声互相干扰。
电源部分,5V的走线要尽量粗,我用的线宽是0.5mm,能过1A左右的电流。3.3V的走线可以细一点,0.3mm就够了。每个电源引脚旁边都要放一个100nF的退耦电容,尽量靠近引脚,走线先经过电容再到引脚。CH334R的VDD33引脚旁边我放了两个电容,一个1uF,一个100nF,并联使用。
地平面方面,底层尽量铺完整的地铜,不要被信号线割裂。如果实在避不开,可以在割裂的地方加缝合过孔,把上下两层地连起来。USB座子的金属外壳要接到地,但不要直接接到信号地,最好通过一个1M电阻和一个1000pF电容并联到地,这样既能泄放静电,又不会引入低频噪声。
3.3 过流保护与LED指示布线细节
过流保护的自恢复保险丝放在Type-A座子的VBUS线上,尽量靠近座子。保险丝后面接一个0.1欧姆的采样电阻,然后接到CH334R的过流检测引脚。采样电阻的走线要开尔文连接,也就是从电阻的两端分别引线到芯片,不要从电阻的焊盘中间引线,不然采样精度会受影响。
LED指示灯放在板子边缘,方便观察。每个LED的限流电阻放在LED和CH334R之间,不要放在LED和地之间,因为CH334R的LED驱动引脚是开漏输出,低电平有效。如果你把电阻放在LED和地之间,LED会一直亮,因为开漏输出低电平的时候,电流会从3.3V经过LED和电阻到地,但开漏输出高电平的时候,LED也会通过电阻到地形成回路,虽然电流很小,但LED会微亮。
实操心得:立创EDA的DRC检查一定要跑,特别是差分对的等长检查和间距检查。我一开始忘了设置差分对规则,结果DRC报了一堆错,后来在规则里添加了差分对,把D+和D-设为一组,才通过检查。
4. 焊接调试与3D打印外壳制作
4.1 QFN28焊接与上电测试流程
QFN28的焊接是第一个难点。我的做法是先用烙铁在焊盘上镀一层薄锡,注意不要太多,不然芯片放上去会浮起来。然后把芯片对准位置放好,用热风枪调至280度,风量调到最小,对着芯片周围吹,看到锡融化后,用镊子轻轻按压芯片,让引脚和焊盘充分接触。冷却后,用放大镜检查有没有虚焊或者连锡。
上电之前,先用万用表测一下5V和3.3V之间有没有短路。如果没有短路,再插上USB线,测3.3V输出是否正常。如果3.3V正常,但电脑没有识别到HUB,先检查晶振有没有起振。可以用示波器测XI引脚,应该有12MHz的正弦波,幅度大概1V左右。如果没有起振,检查负载电容和晶振本身。
如果电脑识别到了HUB,但下游端口不能用,先检查过流检测引脚的电平。正常应该是高电平,如果被拉低了,说明保险丝跳闸了,或者采样电阻焊错了。另外,CH334R的配置引脚也要检查,比如MTT模式和STT模式的选择,如果配置错了,下游端口可能只能工作在USB 1.1模式。
4.2 3D打印外壳建模与公差控制
外壳我用的是Fusion 360建模,上下盖结构,四个角用M3螺丝固定。内部尺寸比PCB大0.5mm,也就是45.5mm x 35.5mm,这样PCB放进去不会太紧。USB口的位置要留出足够的空间,Type-A口的开口尺寸是13.5mm x 6.5mm,比标准USB口稍微大一点,方便插拔。Type-C口的开口是9mm x 3.5mm。
打印的时候,我用的材料是PETG,层高0.2mm,填充20%,壁厚1.2mm。PETG的韧性比PLA好,不容易开裂。打印温度230度,热床80度,速度50mm/s。如果打印出来的外壳有毛刺,可以用砂纸打磨一下,特别是USB口的边缘,不然会刮伤线缆。
公差方面,螺丝孔我留的是3.2mm,M3螺丝能轻松穿过。上下盖的配合面留了0.2mm的间隙,这样合起来不会太紧。如果打印精度不够,可以把间隙放大到0.3mm。卡扣结构我试过,但PETG的弹性不如ABS,卡扣容易断,所以最后还是用了螺丝。
4.3 整机装配与性能实测
装配的时候,先把PCB固定在下盖上,用M3螺丝拧紧。然后把上盖盖上,拧上螺丝。注意,USB座子的金属外壳要和外壳的开口对齐,如果歪了,插线的时候会很难受。我一开始没注意,结果Type-C口偏了1mm,插线的时候要用力才能插进去,后来重新打印了一个上盖才解决。
性能测试方面,我用CrystalDiskMark测了一下移动硬盘的读写速度。直接插在电脑上,读取速度是120MB/s,写入是80MB/s。通过HUB之后,读取速度是118MB/s,写入是78MB/s,几乎没损失。这说明CH334R的MTT模式确实有用,每个端口都能独立进行事务翻译,不会因为一个端口传大文件而影响其他端口。
另外,我同时插了四个设备:键盘、鼠标、U盘、移动硬盘,都能正常识别。移动硬盘拷贝文件的时候,键盘和鼠标也没有出现卡顿。这说明过流保护和电源设计是合理的,没有出现供电不足的情况。
常见问题:如果HUB插上电脑后,电脑提示“USB端口电涌”,说明下游端口的电流超过了500mA。检查一下是不是某个端口的保险丝选小了,或者采样电阻焊错了。另外,如果HUB发热严重,检查一下CH334R的散热焊盘有没有焊好,QFN28的散热焊盘必须接地,不然芯片会过热。
5. 常见问题排查与独家避坑经验
5.1 枚举失败与信号完整性排查
枚举失败是USB HUB最常见的故障。如果电脑完全没反应,先检查上行端口的D+和D-有没有接反。CH334R的DPU和DMU引脚,DPU接D+,DMU接D-,不要搞混。如果接反了,电脑会识别到一个未知设备,但不会识别成HUB。
如果电脑识别到了HUB,但提示“设备描述符请求失败”,通常是晶振的问题。CH334R对晶振的要求比较高,负载电容不匹配会导致频率偏移,从而影响USB通信。我的经验是,先用22pF,如果不行就换15pF,再不行就换晶振品牌。我试过几种晶振,最后发现某国产晶振用15pF最稳。
信号完整性方面,差分对的阻抗要控制在90欧姆左右。双层板的话,线宽0.2mm,间距0.15mm,介质厚度1.6mm,算下来阻抗大概是85欧姆,稍微偏低,但实测能用。如果你用的是四层板,可以把差分对走在内层,参考平面完整,阻抗更容易控制。
5.2 供电不足与过热问题处理
供电不足的表现是,插上移动硬盘后,硬盘反复重启,或者电脑提示“USB端口电涌”。先测一下上行端口的5V电压,如果低于4.75V,说明线缆压降太大,换一根短一点的粗线试试。如果电压正常,但下游端口带不动负载,检查保险丝的保持电流是不是太小了。我用的0.5A保险丝,带移动硬盘没问题,但如果你要带两个移动硬盘,建议换成1A的。
过热问题,CH334R在满负载的时候会有点温热,但不应该烫手。如果烫手,说明散热焊盘没焊好,或者芯片内部短路了。QFN28的散热焊盘必须接地,而且要在焊盘上打几个过孔,把热量传到背面。我打了9个过孔,孔径0.3mm,间距1mm,散热效果很好。
5.3 3D打印外壳装配问题速查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| USB口插不进去 | 开口尺寸偏小 | 把开口放大0.5mm |
| 上下盖合不拢 | 配合面有毛刺 | 用砂纸打磨配合面 |
| 螺丝孔滑丝 | 螺丝孔太小 | 把螺丝孔放大到3.4mm |
| 外壳开裂 | 填充率太低 | 把填充率提高到30% |
| PCB晃动 | 内部尺寸太大 | 在内部加几条加强筋 |
独家避坑:3D打印外壳的时候,不要一次性打印上下盖,先打印下盖,把PCB放进去试一下,确认尺寸没问题再打印上盖。我一开始两个一起打印,结果下盖尺寸偏小,PCB放不进去,上盖也白打印了,浪费了两个小时。
6. 项目扩展与个人实操体会
这个HUB做完之后,我又想了想还能怎么改。一个是把Type-A口换成Type-C口,现在很多设备都是C口了,四个C口的HUB会更实用。但CH334R只支持USB 2.0,C口的话只能跑480Mbps,如果你想要USB 3.0,得换芯片,比如GL3510或者VL817,但那些芯片是QFN64或者QFN76,焊接难度更大,PCB也要四层板。
另一个扩展方向是加一个SD卡读卡器,用GL823K或者GL827L,通过USB HUB的下行端口接进去。这样HUB和读卡器二合一,桌面会更整洁。但要注意,读卡器的差分对也要独立走线,不能和HUB的下行端口共用。
我个人在实际操作中的体会是,CH334R这颗芯片很适合入门,外围简单,成本低,性能也够用。立创EDA画这种双层板完全没问题,元件库全,DRC检查也够用。3D打印外壳这块,PETG比PLA更适合做这种需要一定韧性的结构件,但打印精度要调好,不然公差很难控制。
最后再分享一个小技巧:如果你没有热风枪,可以用烙铁加锡膏来焊QFN28。先在焊盘上涂一层锡膏,把芯片放上去,然后用烙铁在芯片边缘来回加热,锡膏融化后会自动吸附到引脚上。这个方法需要一点练习,但成功率不低。焊完之后,一定要用放大镜检查,确保没有连锡。