资讯详情

资讯详情

Type-C OTG协议芯片方案选型与CC电阻设计实战要点

Type-C接口做OTG这件事我这两年没少跟人解释。以前MicroUSB时代一根OTG线加上ID引脚接地手机就能当USB主机去读U盘。换成Type-C之后很多人发现看原理图时多了CC1、CC2这一堆东西还要牵扯多少k的电阻、专门的协议芯片偶尔还会遇到CH340接Type-C不识别、华为Matebook这类设备的Type-C口突然失效的问题。这些现象背后其实是同一件事Type-C的OTG逻辑已经完全换了一套玩法靠的不是ID引脚而是CC引脚配合协议芯片去完成方向检测、角色协商和电源管理。这篇文章我就从自己实际做项目选型、画原理图、调板子的经验出发把Type-C OTG协议芯片的方案选型思路、CC电阻处理、对CH340这类USB转串口场景的注意事项以及我踩过的几个经典坑一次性说清楚给硬件工程师和DIY玩家一个直接能用的参考。1. 先从Type-C的OTG逻辑说起1.1 MicroUSB时代的ID引脚在Type-C上到底变成了什么理解Type-C接口做OTG的逻辑必须从MicroUSB时代的OTG机制看起。MicroUSB接口有5个引脚VBUS、D、D-、GND以及一个ID引脚。OTG规范约定设备侧把ID引脚对地短接就表示该设备希望在连接中扮演“主机”角色也就是A设备负责提供VBUS电源而ID引脚悬空则表示该设备扮演“外设”角色也就是B设备被对方供电。所以一条OTG线本质上就是在线的某一端把ID引脚接地把主机角色的决定权固定下来。Type-C接口把这一套逻辑彻底改了。接口变成了24引脚的双面可插结构正反插必须都被支持而且物理上不再有ID引脚。取而代之的是CC1和CC2这两个Configuration Channel引脚中文常叫配置通道。CC引脚在Type-C体系里承担了多种职责检测线缆插入方向、识别连接双方的角色是主机还是外设、协商VBUS的供电能力和电流需求甚至还能做线缆供电和替代模式相关的事情。所以“Type-C OTG”这个说法严格来说不再是某一种单独协议而是由CC控制器和USB电源协商机制共同完成的设备角色管理。在这种前提下“OTG协议芯片”这个叫法也自然发生了变化。MicroUSB时代的OTG芯片多是根据ID引脚电平给出方向判断而Type-C时代的所谓“OTG协议芯片”实际指的是CC控制器或者带有CC状态机的USB PD控制器。它们通过检测CC引脚上的上拉、下拉电阻配置来判断对方的角色并输出控制信号来切换USB数据线的极性、控制VBUS电源路径。市面上常见的TUSB320、FUSB301、PTN5150、RT1715这些都属于这一类芯片。1.2 CC引脚检测是怎么跑通的Rd、Rp和DRP角色Type-C能不能完成OTG方向判断物理基础就是CC引脚上的电阻网络。整个CC检测体系里有两个最关键的电阻一个是下拉电阻Rd阻值规定用5.1kΩ精度1%放在“外设侧”也就是UFP一侧把CC引脚对地拉低另一个是上拉电阻Rp放在“主机侧”也就是DFP一侧把CC引脚上拉到3.3V。当两根线缆对接时主机的Rp和外设的Rd会形成分压主机端和从机端同时都能通过CC引脚的电压变化知道自己连上了什么东西。Rp的阻值并不仅仅是“有上拉”那么简单它还编码了主机能为外设提供多大电流。Type-C规范里给出了三个标准档位Rp用56kΩ时表示默认电流能力也就是USB2.0的500mA或者USB3.0的900mARp用22kΩ时表示能提供1.5ARp用10kΩ时表示能提供3A。外设通过读取CC引脚上的分压电压来判断当前主机能给多少电流而不是等VBUS加压后才去试探。这个设计让Type-C在“插上瞬间”就完成了电源能力的宣告比MicroUSB时代的盲试靠谱得多。那DRP又是什么在MicroUSB时代一个设备要么是A设备要么是B设备角色是固定的。而Type-C引入了DRPDual Role Port的概念也就是双角色端口。DRP端口会周期性地在“主机上拉”和“外设下拉”两种状态之间切换就像一个人交替伸出手又缩回去让对方先表态。当两个DRP设备对接时通过时间窗口的仲裁最终会有一个设备稳定地当主机另一个当外设。很多协议芯片内部就直接实现了这个DRP状态机外部电路只需要按手册接好Rd或Rp即可。1.3 正反插检测与USB2.0极性切换Type-C还有一个绕不开的细节正反插。因为接口物理上支持两个方向插入USB2.0的数据线D和D-在Type-C口上其实是两组引脚A6/B6和A7/B7。当插头正向插入时使用的是A6/A7反向插入时使用的是B6/B7。对于USB2.0传输来说OS需要看到连续的D/D-所以硬件上必须根据CC检测结果把当前方向上有效的那一组数据线连接到主控。这就是USB2.0极性切换也叫MUX切换。这块工作如果交给主控端软件去做会非常别扭所以在Type-C方案里极性切换一般由协议芯片或配套的模拟开关完成。协议芯片通过CC引脚判断出插入方向之后会输出一个SEL逻辑信号给USB2.0 MUX芯片或者直接由芯片内部的模拟开关完成数据线切换。因此在选型时“是否集成USB2.0 MUX”是一个非常重要的分水岭有的芯片集成了D/D-的MUX比如TUSB320外围不用再单独放一颗模拟开关有的芯片只做CC逻辑和PD协商比如很多PD控制器那你还要额外配一颗FSUSB42或TS3USB221这类2:1差分开关。理解了这些底层逻辑再看后面各种芯片选型和电路设计思路就清晰多了。2. OTG协议芯片方案选型把需求拆成四个方向2.1 四种主流方案按场景对号入座选型的第一步不是去看哪个芯片便宜而是先搞清楚你要的这个Type-C口承担什么角色。根据不同需求市面上可用的方案大致可以分成四类。第一类是纯CC逻辑控制器。这类芯片只负责检测CC引脚状态、判断插入方向和角色输出控制信号不做PD电源协商。典型代表就是TI的TUSB320系列和NXP的PTN5150。它们适合那些只要USB2.0数据加常规5V供电的应用比如开发板上要做一个Type-C口作为device接口被PC识别或者做一个简单的DRP口用来连接U盘、键鼠这类设备。这类芯片本身不一定带MUX选型时要注意看型号后缀比如TUSB320就内置了USB2.0 MUX省事很多。第二类是CC控制器加USB2.0 MUX集成方案。本质上还是CC控制器优势在于把D/D-的极性切换开关做进了芯片里外围电路更干净BOM数量更少调试也更方便。对很多小尺寸板子来说这是最舒服的选型方向。TUSB320系列其实就是这样一个集成方案一颗芯片同时搞定CC检测和D/D-切换可以从引脚配置或I2C寄存器配置角色DFP、UFP、DRP都能设。第三类是USB PD控制器方案。这类芯片在CC逻辑之外还要完成USB Power Delivery的协商支持VBUS跑到20V、3A甚至更高功率适合需要PD快充与反向供电同时存在的设备。Realtek的RT1715、英飞凌的CYPD3175都属于这个方向。它们的型号非常复杂因为PD协议版本、PPS支持情况、DP Alt Mode支持情况都会影响选型。如果你只是做一个U盘读取器用这类芯片属于大材小用成本也会高不少。第四类是MCU加软件协议栈方案。有些产品本身已经有主控MCU不想再多加一颗专用芯片那就直接在MCU里跑Type-C CC逻辑和PD协议栈。这种方式灵活性最高协议行为可以自己控制但缺点也很明显固件复杂度高要自己做CC状态切换、PD报文解析还需要额外的模拟电路去采CC引脚电压。对DIY或小批量产品来说这套路的代价远高于直接买一颗协议芯片我一般只推荐在芯片缺货、成本极度敏感的大批量场景下使用。2.2 几颗有代表性的芯片横向对比我在实际项目里接触过不少Type-C控制芯片这里按常见的选型维度做一张参考对比表给大家一个相对直观的起点。注意芯片型号和参数迭代很快具体数值请以官方最新手册为准这张表的价值是帮你建立“哪些维度该比较”的框架。芯片型号厂商支持能力是否集成USB2.0 MUX配置方式常见适用场景TUSB320TICC逻辑、DFP/UFP/DRP集成引脚或I2CUSB2.0 OTG、DRP应用TUSB321TICC逻辑、PD基础集成I2C需要I2C配置的DRP设计PTN5150NXPCC逻辑、DRP可选不集成引脚/I2C简单的DFP/UFP转换FUSB301onsemiCC逻辑、低功耗不集成I2C电池设备角色检测FUSB302onsemiPD、DRP不集成I2CPD Charger端检测RT1715RealtekPD3.0、DRP不集成I2C需要PD协商的OTGCYPD3175InfineonPD3.x、PPS、QC等不集成I2C/CONFIG大功率PD电源管理单看这张表会有一个感受凡是带“PD”字样的芯片基本都不集成USB2.0 MUX因为PD芯片的使用场景通常涉及USB3.x/DP等更高带宽信号D/D-的2:1切换开关这种低端事情往往被放到更复杂的MUX芯片里一起处理了。反过来像TUSB320这种专为USB2.0 OTG设计的芯片反倒更贴心地集成了MUX。所以选型时先想清楚你做的到底是一个只需要USB2.0的OTG板还是要做PD快充加OTG的复杂系统。2.3 选型前的5个判断标准每次有朋友拿着原理图来问怎么选型我都会让他先回答五个问题。第一个问题到底需不需要PD快充。如果只是给外设提供5V然后读U盘那纯CC逻辑控制器就够了没必要上PD芯片。如果设备既要支持对外充电又要支持接收20V输入那选型范围直接被锁定到PD控制器。第二个问题USB2.0够不够用。Type-C口上如果还要跑USB3.0/3.1的超速信号那D/D-的MUX和超速信号的MUX是两套东西选型复杂度完全不同。只做USB2.0的OTG芯片轻松一大截。第三个问题你希望芯片扮演的角色是固定DFP、固定UFP还是DRP。对于纯充电口固定DFP就行对于设备口固定UFP就行对于真正的双向OTG必须支持DRP。DRP芯片在内部CC状态机的复杂度上会明显不同价格也更高。第四个问题配置方式是GPIO还是I2C。简单产品用GPIO配置初始角色焊接完成后定了就不改了复杂产品要动态切换角色、读取CC状态、上报VBUS电流就需要I2C接口软件可以通过寄存器实时控制。第五个问题待机功耗和封装尺寸。移动设备对这几项特别敏感。比如电池类产品一颗静态电流几百微安的芯片和一颗几十微安的芯片一年下来的电池消耗差很多封装从QFN到WLCSP面积差别也很大直接关系到PCB布局是否能塞得下。3. 实操从原理图到PCB的Type-C OTG参考设计3.1 CC电阻的接法最容易翻车的地方画原理图时CC电阻怎么接往往是新手最容易翻车的地方。先说最基础的情况如果你的板子要做成一个标准的UFP外设比如一个USB转串口模块插到电脑上被识别那CC1和CC2两个引脚上各需要放一颗5.1kΩ下拉电阻到地精度1%位置尽量靠近Type-C座子。很多照着现成开发板抄图的板子漏掉这两颗电阻插上电脑就完全不认量VBUS甚至没有5V因为主机的CC检测没感知到下拉压根不认为有设备插入。如果你的板子要做成DFP主机比如一个OTG读卡器需要主动给U盘供电那CC1和CC2要接上拉电阻Rp到3.3V。具体用56kΩ还是22kΩ还是10kΩ取决于你想向外设宣告多少电流能力。做普通U盘、键鼠读取的场景56kΩ对应默认电流已经够用如果明确要支持大电流外设才考虑用10kΩ档位配合适当的VBUS电源设计。要注意Rp和Rd都需要1%精度的电阻这部分不要用普通5%的贴片电阻凑合CC电压检测的阈值窗口本来就不宽电阻精度不足会导致时好时坏的诡异问题。对于DRP设计外部到底要不要自己接Rd/Rp要看具体芯片。像TUSB320这类内部带有Rd和Rp网络的芯片外部电阻可以省掉角色切换全部由内部状态机完成。FUSB302这类PD控制器也是类似的思路外部电路只负责把CC引脚与芯片对应脚连接即可。但PTN5150这类芯片部分型号支持外部Rp/Rd配置设计时就要仔细查手册里的典型应用图别凭印象接。VBUS电源路径同样值得单独列出来。DFP模式下VBUS必须经过一个负载开关或者MOSFET开关由协议芯片拉开和关断不能让VBUS直接永久连通5V。你的板子插入时协议芯片要先完成方向检测然后才打开VBUS给外设供电如果一上来就电压直通插拔瞬间的浪涌电流很容易打坏连接双方。负载开关要关注导通电阻和限流能力一般选带软启动和过流保护的负载开关型号如TPS22918这类电流能力按实际负载余量留一半以上比较稳。3.2 直接回答CH340接Type-C的两个高频问题网上关于CH340和Type-C的问题非常多其中最集中的一个是“要不要在D/D-上串电阻”。CH340是USB转串口芯片工作在USB2.0全速模式也就是12Mbps。它会比USB2.0高速设备宽松得多。CH340的数据手册参考电路里D/D-通常直接连到USB座子没有特意要求串联电阻。实际上USB2.0全速信号的边沿不算特别陡信号完整性风险比高速信号小很多所以直连是很常见的做法。但是“直接连”不代表“任何情况下都不用串”。我在实际画板时发现如果Type-C座子到CH340之间的走线比较长比如超过5厘米或者板子布局紧凑、周围有DCDC开关电源串扰那D/D-上的振铃是真实存在的过EMC测试时也可能因此被卡。这种情况下建议在D/D-上各串联一颗22Ω到33Ω的电阻靠近CH340引脚放置。它起到的作用是阻尼振铃、抑制过冲、压低一部分高频辐射而不是像高速信号那样做阻抗匹配。阻值别贪大超过47Ω以后波形边沿会被拖慢可能出现枚举不稳定小于10Ω又基本没效果。所以我的结论是短走线直连没问题长走线或过EMC时串22Ω这个操作对CH340完全友好。第二个高频问题比串电阻更关键为什么CH340板子插到Type-C口上完全没有反应。我见过不少DIY板子照着网上“Type-C母座转CH340”的原理图抄结果插电脑后设备管理器里什么都没有。排查下来很大比例是CC1和CC2上的5.1kΩ下拉电阻被漏掉了。电脑端的Type-C口是DRP它要先在CC引脚上检测到Rd也就是看到5.1kΩ下拉才会判定这是一台UFP设备才打开VBUS并开始USB枚举。如果漏了这两颗电阻相当于设备“隐身”了。就算你从USB口单独给VBUS供了电电脑也依然不会理你。除了CC电阻D/D-的连通性也值得检查。CH340的D和D-与Type-C的A6/A7、B6/B7两组引脚之间的映射要正确也就是说A6和B6要连在一起接到CH340的DA7和B7连在一起接到CH340的D-中间的连接尽量对称、避免交叉。有些初学者画图时把D/D-交叉接反导致枚举失败CH340这类芯片没有内部的极性自纠正能力接反就是接反。另外Type-C母座的A5就是CC1、B5就是CC2别和SBU引脚搞混SBU是用于音频或DisplayPort替代模式的通常和USB2.0没直接关系。3.3 画图前必过的Checklist把之前遇到的翻车案例整理成一张检查表每次画Type-C相关板子前都过一遍能省下大量Debug时间。类别检查项推荐做法CC引脚UFP设备CC1/CC2下拉各接5.1kΩ精度1%靠近座子CC引脚DFP主机CC1/CC2上拉按需求接56k/22k/10k精度1%数据线D/D-极性A6/A7与B6/B7需统一连接到对应信号数据线ESD保护用低电容USB2.0 ESD二极管放置于座子侧数据线差分走线尽量按90Ω差分阻抗控制保持对称等长VBUS电源开关DFP/DRP设计必须用负载开关控制VBUS输出VBUS滤波电容母座入口放100nF小电容后级放10uF以上bulk电容VBUS过流保护按实际负载留50%以上余量优先带限流型号角色配置协议芯片初始状态确认上电默认角色与需求一致避免每次上电都进入错误状态测试点CC1、CC2、VBUS预留测试点调试时可以直接用示波器测量CC检测时序这些检查项不是理论上的“最好”而是实战里“不过就有坑”的底线。尤其是CC电阻的位置一定要放在座子和协议芯片之间走线越短越不容易被寄生电容干扰。VBUS的测试点看起来无所谓但等你在示波器上抓插入时序时会发现没有测试点简直寸步难行。4. 常见问题与排查技巧实录4.1 新板子插上去没反应按这几步定位新板子第一次上电插Type-C口没反应是最常见的开局方式。不要慌按下面的顺序一步步缩小范围。第一步先量VBUS。把Type-C线插上电脑板子处于UFP模式时VBUS引脚应该已经有5V。如果VBUS是0V说明电脑的DFP端根本没有开启供电。这时去量CC1或CC2对地电压如果CC引脚一直是0V那大概率是下拉电阻没焊或者焊错位置如果CC引脚接近于3.3V那说明下拉完全没有生效CC引脚被外部上拉抬起。VBUS没有5V时不要在D/D-上瞎折腾问题十有八九在CC检测链路。第二步看协议芯片有没有输出“连接状态”信号。带I2C的芯片可以先读寄存器观察Connect状态是否为1、当前role是DFP还是UFP。GPIO配置的芯片则量角色控制引脚电平。这里要特别注意芯片上电时序有的CC芯片需要MCU通过I2C做初始化如果软件没跑起来芯片默认不会切换成目标角色VBUS自然也不会开。第三步看D/D-是否有枚举行为。把示波器挂到D或D-上插USB线的瞬间应该能看到一连串低频的包络跳跃从几十毫伏到几百毫伏的波形变化这就是主机在发复位和枚举信号。如果波形完全静止说明主机压根没往这个端口送USB信号如果有波形但设备管理器仍然是“未知设备”那就要检查CH340的供电、晶振是否起振、芯片焊接是否连锡。第四步用USB协议分析仪或者直接看PC端的描述符错误。Windows在枚举失败时会给不同的错误码如果提示“USB设备描述符请求失败”描述符里的厂商ID都是0通常是D/D-通路有问题如果提示“设备无法识别”则要先怀疑供电和CC链路。Linux下用dmesg看usb 1-1: device descriptor read/64, error -71这类日志也能快速定位方向。4.2 OTG线质量看起来一样用起来差别很大Type-C OTG线也是一个容易踩坑的地方。同样一根两头都是Type-C的线有的插上手机能稳定读U盘有的插上要么没反应要么过几秒就断开。很多人怀疑是手机问题其实问题往往在线材内部的CC电阻处理上。合格的Type-C OTG线本质上是一根带CC识别网络的转接线。线里有一端扮演DFP角色内部在CC1和CC2上各放一组Rp上拉同时把VBUS切换成输出另一端扮演UFP角色CC1和CC2各接Rd下拉。两条两头都是Type-C的线对接之后DFP端检测到对方的下拉就认为“对面是个外设”于是输出VBUS并建立数据连接。劣质OTG线的典型问题就是内部少了这些电阻或者直接用固定短接替代。你拿万用表的电阻档去测一条靠谱的OTG线的CC引脚和GND之间应该能测到大约5.1kΩ或者56kΩ量级的阻值具体取决于哪一端如果量到的是0Ω或无穷大那这条线的内部CC网络一定是不合规范的插上设备时协议芯片的状态机就会进入一个非预期分支表现成时断时续或者干脆不工作。所以我买OTG线或者公司选型供应商时一定要求对方提供线序定义和CC电阻网络说明或者自己拿万用表抽测。实际项目中一根几块钱的线导致的“兼容性问题”往往能花掉工程师一整天去查驱动和协议栈最后才发现是线的问题。4.3 Matebook 13 Type-C接口失效的排查思路笔记本Type-C接口失效这类用户问题在网上非常常见。把视角切到硬件上可以把它当成一个典型的Type-C接口故障排查案例。以华为Matebook 13为例它机身Type-C口承担了充电、数据传输等多种功能接口使用频率高失效原因通常是多个因素叠加。排查这种失效第一步永远是区分失效范围。拿一个“确定正常”的Type-C充电器和一根短的好线试试能不能充电再拿一个“确定正常”的U盘或手机试试数据能不能正常枚举。充电正常而数据不正常说明VBUS通路基本是好的问题大概率出在CC数据链路、D/D-通路或者协议芯片的CC状态机充电不行但数据正常则反过来说明数据通路OKVBUS或者电源管理路径有问题。两个都不行且USB设备管理器里几乎看不到任何枚举行为则要怀疑CC控制器整体挂了。第二步观察设备管理器或Linux的dmesg。Windows里如果Type-C口旁边显示“未知USB设备设备描述符请求失败”那说明主机端的协议芯片还能检测到设备插入但USB数据层没有建立起来。如果系统里连Type-C“连接”状态都没有提示说明CC检测这一层就没过。对于笔记本这类问题经常是接口附近的ESD保护器件被静电打穿或者CC控制器的供电引脚出现虚焊、断裂少量情况是接口座子内的CC插针被硬物顶弯、沾了异物导致接触不良。第三步再考虑软件层面的因素。某些笔记本BIOS/EC固件更新后Type-C口的行为会变化充电和数据策略可能被重置。所以遇到这类问题先做一次EC/BIOS重置或者升级最新固件成本最低至少能在送修前排除软件因素。笔记本拆机维修有电击和主板损坏风险保内还是优先走官方售后过保想自己修也得先用绝缘工具断电观查CC链路和D/D-附近的ESD、串联电阻位置有没有异常。4.4 兼容性坑为什么同一块板子有些U盘能读、有些不读有些板子做出来后插U盘时出现“挑盘”现象同一块DFP板子这个U盘读得好好的换另一个U盘就不识别或者读一半掉线。这个问题原因可以分成三条线。第一条线是协议能力。很多便宜的OTG方案在主控或协议芯片层面只支持USB2.0全速也就是12Mbps而市面上一堆U盘是USB2.0高速480Mbps设备。对于主机来说如果它的高速支持不完整或者高速握手失败后不能顺利降级到全速就会出现枚举卡死。选型时一定要确认协议芯片或者主控是否完整支持USB2.0 High-Speed而不是只在datasheet第一页看到“USB2.0”字样就想当然。第二条线是供电能力。U盘工作电流普遍在100mA上下但大容量固态U盘、带状态灯的U盘在峰值工作或者写入时可以拉到300mA甚至更高。如果DFP端的VBUS路径走线太细、负载开关导通电阻偏大、或者经过了一颗DCR很大的磁珠到U盘端的实际电压可能掉到4.5V以下U盘内主控就会复位或进入保护。解决方法是加宽VBUS走线负载开关选RDS(on)尽量小的并确保VBUS电容有足够的瞬态能量缓冲。第三条线是时序兼容性。Type-C的插入检测、VBUS开启、数据枚举这三件事有严格的先后顺序主机先检测CC下拉再打开VBUS然后开始USB连接握手。如果协议芯片或者外围逻辑把“VBUS开启”的时机提前在CC检测完成前就给VBUS加压有些U盘会在这段“无数据连接但已有电”的时间内自行枚举失败如果VBUS开启太晚主机已经开始反复发送USB复位也有可能导致U盘错过握手窗口。这种时序问题用示波器抓CC电压和VBUS电压可以看得很清楚抓不到时也可以试试换不同品牌U盘用枚举成功的时机反推问题。最后说几句调试心得Type-C OTG相关的项目做得多了我越来越体会到这类设计的核心问题归纳起来就是三件事CC电阻网络对不对、角色状态机配置对不对、VBUS路径管理对不对。只要这三件事在原理图阶段想明白后面的调试基本都是走流程的问题。我自己的习惯是不管芯片手册里怎么推荐画板时都会在CC1、CC2和VBUS上各加一个测试点成本几乎为零但排查问题时能省下大量时间。选型时也不要一上来就追求最新最强的PD芯片按自己的真实需求去匹配芯片能力才是最快的路。希望这篇总结对正在做Type-C OTG方案的朋友有帮助。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →