大家好,我是PD协议小白,我在pd简介中简单的介绍了一下type-c内部结构以及角色问题,那我们如何去检测typc-c的正反插以及判断lane的线序呢?那么本文我带大家讨论一下吧,如果我又说的不对的地方,欢迎大家给予指正,谢谢。
1.Type C 是怎么识别正反插的?
上一章我说过CC信号有两个CC接口,CC1和CC2,大部分USB线(不带芯片的线缆)里面只有一根CC线,DFP可根据两根CC线上的电压,判断是否已经插入设备。通过判断哪根CC线上有下拉电阻来判断方向。如果CC1引脚检测到有效的Rp/Rd连接(对应的电压),则认为电缆连接未翻转。如果CC2引脚检测到有效的Rp/Rd连接(对应的电压),则认为电缆连接已翻转。
那么什么是cc线?cc线的作用是什么?在大部分USB-PD中只有一根cc线,而在带有芯片的线中有两根,因为两根cc线,其中一根的作用是给芯片供电,给芯片供电的一方也称为VCCON源,这种带芯片的PD线也被称为emaker线。另一根cc线和大部分PD线的cc线的功能一样,是为了解码PD协议。另一根cc虽然没接,但是他仍有其他作用,那就是可以确定当前角色,不过必须量PD芯片的cc才可以,如果另一根cc为低电平则为UFP,如果为高电平则为DFP,当然方波仍为DRP。这是因为UFP那一端会下拉5.1k,DFP一端会上拉5.1k。
本图来源于bobuddy的博客,感谢他的分享。好了,说了这么多,那么如何检测正反插呢?通过上面的描述,你们肯定也想出了办法,那就是量cc电压,对DFP一端来说,它判断CC1和CC2,其中的哪个CC是被拉高,来区分正反。而对UFP那端来说,它判断CC1和CC2,其中哪个CC被拉低,来区分正反。除了这些还有许多其他的方法,比如说量DP lane的线序,AUX的P/N是否交换等。
2.如何判断DP lane的线序?
DP lane是pd的数据线路,顾名思义就是用来传数据的。但是pd口中有4条lane,怎么确定自己的lane对应的是对面的哪条lane呢?我们一起看下面这张图。
如果线序为 DP0、DP1、DP2、DP3的话,对应的顺序为 RX2、TX2、TX1、RX1,然后对应的是 TX2、RX2、RX1、TX1,最后对应的是DP3、DP2、DP1、DP0。
3.问题分析
由于这篇文章篇幅较少,我分享一些我做项目时遇到的一些问题。
问题一:华为手机的连接线异常问题。
这个问题的原因有两种,第一是我在上面提过的一个知识点,lane的线序错误会导致连接线异常,还有就是AUX异常导致连接线异常,最后我还发现一点,如果理由信号投屏,投屏时间过短同样也会这样。
问题二:三星手机的水汽问题。
这个问题我在角色设为DRP的时候,刚插上手机,手机就出现水汽,而设为UFP时就没有。原因是DRP的时候,cc波形为方波,三星手机如果检测到cc有电就会出现手机发生水汽,同样如果检测到AUX有电也会出现水汽。