凡亿教育-迪丽热巴
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | Type-C已经有5V,电脑为什么还是识别不到设备?
Type-C已经有5V,电脑为什么还是识别不到设备?

Type-C已经有5V,电脑为什么还是识别不到设备?

Type-C接口测到VBUS有5V,只说明供电或连接检测已经建立,并不代表USB数据枚举成功。CC角色、D+/D−连接、设备上拉、VBUS检测、时钟和USB PHY初始化都可能让电脑“有供电却没设备”。排查时要把供电和数据分开。

Type-C口插上电脑,万用表一量VBUS:5V,正常。

板子也已经上电,MCU在跑。可Windows设备管理器一点反应都没有,插拔提示音也没有。

这种情况最容易让人困惑:既然Type-C已经有5V,为什么电脑还不知道我插了设备?

因为USB-C里,“有电”和“数据开始枚举”本来就是两条不同的链路。

先把CC和D+/D−分开理解

Type-C新增了CC1、CC2,用来判断是否插入、插头方向、端口角色以及可用电流能力。

如果你做的是一个普通USB Device,也就是UFP/Sink,最基础的Type-C实现里,CC1和CC2通常各需要一个Rd到GND,常见值是5.1kΩ。

这一步做对以后,Source才知道“有一个Sink接进来了”,并按照Type-C规则建立供电关系。

但USB 2.0真正的数据还是跑在D+和D−上。CC正常,不会替你完成USB枚举。

图1:完整USB Type-C Receptacle包含CC、VBUS、USB 2.0 D+/D−以及SuperSpeed信号。

图1:完整USB Type-C Receptacle包含CC、VBUS、USB 2.0 D+/D−以及SuperSpeed信号。

Type-C可翻转,所以D+、D−有两组焊脚

Type-C Receptacle上能看到A6/B6两个D+,A7/B7两个D−。

它们不是两路USB 2.0。标准做法是把两个D+接到一起、两个D−接到一起,让插头正插反插时PHY都能接到同一组数据线。

TI的资料还特别提醒,这样连接本身会形成短Stub,所以分叉位置要尽量靠近Connector,Stub不要拉得很长。

一个非常常见的低级错误是只接了A面的D+/D−,B面漏掉。结果就会变成:插头一个方向能识别,翻过来完全没反应。

图2:只实现USB 2.0时,两组D+与两组D−仍需处理正反插连接,SuperSpeed脚可不使用。

图2:只实现USB 2.0时,两组D+与两组D−仍需处理正反插连接,SuperSpeed脚可不使用。

电脑开始枚举,还要先“看见”设备上拉

USB Full-Speed/High-Speed设备连接时,会通过D+上的1.5kΩ上拉来告诉Host:这里有设备。

很多MCU的USB PHY已经把这个上拉做在芯片内部,由寄存器控制,不一定需要外置1.5kΩ。问题也恰恰出在这里:硬件线都接对了,USB外设没Enable,D+上拉根本没被打开。

这时VBUS照样有5V,MCU程序也照样运行,但电脑侧看不到任何Attach事件。

所以一个很好用的动作,是在插入后直接量D+。如果设备已经进入连接状态,应该能看到与USB空闲状态相符的电平变化;完全趴在0V,就要查PHY、上拉和初始化。

还有一个坑:板子自己供电,就把VBUS脚彻底不管了

自供电设备确实不一定靠USB VBUS给系统供电,但很多MCU或USB Device Controller仍然需要VBUS Detect,用来判断Host是否已经连接。

如果软件栈只有检测到VBUS有效才打开PHY,而原理图里VBUS Sense根本没接,结果仍然是“接口有5V、系统也有电,但USB模块没上线”。

所以这里不能凭经验说“我不用USB供电,VBUS就可以悬空”。要回到具体MCU的数据手册,看USB VBUS检测是外部Pin、内部检测,还是可以由软件旁路。

图3:Type-C系统中CC检测、D+/D−数据与VBUS供电属于不同功能路径。

图3:Type-C系统中CC检测、D+/D−数据与VBUS供电属于不同功能路径。

我会按这条顺序查,不先抓协议包

第一,确认Type-C角色。普通设备端CC1、CC2的Rd是否正确,正插反插是否都能建立连接。

第二,做通断测试:Connector的两组D+是不是都到MCU D+,两组D−是不是都到MCU D−,有没有把D+、D−画反。

第三,看D+上拉是否真的出现。没有Attach,先别谈Descriptor。

第四,示波器抓D+/D−。Host有没有先发Reset?设备有没有响应?到这里才能判断是PHY层没起来,还是已经进入枚举后卡在Descriptor/固件。

第五,再检查USB时钟。Full-Speed常见48MHz相关时钟必须满足芯片要求,时钟没起来时,软件代码看着全走了,USB照样不会工作。

Type-C调不通时,最省时间的思路不是把“USB-C”当成一个整体,而是拆开看:CC负责连接和角色,VBUS负责电,D+/D−和PHY负责数据。

声明:

本文由凡亿教育整理,转载请注明来源!

投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论