ARTICLE DETAIL

资讯详情

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

USB 2.0扩展坞设计实战:SL2.1A芯片与无源晶振匹配要点

USB 2.0扩展坞设计实战:SL2.1A芯片与无源晶振匹配要点 我第一次做USB 2.0扩展坞的时候拿到SL2.1A样片觉得这也就是个“HUB芯片几个USB座一颗晶振”的活。晶振随手找了一颗12MHz无源晶振按网上的通用电路焊上去结果打样回来一上电电脑一点反应都没有——设备管理器纹丝不动连“未知设备”都不给我留一个。用示波器去点D/D-完全没有上拉动作折腾一整天最后发现罪魁祸首就是那颗我根本没当回事的无源晶振外围匹配电容没按芯片手册来振荡器根本没正常工作。这篇文章想把整套设计过程重新推演一遍。先讲为什么选SL2.1A这颗Hub芯片然后重点拆解无源晶振的参数、匹配电容计算和PCB处理再把原理图、Layout上容易踩的坑一条条列出来最后是我调试“枚举失败”时的完整排查链路。内容适合准备做USB 2.0扩展坞、USB HUB或者想在嵌入式主板上扩展USB口的朋友硬件新手也能顺着走下来。1. 为什么几个USB口也要慎重选型SL2.1A这颗Hub芯片的定位1.1 SL2.1A到底是什么样的芯片SL2.1A是一颗国产USB 2.0 Hub控制器我用的这颗是四路下行端口版本也有其它端口数的封装。它的定位很清晰把电脑或主机的一个USB口扩展成多个USB口内部集成了USB 2.0 PHY和SIE支持高速480Mbps、全速12Mbps、低速1.5Mbps设备的转发和切换外置BOM非常少。芯片内部一般会集成LDO稳压器外部只需要5V供进来内部转出3.3V给核心和IO使用所以不需要额外再放一颗AMS1117之类的外部LDO。这对硬件设计来说省了很多事板上核心的电源转换就从一个“模块级设计”降级成“加几个滤波电容”的事。另外它还带有过流检测相关的引脚配合外部限流开关可以做成相对规范的多口供电控制方案。这颗芯片常见于USB 2.0扩展坞、工控机的内置USB扩展板、显示器Hub、键鼠接收器集合器等场景。成本低、外围少、通讯协议栈都是芯片自己处理不需要单片机参与所以非常适合“只要扩口、不要做复杂逻辑”的产品。1.2 无源晶振有源晶振我为什么选了前者同样是给SL2.1A提供参考时钟市场上确实有人用有源晶振但绝大多数厂商和方案商都用无源晶振。这不是偷工减料而是由芯片内部的时钟电路决定的。SL2.1A内部自带振荡反相放大器外部只需要接一颗石英晶体和两颗匹配电容就能构成完整的皮尔斯振荡器。无源晶振本身不会自己振荡它只是把机械谐振特性提供给内部放大器让整个环路在特定频率上稳定起振。有源晶振则是一个完整的振荡模块内部有晶振、放大器、整形电路上电直接输出方波或正弦波时钟。对比项无源晶振晶体有源晶振振荡器成本低通常几毛钱高通常是前者的3~5倍或更高引脚数2个引脚本体4个引脚电源、地、输出、使能是否需要芯片内部放大器配合需要不需要输出波形近似正弦波方波频率精度±10ppm~±30ppm够用可以做到更高外围元件两个匹配电容有时加反馈电阻基本不需要PCB面积小大故障点需要检查起振条件和匹配容易出问题相对少SL2.1A这种Hub芯片对参考时钟的频率精度要求并不苛刻无源晶振±20ppm左右完全够内部PLL会把12MHz倍频到需要的480MHz。所以用有源晶振属于“杀鸡用牛刀”除了多花钱、多占面积没有任何实际收益。我选无源晶振的结论很明确成本低、体积小、芯片本来就支持重点是外围要设计对。1.3 一个典型USB 2.0扩展坞由什么组成把整个扩展坞拆开看其实就是四段上行端口、Hub控制器、下行端口、电源管理。上行端口一般是一个Type-A公头或者Micro-B母座用来接主机下行端口是若干个Type-A母座给U盘、键鼠接收器、摄像头这类设备用。信号路径是主机 - 上行USB口 - ESD保护 - SL2.1A上行端口。芯片内部做转发从下行端口输出 - 串联电阻 - ESD保护 - Type-A母座。电源路径是上行VBUS的5V - 输入滤波和防浪涌 - SL2.1A的电源引脚 - 内部LDO转3.3V - 各下行端口的VBUS限流开关。时钟路径最简单一颗12MHz无源晶振 两颗匹配电容接在芯片的XI/XO引脚。整板设计难度并不高但每一步都有细节。下面就从那颗让我翻车的无源晶振开始逐段拆开讲。2. 无源晶振不是焊一个上去就行从原理到参数计算2.1 无源晶振到底是怎么起振的无源晶振的实质是一个石英晶体谐振器可以把它想象成一根音叉。石英晶体在特定频率上有机械谐振特性外部给它一个电激励它会以固有频率振动同时晶体本身的压电效应会把机械振动转换回电信号。问题在于这种振动衰减很快如果没有人持续补充能量起振之后几毫秒就停了。SL2.1A芯片内部的反相放大器就承担“持续补充能量”的角色。放大器从晶体一端取信号、放大、移相再送回晶体另一端形成一个正反馈环路。环路里同时需要负载电容来调整振荡频率、补偿相位这就解释了为什么无源晶振不能只接一个晶体就完事两颗匹配电容不是可有可无的装饰品。补充一个很多人不知道的细节晶振电路里可能还需要并联一颗1MΩ到10MΩ的反馈电阻它的作用是给放大器提供直流工作点。不少Hub芯片内部已经集成了这颗反馈电阻数据手册里如果没提外部需要那就是内置了如果电路参考设计里明确画出了Rf那就要老老实实焊上否则直流工作点不对一样起不了振。2.2 选晶振时盯住哪几个参数很多工程师选晶振只看频率这是最容易翻车的地方。对无源晶振来说至少要看下面几个参数参数影响我常用的选型建议频率决定Hub的工作时钟12MHz必须与数据手册严格一致负载电容CL决定外部匹配电容取值按手册要求常见6pF~20pF等效串联电阻ESR决定起振难度越低越好一般不超过80Ω频率容差影响USB信号时序±20ppm够用温度特性影响高低温环境稳定性消费级即可车载等场景选宽温封装影响Layout和焊接工艺3225/2520焊盘友好小批量手工焊选3215以上ESR这个参数特别容易被忽略。ESR越大振荡环路损耗越大起振越困难极端情况下芯片内部放大器的增益不足以补偿损耗电路就不起振。低温环境下晶振ESR会升高所以如果是做户外或车载产品选ESR偏低的上限余量能大一倍。2.3 匹配电容到底怎么算两颗匹配电容不是随便选个“22pF”就行的。SL2.1A这类芯片的XI/XO引脚上看进去晶振的负载电容要求和外部匹配电容的关系是[ C_L \frac{C_1 \times C_2}{C_1 C_2} C_{stray} ]其中CL是晶振标称的负载电容C1和C2是XI、XO对地的两颗外部电容Cstray是PCB走线、芯片引脚等带来的杂散电容通常估算3pF到5pF。举一个实际计算例子。假设我手上的12MHz晶振标称CL 12pFPCB走线很短估算Cstray 3pF。取C1 C2 18pF时串联合并后是9pF加上3pF杂散正好12pF和晶振标称一致。如果把两颗电容换成22pF那实际负载就变成11 3 14pF频率会偏低一点偏差大了主机可能识别不到设备或者传输误码率升高。最稳妥的做法是第一版直接照抄数据手册里的参考电路值等板子回来实测起振波形和频率偏差之后再做微调。不要上来就自己“优化”你不是在和厂商的参考设计比赛。2.4 晶振过激励和负阻常规文档里不会写的东西晶振起振之后还有一个看不见的问题过激励。如果环路增益太高晶振两端的驱动功率超过规格晶体就会发热频率漂移长期可靠性下降严重时直接碎裂。检查方法是用电流探头测晶振功耗或者干脆摸温度晶振明显发烫大概率过激励了。解决过激励的办法有两个方向一是适当增大外部匹配电容降低环路增益二是在XI或XO引脚上串联一颗几十欧姆的电阻限制驱动电流。但电阻加太大会导致起振困难一般从10Ω开始试不行再加大。负阻这个概念也值得提。负阻可以简单理解为“芯片放大器给晶振提供的额外能量”。工程上用串阻法测在晶振回路里串一颗可变电阻从0开始增大直到振荡器停振这时候的串阻值加上晶振ESR就是负阻的近似值。常规经验是负阻至少要是晶振ESR的3到5倍低于这个值说明起振裕量不足高低温或批次离散时大概率出问题。我第一次调试那块扩展坞就是匹配电容完全不对导致负阻裕量不够温度一高点就彻底罢工。3. 原理图设计最容易翻车的几个外围细节3.1 电源路径5V进来之后怎么办扩展坞的电源输入来自上游USB口的VBUS正常情况下就是5V但热插拔瞬间会有很大的浪涌电流和电压跌落所以输入级不能只放一个100nF电容了事。我的做法是在VBUS入口放一个10μF~22μF的陶瓷电容再串联一颗磁珠或小阻值电阻进Hub芯片的电源输入分支。磁珠的作用是吸收高频噪声隔离上下行电源之间的干扰。SL2.1A的VDD33引脚如果内部有LDO输出外面要有足够的储能电容至少4.7μF 100nF组合摆放时紧挨引脚。下行端口的VBUS供电不要直接从5V输入硬拉。USB 2.0规范要求每个下行端口具备过流保护能力所以每个端口的VBUS最好都过一个独立的限流开关。如果芯片自带过流检测引脚就把限流开关的过流标志输出接到对应引脚上如果没有也要用GPIO或直接接个比较器电路做检测。选限流开关常见的型号有RT9742、MIC2026、AP2141等额定电流按500mA~1A选。3.2 D/D-上到底要不要加电阻很多第一次画USB电路的人会问D/D-线上需要串联电阻吗答案是通常需要但不是必须。芯片到USB座之间如果走线较长、板材和过孔带来的寄生电容较明显信号边沿会产生过冲和振铃。在D/D-靠近芯片一侧各串联一颗22Ω左右的电阻可以抑制振铃、减小EMI。这个电阻值不是拍脑袋定的它会和PCB走线阻抗、接收端输入电容形成一个RC回路22Ω是工程师经过实践检验最通用的起点。走线短、板子小可以直接选用0Ω或省略走线超过20mm建议焊上22Ω。上拉/下拉电阻一定要搞清楚。USB设备识别靠的是D或D-上的上拉全速设备在D上拉1.5kΩ低速设备在D-上拉1.5kΩ主机通过检测这个上拉判断有没有设备插入。高速设备握手时需要把上拉断开改由内部电流源驱动这个切换由芯片自己完成。很多Hub芯片内部已经把15kΩ下拉和1.5kΩ上拉处理好了但一定要去数据手册里确认如果芯片没有集成上拉你需要在外围补上否则主机永远检测不到设备。3.3 ESD和过流保护不是可选项USB口是用户经常热插拔的接口人体静电放电随时可能发生。千万别省ESD保护器件否则芯片损坏率会高得离谱。USB 2.0数据线上的ESD防护不能用普通TVS因为普通TVS结电容太大会直接把高速信号弄变形。要选低结电容的专用USB ESD保护阵列比如USBLC6-2这类结电容通常在0.5pF~2pF既能泄放静电又不影响信号完整性。摆放位置要靠近USB座ESD保护器件到座子的走线越短越好保证静电在进入板内之前就被泻放到地。3.4 指示灯、拨码和测试点指示灯这个环节看似简单但限流电阻算不好会出问题。常见的发光二极管压降约2V电流取5~10mA5V供电时5 - 2/ 0.007 ≈ 430Ω取330Ω到470Ω都合理。LED不要直接并联在VBUS上否则关机后USB口可能因为LED反向漏电导致信号异常最好挂在芯片的GPIO或电源指示灯引脚上。测试点也不能省。D/D-上预留两组焊盘测试点方便示波器探头夹上去看波形晶振的XI脚也留个测试点排查起振问题时不至于拿万用表笔去戳芯片引脚。板上再留几个GND测试孔示波器地线夹子越短测出来的波形越真实。4. PCB布局布线这块板子能不能稳定工作全看这一步4.1 USB 2.0布线的两个核心指标阻抗和等长USB 2.0高速模式虽然只有480Mbps但对PCB的要求已经不能按普通低频信号处理了。D/D-是一对差分信号目标阻抗是90Ω±10%。差分阻抗不是两根线各自对地的阻抗而是两根线互相耦合之后形成的等效阻抗就像两个人并排跑步不能只看单人配速还要看两人的相对位置和节奏。两层板条件下走线宽度0.15mm、间距0.2mm参考底层完整铺地差分阻抗大致能落在90Ω附近。四层板更容易控制信号层到参考层通常只有0.1mm~0.2mm线宽线距参考厂商阻抗计算工具即可。等长也重要。D/D-长度差大会让差分信号的交叉点偏移接收端采样窗口变小严重时高速模式下通信失败。一块小板子长度差控制在5mil以内比较稳。另外USB信号线上不要打过孔一个过孔就是一个阻抗不连续点能少就少实在要换层过孔旁边要加地孔做回流。4.2 晶振区域要像“隔离病房”一样处理晶振电路在全板里属于“娇气”的部分。布局时晶振要贴在SL2.1A的XI/XO引脚旁边匹配电容也要紧贴晶振三者之间的距离总共不要超过5mm。从芯片引脚出来先到晶振再到电容然后才允许走线到其它地方。晶振下方不要铺设其它信号线最好把该区域的地铜铺开形成一个干净的参考地。如果有条件在晶振区域外围画一圈地孔隔离带把晶振和旁边的开关电源、USB信号完全隔开。如果地平面下方正好有DDR、SD卡这类高速数字走线穿过一定会引入干扰起振不稳只是第一步更麻烦的是频率抖动导致USB传输误码。4.3 电源与地回流的“主街”意识PCB设计里最容易忽视的其实是电流回流路径。任何一个信号的传输电流都是从驱动端出发经过信号线到接收端再从地平面流回驱动端。问题是很多人只关心信号线走得好不好完全不看地回流路径。USB座的GND引脚要就近、尽量短地接入地平面不要用细线绕一大圈再接。下行端口插上大电流设备时瞬间回流电流会在地平面上形成噪声这个噪声如果串到D/D-下方信号质量直接崩掉。解决思路是电源地、信号地先分区处理在Hub芯片附近单点汇聚或者保证完整地平面让回流路径自然最短。四层板“信号-地-电源-信号”的结构最好用2层板则要保证底层大面积铺地U盘这类大电流设备的GND回流路径要和D/D-走线重叠最短。4.4 从插口到芯片的布局顺序建议我画这块板子的最终布局顺序是上行USB口放在板子一端先经过ESD保护再进入SL2.1A的上行端口Hub芯片放在板子中央偏上四个下行Type-A口排成一行从芯片下行端口出来先串接22Ω电阻再过ESD保护最后到USB座。这样做的好处是D/D-走线最短、分支最少。Hub芯片到四个下行口的走线不可避免会有“T型”分支分支点要尽量靠近芯片引脚侧避免在靠近USB座的位置做分支否则从座子侧反射回来的信号会在分支点形成严重的反射叠加。整体布局多花十分钟后面调试省一天。5. 上电调试一次枚举失败的完整排查链路5.1 先量电源再量晶振不要一上来怀疑芯片我的板子第一次上电Windows完全识别不到设备。这时候不要急着换芯片按链路一步一步来。第一步量SL2.1A的所有电源引脚确认VDD33正常。万用表量到3.3V不等于电源就干净最好用示波器看纹波超过100mV就要检查电容。第二步测晶振。用示波器探头点在XI脚或晶振本体的一端应该能看到幅度约1V~3.3V的稳定正弦波。如果完全没有波形先检查匹配电容有没有贴反、贴错再检查晶振和芯片之间的走线有没有断。如果波形存在但是幅度很小且不稳定多半是负阻裕量不够换个ESR更低的晶振或者调整匹配电容。第三步可以用串阻法快速评估起振裕量在晶振回路里临时串入一个可调电阻从1kΩ开始缓慢增加如果加到3kΩ~5kΩ振荡还在说明裕量充足如果几百欧姆就不振了那高低温时必出问题。5.2 D/D-硬件问题排查晶振正常、电源正常但主机还是不认设备这时候开始查D/D-链路。先把万用表切到二极管挡测量USB座D、D-对地是否短路然后顺着走线量到SL2.1A引脚确认没有虚焊。重点检查D上拉。如果是芯片内部集成上拉插上设备瞬间D会被拉高理想状态是2.8V~3.6V。如果D一直是0V说明芯片没有输出上拉要么芯片配置不对要么芯片没有正常工作如果D被拉高到3.3V但主机依然不响应那可能是上拉时序太快或太慢导致主机没有正确检测到连接状态。这里有一个容易被忽略的坑如果扩展坞板子上有较大的电容挂在D/D-上插拔瞬间这些电容充电会改变上拉检测电平极端情况下主机认为没有设备插入。ESD保护器件结电容太大也会有同样效果。我遇到过一次USBLC6-2本身正常但我在D上又加了一个100nF滤波电容结果插上一片黄——这种电容在数据线上绝对不能加。5.3 枚举失败时协议层上发生了什么硬件检查全部通过但主机就是显示“未知设备”或者“设备描述符请求失败”就要看枚举协议层了。USB枚举简单说是一套固定流程设备插入 - D上拉 - 主机检测到 - 主机发送复位信号 - 设备响应 - 主机读取设备描述符 - 分配地址 - 读取配置描述符 - 配置完成。如果设备一直不上拉主机根本不知道有设备来如果上拉正常但描述符返回错误主机就会报“未知设备”。USB 2.0高速设备在上电后并不是直接用480Mbps通信而是先用全速模式12Mbps完成枚举过程然后再通过Chirp握手切换到高速。很多“识别不到”的问题其实发生在全速枚举阶段和高速信号质量根本无关。我排查的时候用一个低速USB逻辑分析仪抓包不具备也没关系看设备管理器错误码和D/D-波形也能判断就能看到复位信号是否正常、设备有没有回应设备描述符。用示波器看D/D-波形时注意看插上设备瞬间有没有一串“K-J”交替的Chirp信号。如果没有说明高速握手没发起如果有但波形非常毛糙就需要回头检查PCB阻抗和串联电阻。5.4 一张排查问题清单现象可能原因处理设备管理器完全没反应D无上拉芯片未工作、晶振没起振、电源异常先量电源、晶振再查芯片焊接D有上拉主机显示“未知设备”枚举握手失败、EEPROM配置错误抓枚举波形核对PID/VID配置高速设备只能全速运行高速Chirp握手没完成、D/D-阻抗异常检查Chirp信号波形、串阻、ESD电容插上U盘后其它端口掉电VBUS限流不足、电源路径压降过大换更大电流限流开关、缩短电源走线低温环境下识别困难晶振负阻裕量不足换低ESR晶振、调整匹配电容6. 量产之前还要补的几项测试6.1 信号质量至少看一眼波形USB 2.0高速模式下有条件的话建议用1GHz带宽以上的示波器测眼图。眼图是衡量信号质量的直接手段如果眼图开口明显塌陷、交叉点偏移说明PCB还需要调。没有高速示波器至少看全速模式下的单端波形上升沿和下降沿要平滑过冲不要超过5%振铃不要超过一个周期。串阻虽然能压制振铃但加太大也会让信号边沿变缓所以调串阻要用示波器边看边改不能只会用“经验默认值”。22Ω只是起点最后可能落在15Ω到33Ω之间。6.2 热插拔、兼容性、电源跌落量产前的可靠性测试里热插拔是必须做的。我在测样品时会用一个简单的继电器电路让USB口以约1秒一次的频率做插拔循环至少跑200到500次。这个过程能暴露ESD防护不足、电源上电时序异常、芯片热插拔复位逻辑不完善等问题。兼容性测试也不能省。同一个扩展坞在Windows、macOS、Linux、Android部分设备支持OTG上都要试一遍不同主机芯片组Intel、AMD、以及一些国产平台对枚举时序的容忍度不一样有的主机对慢速响应设备很宽容有的主机一旦超时直接放弃。电源跌落测试很容易被忽略在上行USB线缆里串一个1Ω到2Ω的电阻模拟长线压降再插满设备跑读写看芯片会不会因为VBUS跌到4.4V以下而复位。如果会说明整板电源余量不够要么加粗PCB走线要么调整限流开关的压降选型。6.3 产线工装和烧录注意事项量产不是光把原理图发出去就能收板。很多Hub芯片支持通过外部EEPROM或I2C/SPI接口配置PID/VID、端口属性等参数要确认产线上需不需要先烧录。如果需要板上要预留烧录接口和使能引脚这样治具才好做。产测阶段我建议每块板子至少跑一遍自动化检测查电源电流、查各USB口的D/D-是否短路、插U盘跑一次枚举和读写。不要只依赖人工插U盘看灯人力检测既慢又漏检率高。测试软件用Python加pyusb就能写个简单的枚举脚本配合一个USB继电器控制盒能做到插板自动测试。6.4 最后一句体会说了这么多其实USB 2.0扩展坞是一个“看起来简单、做起来全是细节”的典型项目。我自己第一次焊接后翻车的那个经历后来每次画板都会提醒我无源晶振虽小匹配电容、负载电容、反馈回路一个都不能含糊。如果非要在所有经验里挑一条最值得记住的那就是第一版严格按照数据手册参考设计来不要自作聪明去“优化”。等板子能正常工作了再谈调整和优化你会少踩很多坑也更容易定位问题。
返回列表