工程名称:带MUX可正反插的TYPE-C转HDMI+USB3+PD+VGA
工程作者:_AKnice
当TYPE-C、HDMI、USB3.1、PD、VGA接口集合到一个转换器上,会有多方便?
判断TYPE-C正反插的方法是什么?
如何控制TYPE-C正反插?
这些问题,都有答案!我们一起来探索吧!
自制了一个多路转换器,支持4种接口,能将带MUX切换的TYPE-C转HDMI+USB3.1+PD+VGA。
任天堂SWITCH、大多数Win笔记本、可视频输出的手机等设备都能兼容,就像这样:
本工程是将CS5266改为了CS5268,并且在此基础上多了MUX芯片。
主控使用CS5268,兼容CS5266,是USB TYPE-C 转 HDMI1.4b 4K-30Hz 带PD3.0、USB3.1、VGA的控制器。
MUX使用VL171,兼容VL170,是TYPE-C DP设备不可缺少的部分,有了此芯片才能实现扩展坞母座的正反插。否则仅有正插能输出图像!
控制电路部分的POL脚默认状态需要拉低!
VL17X芯片POL脚上,下拉电阻使用100K。
这边CH552控制POL脚需要一个电平转换电路。
由于使用5V供电给CH552,因此IO输出是5V,而VL17X芯片POL脚虽然没有说最大的电平值,但为了VL17X芯片的稳定,不建议输入超过它自身电压的输入,因此建议此处逻辑高电平输入3.3V~2.7V。
实测直接给5V也能正常运行。
有POL指示灯。
正插时灭,反插时亮。
10步完成烧录。
1.下载好附件的固件 CH552T for CS5268.7z 后,解压得到两个文件——.ino源码,hex文件。
固件上传的是hex文件,不需要搭环境再编译。
2.解压附件 Tools.7z,管理员身份运行。WCHISPTool_Setup.exe 安装CH烧录工具。
3.打开工具:
4.点击CH55X系列,选择CH552:
5.选择hex固件:
6.接着把TYPE-C数据线A端插入电脑:
7.按住升级按钮后插入TYPE-C数据线到PD充电口。
注意,一定要先按住,再插线,不要弄反,不要插到左边的设备TYPE-C口,要插在下图所示的PD充电口
8.此时工具能识别到CH552,识别到就可以松手了,不用一直按着。
9.然后就可以点击下载烧录进去了。
10.下载完成有成功提示,接着可以拔掉数据线了。
板上预留了一个升级和一个复位按钮,升级仅需使用升级按钮。
代码非常简单,是Arduino写的。
将SBU1、SBU2接入CH552的P1.4、P1.5,作为ADC检测电平。
接着判断AD值SBU1<10且SBU2>70,就是反插,POL拉高,反过来就拉低POL脚,其他默认情况下把POL拉低。
使用1.0板厚,四层板,阻抗结构JLC04101H-7628,可以白嫖。
HDMI,DP部分走100欧姆阻抗匹配。
TYPE-C的B2、B3、A10、A11,HDMI的D0、D1、D2、CLK信号需要走。
USB部分走90欧姆阻抗匹配。
TYPE-C的A2、A3、A6、A7、B10、B11信号需要走。
从这开始,我们以工程为例,再进行一些知识点的拓展~
VL170是“4通道DisplayPort源输入、2通道USB 3.1主机输入、USB-C连接器”之间使用的MUX芯片。
MUX开关信号性能最多支持USB 3.1。
一般传输视频的时候还要传输USB3信号,因此EN是H,AMSEL是L。
VL170和VL171的区别主要是VL170传输DP1.3,VL171传输DP1.4,两个芯片PIN对PIN。
这里给出一个视频接口规格表:
CS526X芯片中,有个别代理的芯片的GPIO5脚可以做VL17X的POL控制。
但是在淘宝上买的到的CS526X芯片是没有的。
目前我认为最好的方法是加MCU来控制,可以加晶体管电路做匹配,但是这样调参数比较复杂。
有两种方法可以来判断TYPE-C目前是正插还是反插。
方法一:CC判断
USB PD是在CCpin上传输,PD有个VDM功能,定义了装置端ID,读到支持DP或PCIe的装置,DFP就进入替代模式。如果DFP认到device为DP,便切换MUX/Configuration Switch,让Type-C USB3.1信号脚改为传输DP信号。
AUX辅助由Type-C的SBU1、SUB2来传。
把其中一段波形放大看:
充电器CC先提供充电规格选择给PD设备。
PD控制器选择电源规格。
VDM,进入替代模式。
DFP确定DP。
此过程上述所说的DP通讯过程一致。
那么通过上面分析你就会发现,正插时CC1被拉低,只有CC2在确定PD和DP规格,反插则相反。那么判断正插时CC1是否是低电平就好了。
但是检测CC2时,如果在CC通讯时检测也会误检测。导致CC通讯异常,而且设备涓流充电时,PD充电规格会根据设备要求动态调整。
为了避免影响设备通讯,我们尽量不使用检测CC通讯的方法。
方法二:SBU信号判断
SBU1,SBU2:边带使用信号适用于传输非USB信号,它们可以用于模拟音频模式,也可用于可选(Alternate)模式。
在正反插时,SBU总会有一个信号是高,一个是低,因此可以使用SBU信号判断正反插。
知道如何判断后,我们还需要一个控制方法 。
我们可以使用硬件电路来控制,把SBU输入接到三极管,做个逻辑电路,SBU1高POL就高,但是不推荐。
为了不影响SBU传输信号,加MCU再使用ADC检测会比较好。
MCU我用了一颗CH552T作为主控,这是扩展坞上CH552T部分的原理图:
我将SBU1和SBU2分别接在了P1.4和P1.5中。
规格书对应AIN1和AIN2。
作为ADC使用,根据输入SBU的高低,判断正插还是反插。
这样看,整个控制逻辑是非常简单的!
需要工程附件,可点击文末左下角的“阅读原文”进入原工程查看。
如有其他问题,也可在原工程底部留言作者。
*本文转载了「立创开源硬件平台」的用户创作,如有侵权,请联系删除