ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于SL2.1A与无源晶振的USB 2.0扩展坞设计实战

基于SL2.1A与无源晶振的USB 2.0扩展坞设计实战 做USB 2.0扩展坞这件事我前前后后折腾了小半年。市面上成品扩展坞很便宜几十块钱就能买到但真到了自己设计电路、画板、调晶振、过枚举测试的时候坑远比想象中多。这篇文章就把我用SL2.1A这颗芯片加无源晶振做USB 2.0扩展坞的完整过程记录下来从选型思路到原理图细节从PCB布局到问题排查全部摊开来讲希望能给正在做或者准备做类似USB Hub设计的同行一点参考。SL2.1A是一颗很典型的USB 2.0 Hub控制器集成度比较高外围器件少非常适合做4端口扩展坞。无源晶振在这个方案里承担着给芯片提供基准时钟的角色选型、负载电容匹配、PCB走线任何一个环节出问题都会直接导致设备无法枚举或者识别不稳定。这个项目解决的核心问题就是在保证USB 2.0信号完整性的前提下用最简外围器件实现一个稳定、可量产、成本可控的4口扩展坞。不管是入门硬件设计的新手还是已经在做USB相关产品的工程师这篇文章都有参考价值。新手可以通过这个项目完整走一遍从原理图到调试的流程老手也可以看看我在晶振布局、电源处理和ESD保护上踩过哪些坑。1. 内容整体设计与思路拆解1.1 为什么选SL2.1A作为Hub主控市面上的USB 2.0 Hub控制器方案不少常见的有创惟GL850G、威锋VL817、汤铭FE1.1S以及我这次用的SL2.1A。选SL2.1A不是拍脑袋决定的当时列过一张对比清单核心考量是这么几点第一是外围器件的数量。SL2.1A内置了3.3V LDO稳压器意味着可以直接从USB端口的5V取电不需要额外增加一颗独立的LDO或者DC-DC芯片。对于USB 2.0这种5V/500mA的供电场景来说内置LDO的方案能省掉一路电源设计BOM成本直接降一截。第二是控制引脚的可配置性。SL2.1A支持Gang模式所有端口共享一个过流检测和Individual模式每个端口独立过流检测通过外部电阻上拉下拉就能配置灵活性比某些需要I2C配置的芯片高不少。对于不想在固件上花精力的场景纯硬件配置是最友好的。第三是供货稳定性和成本。这颗芯片在中低端Hub方案里用量非常大供应链很成熟单价也压得比较低做产品的话利润空间能留出来。对比一下其他方案GL850G是老牌方案稳是稳但外围要比SL2.1A多几个电阻电容Layout空间紧张的时候会比较难受VL817是USB 3.0时代的方案做USB 2.0纯属浪费FE1.1S虽然也便宜但我在测试中发现它的过流保护响应有延迟在某些U盘短路的情况下反应不够快。综合下来SL2.1A在成本、外围、稳定性之间取了一个很好的平衡点。1.2 无源晶振在这个设计里的角色SL2.1A这颗芯片对时钟的要求是12MHz的无源晶振。很多第一次做这个方案的工程师会问能不能用有源晶振能但没必要。无源晶振便宜一颗几毛钱而且是芯片内部振荡器电路配合外部晶体工作的SL2.1A本身就设计好了振荡回路外部只需要放两颗负载电容就行。有源晶振是完整的振荡器输出的是方波或正弦波优点是信号质量好但缺点是贵、体积大、还需要额外供电在消费级Hub这种对成本敏感的场合属于杀鸡用牛刀。无源晶振的关键点在于负载电容匹配和起振余量。晶振规格书上会写CL值比如12MHz的晶振常见有12pF、18pF、20pF这个CL决定了你外部要配多大的电容。晶振选型的时候另外一个容易被忽略的参数是等效串联电阻ESR。SL2.1A这种低功耗芯片的振荡器驱动能力有限如果晶振的ESR过高可能出现起振困难的情况尤其在低温环境下。实测下来选择ESR在40Ω以内的12MHz晶振比较稳超过60Ω就建议换别的批次试试。1.3 整个系统的供电架构考量USB 2.0端口的供电能力是5V/500mA这是规范规定的下限但实际设计扩展坞的时候这个电流要分配给Hub芯片自身和所有下行端口。SL2.1A芯片本身的功耗不高几十mA级别真正吃电流的是挂在下行端口上的设备。我的方案是上行端口取电5V进来之后先经过一个自恢复保险丝再并联几个电容滤波然后分两路一路进SL2.1A的VBUS引脚给芯片内部LDO供电另一路直接供给下行端口的VBUS。SL2.1A内部会处理过流检测每个下行端口都有一对过流检测引脚配合外部的检测电阻来控制。这个架构的好处是简洁但坏处是总电流受限。如果四个下行端口同时挂大功耗设备比如移动硬盘很可能超过上游端口的供电能力。所以我在设计里把每个下行端口的过流阈值设定在500mA左右宁可触发保护也不让它硬扛。实际测试中同时挂两个U盘加一个鼠标键盘接收器是没问题的但挂移动机械硬盘就有概率触发保护这个在应用场景上要提前说明。2. 核心细节解析与实操要点2.1 晶振电路设计负载电容计算的完整推导晶振电路是整个设计里最容易出问题但又最不被重视的部分。SL2.1A的XI和XO引脚之间接12MHz晶振两个引脚分别对地接负载电容按照典型值设计的话电容取18pF到22pF。负载电容的计算公式是CL (C1 * C2) / (C1 C2) Cstray其中C1和C2是两个外接电容的值Cstray是PCB走线和引脚本身的寄生电容一般取3pF到6pF。如果晶振规格书的CL要求是18pF你用的C1C230pF那么(30*30)/(3030)15pF加上6pF的寄生电容一共21pF这就有3pF的偏差了。频率偏差会随着负载电容偏离而变大导致USB枚举时序异常。我做这块板子的时候选的是CL20pF的12MHz晶振外部电容取33pF计算下来(33*33)/(3333)16.5pF加上走线寄生约4pF总共20.5pF非常接近目标值。实测起振很干脆频率偏差在10ppm以内。实际操作中建议这么做先按理论值贴片上电后用示波器或者频率计测量晶振两个引脚的波形频率如果偏差大于30ppm再调整电容。不要盲目相信计算值因为每块板子的走线寄生电容都不一样。2.2 复位电路与上电时序SL2.1A有一个复位引脚低电平有效。设计上要确保芯片上电时复位脚保持一段时间的低电平等电源稳定之后再释放芯片才能正常初始化。很多参考设计直接用一个10kΩ电阻把复位脚上拉到3.3V靠电源上升时间来实现上电复位。这种方式在电源上升沿很陡的时候没问题但如果电源上升缓慢芯片可能在上电瞬间处于不确定状态。我采用的方案是经典的RC复位电路复位脚接一个1uF电容到地同时接一个10kΩ电阻到3.3V。上电瞬间电容充电复位脚保持低电平大约10ms之后电容充满复位脚被拉高芯片开始工作。这个10ms的复位时间对于SL2.1A来说足够。实测中要注意如果复位时间太短比如小于1ms可能出现概率性的枚举失败表现为插上USB后系统识别不到设备必须重新拔插才行。这个坑我一开始就踩过后来看到SL2.1A的勘误手册里明确写了复位时间的要求才反应过来。2.3 USB差分信号线的布线规则USB 2.0的信号线是D和D-一对差分线速率480Mbps。虽然不像USB 3.0那么苛刻但也不代表可以随便走线。核心要求是三条差分阻抗90Ω、等长、完整参考地。差分阻抗90Ω这个要求在双层板上需要计算线宽和间距。我用的板厚1.6mmFR4材质走线宽度10mil间距8mil差分阻抗大约在90Ω附近。如果用的是四层板参考平面会更明确阻抗控制更容易但成本会高一些。等长的要求是D和D-之间的长度差控制在5mil以内。480Mbps的信号上升沿大约在几百皮秒5mil的走线长度差引入的时间偏差大约在0.8ps远小于信号上升沿的十分之一完全够用。完整参考地这个要求最容易被忽略。有些工程师喜欢在USB走线下面掏空一层以为这样能减少寄生电容但实际上把参考地掏空了差分信号的回路面积变大反而引入了更大的寄生电感和辐射噪声。正确的做法是USB走线下方保持完整的地平面不要开槽。2.4 ESD保护与EMI处理USB接口是热插拔接口静电放电是最大的威胁。SL2.1A芯片的引脚ESD耐受能力通常在2kV HBM但实际使用中热插拔的瞬间放电可能远高于这个值所以外部ESD保护是必须的。我在每个USB端口的D和D-线上并联了一颗USBLC6-2SC6或者类似规格的TVS阵列钳位电压控制在5V以内结电容控制在1pF以下这样才不会影响480Mbps的信号完整性。VBUS和GND之间放ESD保护同样重要我用的是双向TVS管钳位电压6.8V主要是防止热插拔瞬间的浪涌电流。EMI方面两个措施很有效一是在上行USB口加共模电感因为USB线缆走的是差模信号共模电感不会影响信号但对EMI辐射的抑制非常明显二是在Hub芯片的电源引脚附近放磁珠把芯片内部高频开关噪声和外部电源隔离。3. 实操过程与核心环节实现3.1 原理图设计步骤详解原理图是硬件设计的起始点我习惯把原理图分成几个模块逐一绘制电源输入模块USB上行端口的VBUS进来先放一个自恢复保险丝500mA规格然后并联100uF电解电容和0.1uF陶瓷电容各一个滤除低频和高频噪声。这里注意电解电容的耐压要选16V以上因为热插拔瞬间可能有电压尖峰。电源转换模块由于SL2.1A内置LDO外部不需要额外的电源芯片。5V直接进芯片的VBUS引脚芯片内部输出3.3V给内核和晶振电路供电。3.3V引脚外部还是要放几个去耦电容我用了10uF钽电容并联0.1uF陶瓷电容放在离引脚尽量近的位置。时钟模块12MHz无源晶振接XI和XO引脚两个33pF负载电容分别接地。晶振的两个引脚之间不需要并联电阻吗我测试下来SL2.1A内部已经内置了反馈电阻外部不需要再加。Hub配置模块根据需要的端口数量和过流模式设置相关引脚的上下拉。我做的4口Hub过流保护用Gang模式所有下行端口共享一个过流检测这样省掉了几个检测电阻。下行端口模块4个下行USB口每个的D和D-都从SL2.1A的对应引脚直接拉出去加ESD保护后接USB座。VBUS从上游5V直接供过去中间加自恢复保险丝和过流检测电阻。3.2 PCB布局的关键工艺细节PCB布局决定了这块板子能不能稳定工作比原理图更考验功力。我总结了一下实战中的关键点晶振要放在芯片的XI和XO引脚附近走线越短越好我控制在5mm以内。晶振下方不要走其他信号线尤其是电源线因为晶振工作时会在周围产生交变电磁场干扰附近的信号。去耦电容必须紧贴芯片电源引脚距离不要超过1mm。有些设计图省事把去耦电容放在板子边缘结果芯片电源引脚到电容之间的走线形成了一条天线高频噪声辐射出来EMC测试直接不过。USB差分对走线要优先布置其他信号线绕开它们走。我习惯把D和D-先走完然后用地线把它们围起来形成一个屏蔽效果。USB座的机械固定要可靠。如果USB座是插件式的引脚焊盘上的过孔要加大方便焊接和机械受力。如果USB座是贴片式的一定要加定位柱焊盘因为USB座在日常插拔中受力比较大没有定位柱很容易焊盘脱落。3.3 制造文件输出与打样验证原理图画完、PCB布完线、DRC检查通过之后就要输出生产文件了。我的输出清单是Gerber文件RS-274X格式、钻孔文件Excellon格式、BOM表、坐标文件SMT贴片用。打样回来之后第一次上电不要急着插USB先用万用表量一下电源对地阻抗确保没有短路然后量一下各关键节点的电压是否正确。确认电源正常后再插上电脑的USB口。第一次插上去如果没识别到设备优先检查晶振是否起振。用示波器探头点晶振引脚应该能看到12MHz的波形幅值大约几百毫伏如果是平的或者是一条直线那就是晶振电路的问题。3.4 从样板到量产硬件迭代要点样板调试通过后不要急着直接量产先小批量试产十几个在真实使用环境中跑几轮测试确认没有问题再放量。我在这个阶段发现过SMT贴片导致的晶振虚焊问题贴片厂回流焊温度曲线没调好晶振引脚有轻微虚焊导致部分板子低温起振困难。这批板子全部手工补焊后才敢发出去。量产还需要考虑的事情包括芯片的批次管理不同批次的SL2.1A在电气特性上可能有细微差异、晶振的供货稳定性不要频繁更换品牌型号每次更换都要重新验证匹配度、生产测试方案至少要做USB枚举测试和电流测试。4. 常见问题与排查技巧实录4.1 设备插入后无法识别这个是最常见的故障现象是插上扩展坞后电脑没有任何反应设备管理器里看不到新设备也不会有“叮咚”的插入提示音。排查步骤按优先级排列用示波器测量晶振引脚是否起振。没波形查晶振、负载电容是否焊好或者换一颗晶振试试。测量SL2.1A的3.3V电源是否正常。如果3.3V异常查5V输入、芯片电源引脚和去耦电容。测量复位引脚电压确认上电后能拉高。一直低查复位电容和电阻。量USB信号线D和D-的对地阻抗正常应该都在几十kΩ级别如果D或D-对地短路大概率是芯片焊接问题或者ESD保护管焊反了。如果以上都正常但依然无法识别把下行端口先断开只留上行口直连电脑。有时候是下行端口的某个设备引起整个Hub保护导致芯片完全不工作。4.2 能识别但设备反复断开重连这个现象的特征是插上能识别但几秒钟后掉线然后又重新识别反复循环。大概率是供电不足。测量一下Hub的VBUS电压如果负载状态下跌到4.5V以下说明上游供电能力不够或者自恢复保险丝阻值太大。我用的自恢复保险丝内阻在100mΩ左右5V在500mA下会掉50mV还在可接受范围内。如果用的是劣质保险丝内阻可能到300mΩ压降就不可接受了。也可能是USB差分信号质量差导致的链路不稳定。用示波器看D和D-的眼图如果眼图张不开或者有很多毛刺就要检查差分走线是否阻抗匹配、是否受到干扰。4.3 晶振起振困难的低温问题这个故障在北方冬天特别容易出现。室温正常时板子工作没问题拿到室外零下几度就罢工了拿回室内又恢复正常。原因就是晶振的起振条件在低温下变苛刻了。晶振的负性阻抗Negative Resistance余量不够外部电容偏大或者晶振ESR偏大都会让这个情况更严重。解决方法是加大芯片振荡器驱动能力看芯片寄存器配置有没有相关选项或者换个ESR更低的晶振或者调整外部负载电容。我最后的方案是把负载电容从33pF换成22pF负性阻抗余量大了不少低温起振问题彻底消失。这里有个教训晶振的负载电容不是越大越好。电容过大起振时间变长还会让晶振工作在过驱动状态长期运行有频漂风险。电容过小起振余量不够。要找到一个平衡点最好是通过高低温测试来验证。4.4 常见问题排查速查表故障现象可能原因排查方法解决措施设备无法识别晶振未起振示波器测晶振引脚波形检查焊接换晶振设备无法识别芯片电源异常万用表测3.3V输出检查输入电源和去耦电容设备无法识别复位脚未释放测复位脚电压检查RC复位电路参数反复断开重连供电不足测VBUS带载电压换低内阻保险丝或者限制功耗反复断开重连信号质量差示波器测眼图优化差分走线加共模电感低温无法起振晶振起振余量不足低温箱测试调整负载电容换低ESR晶振某个端口不工作过流保护触发测过流检测引脚检查下行端口负载复位后恢复个别板子不良焊接问题X-ray或者手动补焊优化钢网开孔调整回流焊曲线4.5 独门调试技巧分享调试USB Hub的时候我强烈建议备一个USB电流检测设备。这种小工具不贵能实时显示电流和电压插在上游端口和Hub之间瞬间就能判断是供电问题还是信号问题。另外一个技巧是准备一个自制的USB延长线把D和D-线引出来直接接到示波器上观察信号。USB 2.0设备在空闲时D会被拉高全速设备或者D-会被拉高低速设备通过观察总线上是否有这个电平变化就能判断Hub有没有正确识别到下行设备这个技巧在排查下行端口问题时非常实用。5. 工具选型与开发环境补充5.1 设计工具选择原理图和PCB绘制我用的是立创EDA专业版。以前用过Altium Designer但个人项目越来越依赖云端协作之后发现立创EDA的器件库完善度、在线元件库关联、BOM导出的便利性都不错尤其是SMT贴片可以直接对接嘉立创的商城库存省去了一步步找封装确认的精力。如果你用的是Altium或者KiCad这个设计流程同样适用。核心不在于用什么工具而在于你能不能把晶振匹配、差分走线、电源去耦这些设计规则落实到位。5.2 调试工具清单示波器带宽至少100MHz用来测晶振波形、USB信号质量。万用表用来测电压、阻抗、短路排查。USB电流检测器快速判断供电瓶颈。电烙铁和热风枪样板调试和维修必备。频率计可选精确测量晶振频率偏差。可调直流电源也值得准备一下从3V到6V逐步给扩展坞供电观察不同电压下的工作状态能发现一些USB热插拔时的异常行为。6. 写在最后的经验心得这个项目做完之后我有一个体会USB 2.0扩展坞看起来是成熟得不能再成熟的方案但真正做到稳定可靠还是需要把每个细节抠到位。晶振的这颗电容值差几个pF差分线的长度差几个milESD保护管的结电容大了一点都可能是一个隐藏的雷。自己从头设计一次USB Hub会对USB协议、供电机制、信号完整性产生比看书深刻得多的理解。这个项目作为硬件入门的练手项目非常合适复杂度适中产业链成熟改版成本低踩坑成本也可控。做的时候少看那些只讲理论的书多动手测、多试错经验就是这么一点一点攒出来的。最后再分享一个个人体会做硬件设计数据手册读三遍不如实测一次。SL2.1A的规格书写得再清楚到了实际板子上晶振有没有好好起振USB信号有没有畸变示波器上见真章。每一块功能正常的板子背后可能都有好几块调试到崩溃的样品。这个过程虽然折腾但值得。
返回列表