ARTICLE DETAIL

资讯详情

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

RK3588 Type-C接口设计:USB3.0、PD快充与DP Alt Mode三路信号共存实战

RK3588 Type-C接口设计:USB3.0、PD快充与DP Alt Mode三路信号共存实战 RK3588这颗片子这两年热度一直没降过尤其是做边缘计算盒子、工控一体机和桌面级主机的团队几乎绕不开它。但真正让硬件工程师头疼的往往不是CPU怎么跑、NPU怎么调而是那个看起来最不起眼的Type-C接口——它要同时承担供电、高速数据、视频输出三件事还要保证插反了也能用。我前后经手过三块基于RK3588的板子第一版Type-C直接翻车第二版勉强能用但DP输出不稳定第三版才算真正把USB3.0、PD快充和DP Alt Mode这三路信号在一颗座子上理顺。这篇就把整个设计思路、踩过的坑和实测数据摊开讲适合正在画RK3588原理图或者准备改板的朋友参考。1. 先搞清楚Type-C座子上那24根脚到底谁管什么很多人拿到Type-C母座的规格书看到A1到B12密密麻麻的引脚就发懵。其实你只要按功能分组立刻就清晰了。Type-C母座分24pin全功能版和16pin、14pin、7pin等精简版RK3588这种要跑USB3.0加DP的场合必须用24pin全功能座别想着省那几毛钱用14pin的后面会讲到为什么。1.1 电源与地A4/A9/B4/B9是VBUSA1/A12/B1/B12是GNDVBUS四根脚要全部连在一起别只连一根。我见过有人只接A4和B4结果插某些线缆时供电不稳因为不同线缆的VBUS触点位置有差异。GND同样四根全接而且要在座子附近打足够多的过孔到地平面。VBUS走线宽度至少40mil如果要做100W PD建议60mil以上并且铺铜加厚。1.2 配置通道A5是CC1B5是CC2这是整个接口的灵魂CC引脚承担了三个关键任务检测插入方向、协商PD快充协议、进入DP Alt Mode。RK3588的Type-C控制器通常集成在USB3.0 OTG PHY里但PD协议芯片需要外挂比如FUSB302、HUSB338或者国产的乐得瑞系列。CC1和CC2各需要一颗5.1k下拉电阻做Sink设备时如果要支持DRP模式则要加复杂的CC逻辑芯片。1.3 高速差分对A2/A3和B10/B11是USB3.0的TX/RX这里有个关键点Type-C的USB3.0信号是分两组摆放的A2/A3是一组TXRXB10/B11是另一组。插正时用A2/A3插反时用B10/B11。所以RK3588的USB3.0 SuperSpeed差分对要通过一颗高速MUX芯片比如HD3SS3220或CBTL02043来切换不能直接硬连。很多新手在这里翻车以为直接连就行结果插反了USB3.0不识别。1.4 边带通道A8是SBU1B8是SBU2DP Alt Mode的命脉SBU引脚在普通USB模式下几乎没用但一旦进入DP Alt Mode它就变成AUX通道负责传输EDID和链路训练信息。没有SBU的连接DP输出根本起不来。这也是为什么14pin座子做不了DP Alt Mode的原因——它压根没有SBU引脚。1.5 兼容性引脚A6/A7/B6/B7是USB2.0的D/D-USB2.0的差分对也分正反两组A6/A7和B6/B7。同样需要MUX切换不过USB2.0的MUX可以集成在PD芯片里比如FUSB302就自带USB2.0切换功能省一颗芯片。引脚组位置功能是否必须MUXVBUSA4/A9/B4/B9供电否全并联GNDA1/A12/B1/B12地否全并联CCA5/B5配置通道否但需PD芯片USB3.0 SSA2/A3/B10/B11高速数据是USB2.0A6/A7/B6/B7全速数据是可集成SBUA8/B8边带/DP AUX否直连DP2. USB3.0 OTG在RK3588上到底怎么接才不翻车RK3588有两个USB3.0控制器一个通常配Type-A口做Host另一个配Type-C做OTG。OTG的意思是既能当设备比如连电脑烧录又能当主机比如插U盘。这个切换逻辑靠CC引脚检测和PD芯片配合完成。2.1 RK3588的USB3.0 PHY输出的是什么信号RK3588的USB3.0 OTG PHY输出的是标准的SuperSpeed差分对TX和RX各一对加上USB2.0的D/D-。注意RK3588内部没有集成Type-C的MUX也没有集成PD协议栈这些都要外挂。我第一版板子就是以为RK3588能直接出Type-C信号结果发现PHY出来的就是普通USB3.0信号方向切换和CC检测全得自己搭。2.2 MUX芯片选型HD3SS3220 vs CBTL02043HD3SS3220是TI的老牌方案集成CC检测和MUX但PD协议要另配。CBTL02043是NXP的纯MUX不带CC逻辑。我最终用的是HD3SS3220加FUSB302的组合HD3SS3220负责高速信号切换FUSB302负责PD协议和CC检测。这样分工明确调试也方便。具体连接方式RK3588的USB3.0 TX/TX-接到HD3SS3220的TX1/TX1-RX/RX-接到RX1/RX1-。HD3SS3220的另一组TX2/RX2接到Type-C座子的B10/B11。切换信号由FUSB302根据CC引脚状态给出。USB2.0的D/D-则直接进FUSB302由它内部切换后输出给RK3588。2.3 实测中遇到的信号完整性问题第一版板子USB3.0跑5Gbps时误码率很高插U盘能识别但拷贝大文件就断。用示波器看眼图发现眼高只有80mV远低于标准的150mV。排查下来是两个问题一是差分对走线没有严格等长差了将近15mil二是MUX芯片的供电去耦电容离得太远有将近10mm。改板时把差分对等长控制在5mil以内MUX的每个电源脚旁边放0.1uF加1uF的组合电容距离不超过2mm。第二版眼高恢复到160mV5Gbps跑满不再掉线。这里提醒一句USB3.0的差分对阻抗必须控制在90欧姆差分对之间的间距要足够避免串扰。2.4 OTG角色切换的软件配合硬件搭好后软件上RK3588的USB3.0 OTG驱动需要根据FUSB302上报的CC状态来切换角色。在设备树里要配置extcon节点把FUSB302的中断引脚接到RK3588的GPIO上。当检测到CC引脚有下拉时说明连的是HostRK3588切到Device模式检测到CC有上拉时说明连的是DeviceRK3588切到Host模式。注意FUSB302的中断引脚必须接到RK3588的一个支持中断的GPIO上不能随便找个普通GPIO。我第二版就是接了个不支持中断的脚结果插拔检测延迟好几秒。3. PD快充协商从5V到20V的完整链路RK3588板子通常需要12V或20V供电而Type-C默认只给5V。要拿到高电压必须走PD协议协商。这个过程比很多人想象的复杂涉及物理层、协议层和策略层。3.1 PD协议芯片的选型要点FUSB302是性价比很高的选择支持PD 3.0I2C接口RK3588的Linux内核里有现成驱动。但它只做协议VBUS的升降压要外挂DC-DC。如果要做100W20V/5A还需要外加VBUS开关和电流检测。另一个方案是HUSB338集成度更高但价格贵一些。我选FUSB302的原因是驱动成熟社区资料多调试时遇到问题容易找到答案。3.2 VBUS升降压电路的设计PD协商成功后FUSB302会通过I2C告诉RK3588当前协商的电压和电流。RK3588再通过PWM或I2C控制DC-DC芯片调整输出电压。这里有个关键点DC-DC的响应速度要快否则PD协商过程中电压跌落会导致协商失败。我用的方案是TPS65987加外部MOSFETTPS65987自带PD协议和VBUS开关控制但价格偏高。后来改用FUSB302加SY8286B的组合SY8286B是一颗同步降压芯片响应速度快配合FUSB302的GPIO控制成本降了不少。3.3 快充协议兼容性测试PD协议只是快充的一种市面上还有QC、FCP、SCP等各种私有协议。RK3588板子如果只做PD插某些手机充电器可能只能拿到5V。我实测下来用支持PD 3.0的充电器比如联想口红电源能稳定拿到20V但用某些只支持QC的充电器就只有5V。如果需要兼容更多协议可以加一颗IP2721或IP2726这两颗芯片支持多种快充协议通过I2C和RK3588通信。不过要注意多协议芯片的CC引脚会和FUSB302冲突需要加模拟开关切换。方案PD支持额外协议成本调试难度FUSB302PD3.0无低低HUSB338PD3.0无中中FUSB302IP2721PD3.0QC/FCP/SCP中中TPS65987PD3.0无高低3.4 实测中的PD协商失败案例有一次调试时发现板子插上PD充电器后只能拿到5V但充电器本身是支持20V的。用PD分析仪抓包发现充电器发了Source Capabilities但板子没有回复Request。排查下来是FUSB302的I2C地址配错了设备树里写的是0x22实际应该是0x24。改过来后立刻协商到20V。还有一次是VBUS电容太小PD协商到20V的瞬间电压跌落超过1V充电器以为过流保护了直接断开。后来把VBUS电容从10uF加到100uF问题解决。4. DP Alt Mode让Type-C同时输出视频DP Alt Mode是Type-C最实用的功能之一一根线同时传视频、数据和供电。RK3588的DP输出是eDP接口要转成Type-C的DP Alt Mode需要一颗协议转换芯片。4.1 RK3588的DP输出能力RK3588支持DP 1.4最高4K120Hz或8K30Hz。但它的DP输出是eDP接口不是标准的DP。要接到Type-C上需要一颗eDP转DP的芯片比如IT6505或ANX7625。我用的IT6505支持DP 1.4I2C配置驱动也成熟。4.2 SBU引脚在DP Alt Mode中的作用进入DP Alt Mode后CC引脚会重新配置SBU1和SBU2变成AUX通道。AUX负责传输EDID和链路训练信息。如果SBU没接好显示器能识别到有信号但分辨率上不去或者直接黑屏。我第一版板子就是SBU走线太长将近30mm而且没有做阻抗控制。结果DP输出只能到1080p上4K就黑屏。后来把SBU走线缩短到10mm以内并且包地处理4K60Hz稳定输出。4.3 DP Alt Mode的进入流程整个流程是这样的Type-C插入后FUSB302检测到CC引脚状态判断对方是DP Sink。然后FUSB302通过I2C告诉RK3588RK3588启动DP Alt Mode协商。协商成功后CC引脚重新映射SBU切换到AUX模式DP信号开始输出。这个过程需要软件和硬件紧密配合。设备树里要配置好DP控制器、IT6505和FUSB302的联动关系。Linux内核里有个typec子系统专门管这个但RK3588的BSP里默认可能没开需要自己移植。4.4 实测中的DP兼容性问题不同显示器的DP Alt Mode实现有差异。我测试了五台显示器有三台能正常4K60Hz一台只能4K30Hz还有一台直接不识别。排查下来不识别的那台是DP Alt Mode版本较老只支持DP 1.2。RK3588默认走DP 1.4需要降级到1.2才能兼容。在IT6505的配置寄存器里把DP版本改成1.2后那台显示器也能正常显示了。所以做产品时最好在软件里加个DP版本切换的选项兼容老设备。5. 三路信号共存时的干扰与布局要点USB3.0、PD和DP三路信号在同一个座子上频率从几百kHz到5GHz都有布局不好就会互相干扰。我第三版板子专门针对这个问题做了优化。5.1 差分对的分组与隔离USB3.0的5GHz差分对和DP的2.7GHz差分对要尽量远离至少保持3倍线宽以上的间距。如果空间紧张中间加地线隔离。我第三版把USB3.0走在顶层DP走在内层中间隔了完整的地平面串扰明显降低。5.2 VBUS大电流路径的处理如果要做100W PDVBUS电流到5A走线电阻产生的压降不能忽视。5A电流在1盎司铜、40mil宽的走线上每英寸压降约0.02V。如果走线10英寸压降0.2V对于20V来说还好但对于5V来说就是4%的误差。所以VBUS走线要尽量短、尽量宽必要时用2盎司铜。5.3 CC和SBU的走线要求CC和SBU是低速信号但CC要过PD协议速率也不低300kbps左右。走线不用做阻抗控制但要避免和高速信号平行走长距离。SBU做AUX时速率到1Mbps同样要远离高速差分对。5.4 接地与屏蔽Type-C座子的金属外壳要接到板子的地但要注意是接到数字地还是模拟地。我建议接到数字地并且在外壳和地之间加一颗1nF电容并联1M电阻提供静电泄放路径。实测下来不加这个的话插拔时偶尔会复位。提示Type-C座子下方要挖空避免外壳和下方走线短路。我见过有人忘了挖空结果座子一焊上去就短路。6. 调试工具与实测数据分享调试Type-C接口光靠万用表是不够的需要专门的工具。我常用的有三样PD分析仪、USB3.0协议分析仪和示波器。6.1 PD分析仪的使用PD分析仪串在充电器和板子之间能抓取CC引脚上的所有PD报文。我用的是一款国产的PD分析仪几百块钱能解析Source Capabilities、Request、Accept等报文。调试PD协商失败时这个工具能直接告诉你卡在哪一步。6.2 USB3.0眼图测试USB3.0的眼图测试需要示波器带宽至少8GHz。我用的是Keysight的DSOS804A13GHz带宽。测试时要在TP1点座子端和TP2点芯片端分别测。眼高要大于150mV眼宽要大于0.3UI。如果眼图不达标先检查走线阻抗和等长再检查MUX芯片的供电。6.3 DP链路训练日志分析DP Alt Mode进入后内核会打印链路训练日志。如果训练失败日志里会显示具体的失败原因比如CRClock Recovery失败或EQEqualization失败。CR失败通常是信号质量差EQ失败通常是AUX通道有问题。我整理了一份常见问题对照表现象可能原因排查方法USB3.0识别但速度只有480MbpsMUX未切换或差分对接反检查MUX切换信号和差分对极性PD只能到5VCC检测异常或PD芯片I2C不通用PD分析仪抓包检查I2C地址DP黑屏SBU未连接或AUX通道故障检查SBU走线和DP版本配置插拔时板子复位VBUS跌落过大或地弹加大VBUS电容检查接地6.4 实测性能数据第三版板子实测下来USB3.0读写速度稳定在420MB/s左右U盘极限PD协商到20V/3A60WDP输出4K60Hz无掉帧。三路同时工作时USB3.0速度降到380MB/sDP偶尔有一帧撕裂但整体可用。如果要做更严格的EMC测试Type-C座子附近要加共模电感VBUS和GND上要加TVS管。我第三版加了共模电感和TVS后辐射发射测试轻松过Class B。7. 几个容易忽略的细节和我的经验教训最后分享几个我在实际项目中踩过的坑都是规格书里不会写的。第一个是Type-C座子的焊接。24pin座子的引脚间距很密手工焊接容易连锡。我建议用钢网刷锡膏后过回流焊如果手工焊要用刀头烙铁加助焊剂逐个引脚拖焊。焊完后一定要用放大镜检查特别是CC和SBU引脚连锡了会导致PD和DP都失效。第二个是FUSB302的固件。FUSB302出厂时内部固件版本可能较老不支持某些PD报文。我遇到过一批FUSB302PD协商到20V后无法维持几秒后就掉回5V。后来更新了FUSB302的固件才解决。所以采购时要确认固件版本或者自己用I2C烧录最新固件。第三个是设备树的配置顺序。RK3588的设备树里Type-C相关的节点有usbdrd3、typec、fusb302、dp等这些节点的依赖关系要理清楚。如果typec节点在fusb302之前初始化会导致CC检测失败。我建议在设备树里用status okay逐个使能先使能fusb302再使能typec最后使能dp。第四个是热插拔的静电防护。Type-C座子经常插拔静电是难免的。CC和SBU引脚上要加ESD保护二极管比如SRV05-4。VBUS上要加TVS比如SMBJ24A。我第一版没加ESD结果调试时手一碰CC引脚FUSB302就挂了。后来加了ESD再也没出过问题。第五个是线缆的影响。不是所有Type-C线都支持USB3.0和DP Alt Mode。有些线只有USB2.0的线芯插上后USB3.0不识别DP也不输出。调试时一定要用全功能线最好是带E-Marker的线。我测试时用了一根某品牌的全功能线结果DP只能到1080p换了一根带E-Marker的线后4K正常。所以线缆也是系统的一部分不能忽视。整体下来RK3588的Type-C接口设计不算特别复杂但细节很多。核心就是三颗芯片MUX、PD、DP转换。把这三颗芯片的选型、连接和配置搞明白剩下的就是布局布线和调试了。希望这篇能帮到正在做类似设计的朋友少走一些我走过的弯路。
返回列表