
带MUX可正反插的TYPE-C转HDMI+USB3+PD+VGA
简介
带MUX切换的TYPE-C转HDMI+USB3.1+PD,MUX使用VL171,兼容VL170。主控使用CS5268,兼容CS5266。
简介:带MUX切换的TYPE-C转HDMI+USB3.1+PD,MUX使用VL171,兼容VL170。主控使用CS5268,兼容CS5266。开源协议
:GPL 3.0
描述
0.勘误
今核对发现Q1、Q2 MOS管接错(如上图),正确接法如下图。此接法错误不影响正常使用,此MOS仅作用为拔出时放电用,目前已更正。感谢@雷老师讲电子 勘误
1.简介
CS5268是USB TYPE-C 转 HDMI1.4b 4K-30Hz 带PD3.0、USB3.1、VGA的控制器。
兼容任天堂SWITCH,大多数Win笔记本,支持视频输出的手机(大部分华为旗舰手机)。
是CS5266的上位,本人做过CS5266的工程,转跳链接:https://oshwhub.com/aknice/type-c-zhuan-huan-qi
本工程是将CS5266改为了CS5268,并且在此基础上多了MUX芯片。
MUX芯片是TYPE-C DP设备不可缺少的部分,有了此芯片才能实现扩展坞母座的正反插。
对应:
扩展坞正插+反插
主设备正插+反插
一共四种情况。
若不加MUX芯片使用TPYE-C母座时设备端可以正反插,但是扩展坞端仅有正插能输出图像!但是两面都可以PD快充。
2.TYPE-C DP 知识补充
以前CS5266的文章已经详细讲过为何需要MUX芯片了转跳链接:
https://oshwhub.com/aknice/type-c-zhuan-huan-qi
简单地说就是使用小尾巴或者直接一个公头的形式直连PD控制器,可以省一个MUX芯片
需要母头的话必须加MUX芯片
3.MUX芯片——VL17X系列
以VL170为例
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
这里给出一个视频接口规格表
接口 | 传输信号 | 支持的分辨率/刷新率 |
VGA | 模拟 | 2560x1600 |
DVI-D | 数字 | 2560x1600@60Hz |
HDMI 1.4b | 数字 | 2560x1600@60Hz |
HDMI 2.0b | 数字 | 3840x2160@60Hz |
HDMI 2.1 | 数字 | 7680x4320@60Hz |
DisplayPort 1.1 | 数字 | 2560x1600@60Hz |
DisplayPort 1.2 | 数字 | 4096x2160@60Hz |
DisplayPort 1.3 | 数字 | 5120x2880@60Hz |
DisplayPort 1.4 | 数字 | 7680x4320@60Hz |
4.MUX控制逻辑
CS526X芯片中,有个别代理的芯片GPIO5脚可以做VL17X的POL控制
但是在淘宝上买的到的CS526X芯片是没有的
目前我个人认为最好的方法是加MCU来控制,当然可以加晶体管电路做匹配,但是这样调参数比较复杂
4.1判断TYPE-C正反插的方法
那么我们可以有两种方法可以来判断TYPE-C目前是正插还是反插
4.1.1 CC判断
关于CC脚PD和DP通讯(注意区分PD和DP)
USB PD是在CC(Configuration Channel) pin上传输,PD有个VDM (Vendor defined message)功能,定义了装置端ID,读到支持DP或PCIe的装置,DFP就进入替代(alternate)模式。
如果DFP认到device为DP,便切换MUX/Configuration Switch,让Type-C USB3.1信号脚改为传输DP信号。AUX辅助由Type-C的SBU1,SUB2来传。
把其中一段波形放大看:
1.充电器 CC先提供充电规格选择给PD设备
PD控制器选择电源规格
VDM,进入替代模式
DFP确定DP
此过程上述所说的DP通讯过程一致
那么通过上面分析你就会发现正插时CC1被拉低,只有CC2在确定PD和DP规格,反插则相反。
那么我们判断正插时CC1是否是低电平就好了。
是的,这是一个不错的方法,但是我们检测CC2时如果在CC通讯时检测也有可以会误检测,导致CC通讯异常,而且设备涓流充电时PD充电规格会根据设备要求动态调整的
因此为了避免影响设备通讯,我们尽量不使用检测CC通讯的方法
4.1.2 SBU信号判断
SBU1,SBU2:边带使用(Side Band Use)信号适用于传输非USB信号,它们可以用于模拟音频模式,也可用于可选(Alternate)模式。
网上找了很多文章,也没有具体说有啥用,看上去多用于模拟音频传输。
但是在正反插时SBU总会有一个信号是高,一个是低,因此可以使用SBU信号判断正反插。
----------------------------分隔线----------------------------
2023.07.09
今发现使用SBU信号判断正反插时,对于全功能TYPE-C是有SBU信号的
但是只有USB3传输功能的TYPE-C口,插上去,就没有SBU信号
因为没有SBU信号导致外挂的MCU对控制VL171芯片的POL口没作用了
因此对于只有USB3传输功能的TYPE-C口只能跑USB2的速度
建议还是使用CC信号进行判断正反插控制POL
----------------------------分隔线----------------------------
4.2控制TYPE-C正反插的方法
上面知道如何判断后,我们还需要一个控制方法
我们可以使用硬件电路的方法的来控制,把SBU输入接到三极管,做个逻辑电路,SBU1高POL就高这样。
这个方法不错,但是也不推荐,既然SBU有时候有用,那为了不影响SBU传输信号,加MCU,使用ADC检测那是比较好的方法了。
MCU我用了一颗CH552T作为主控。
这颗MCU也是目前我主用的一款小MCU。
- 外围非常简单,只需要复位电路、下载按键、晶振即可,比传统单片机还要少个USB转TTL电路
- 超便宜1.5块钱一颗
- 支持多种开发环境:KEIL,Arduino等
- 4路8位ADC
- 2组PWM
- 2组UART
- 内置USB控制器
- 内置5V转3.3V的LDO,外部供电也可以去到2.8V
这款MCU多用在键盘上,便宜又高性能的MCU,不过没有硬件IIC比较可惜。
这是扩展坞上CH552T部分的原理图
我将SBU1和SBU2分别接在了P1.4和P1.5中
规格书对应AIN1和AIN2
作为ADC使用,输入SBU的高低判断正插还是反插
整个控制逻辑实际上非常简单
4.3 CH552代码
代码实际上非常简单,而且还是Arduino写的
就是将SBU1和SBU2接入CH552的P1.4和P1.5,作为ADC检测他们的电平
接着判断AD值SBU1<10且SBU2>70,就是反插,POL拉高,反过来就拉低POL脚,其他默认情况下就把POL拉低
4.4控制电路还需要注意的地方
实际上POL脚默认状态就是需要拉低的
VL17X芯片POL脚上,下拉电阻使用100K
而这边CH552控制POL脚需要一个电平转换电路
由于我们使用5V供电给CH552,因此IO输出是5V,而VL17X芯片POL脚虽然没有说最大的电平值
但是为了VL17X芯片的稳定,不建议输入超过它自身电压的输入,因此建议此处逻辑高电平输入3.3V~2.7V。
当然本人实测直接给5V也能正常运行。
有POL指示灯
正插时灭,反插时亮
5.CH552固件烧录
板上预留了一个升级和一个复位按钮,升级仅需使用升级按钮
下载好附件的固件 CH552T for CS5268.7z 后解压得到两个文件,一个是.ino的源码,一个是hex文件,固件上传的是hex文件,不需要搭环境再编译
解压附件 Tools.7z,管理员身份运行 WCHISPTool_Setup.exe 安装CH烧录工具
打开工具
点击CH55X系列,选择CH552
选择hex固件
接着把TYPE-C数据线A端插入电脑
按住升级按钮后插入TYPE-C数据线到PD充电口
注意,一定要先按住,再插线,不要弄反,不要插到左边的设备TYPE-C口,要插在下图所示的PD充电口
此时工具能识别到CH552,识别到就可以松手了,不用一直按着。
然后就可以点击下载烧录进去了
下载完成有成功提示,接着可以拔掉数据线了
6.LAYOUT部分
使用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信号需要走
7.芯片购买
马云网搜索CS5268芯片或CS5266芯片即可
PDD我看到也有一家卖,不知怎么样,可以试试
8.实测
1.任天堂SWITCH正反插+扩展坞正反插
2.笔记本HDMI+USB3+PD快充
设计图

BOM


评论