
不知道大家平时工作的时候有几个电脑,我平时在 Mac 和 Windows 之间以及 Windows 与 Windows 之间的文件互传,比如文档和媒体文件,还有剪贴板共享,是一个非常麻烦的事情。如果是同一个局域网下面,文件传输我使用的是 LocalSend 这个软件,但是没法共享剪贴板复制的文本和图片:

会自动的注册所有的设备
传一些单独的文件是比较方便的,但是对于多个电脑之间进行“工作级别”的交互那这个就限制偏多了,而且因为无线的原因,设备离开现有环境又不能很快的组网互联。所以这么长时间我一直在寻找优雅的解决方案,不过还真别说,最近就找到了,非常好用。
先展示一下工作的环境,让大家对这个痛点有个比较直观的印象:

3 个屏幕
1,2 是双屏,连在一个台式机上面,繁重的活他干,3 就是日常写东西的小电脑;1,2 的文件需要和 3 互相传播,他们之间的屏幕信息也需要截图,因为我会把资料放在最手边的电脑上面。
我就想有没有什么线,一插两个机器就可以互通有无,然后我的 USB 设备也多,可以直接插上去,让电脑识别,也就是加一个 HUB 的功能,因为安卓上面有很多的开源工程软件,就想着最好连安卓也兼容了。

可以看到在反面的特性就满足了我的需求
外形设计是 CNC 的外壳加根线,有 5 个 USB 的口,产品两头连主机,中间接设备。

如图所示
首先看投屏:(手机投屏也很便捷,下文拆解后附图)

PC 投屏
看看 USB外设共享:

因为USB 是要确定一个主机的,所以在插好以后需要确认对应USB 口的方向,就是插入外设要被谁控制,可以鼠标中键或者快捷键切,也可以点一下软件上的端口来切换。
现在这个图里面的意思就是被对端控制,点击下面的图标还可以显示外设的 VID 和 PID。

然后跨电脑传文件这就是基操:

就是拖拉文件到对应的位置,松手就可以,速度可以到满速

一套鼠标和键盘控制电脑也是基本的功能
以及 Mac 和 Windows 也是可以的:

功能和 Windows 下无异
但是这个 GUI 不同:

MAC 下的客户端是这样的
当然也是可以共享 USB 外设:

这样
但需要安装软件,在插入后会有一个盘符,点击就可以安装了。
咦?这么好用的东西是如何设计的?我决定给它拆了!

从两个边缘用钳子把塑料抠掉
然后一拽就出来了:

啊这!怎么这么简单的样子!

背面也是没有什么东西了

重点看这里,应该是一个主控和一个 falsh

后面在硬件设计里面也找到了

看 Logo 是紫光的

这个芯片看着使用起来很简单,因为是 USB 的原因所以有一个外置的晶振
外壳挡住了发光部分:

hhh,应该是没有拆坏,可以看到里面是全亮的
同样安卓装一个 App 以后也是可以和主机端进行连接的:

安卓
其余常规的文件拷贝什么的就不展示了,这里就展示一下投屏功能,这样可以方便的截取一些手机画面,以及内部的文件也可以直接复制出来。
仔细看了丝印,原来是CH9338:

原来是专用芯片,怪不得
hhh,我去习惯性从 WCH 的手册里面找找它的定位:

还有USB3.0版本的CH9339,回头有机会也整一个试试
首先是USB2.0 高速对拷控制芯片,有 5 个 USB 接口,支持 2 个上行口连接两台电脑(PC1/PC2),内部集成 3 个下行口的双侧 USB HUB,可以把 3 个 USB 设备口“动态分配”给 PC1 或 PC2,实现不拔插的外设切换共享。 还提供 多信息透传通道/虚拟设备通道,配合上位机软件实现:键盘鼠标/触摸板/剪贴板/文件/数据/USB 外设等资源在多终端间切换共享。
工业级(-40~85℃),QFN32 4×4mm。

图里面也看到了,很小巧
手册明确写了:通过上位机发送切换命令,可以把 HUB 的 3 个下行口“任意分配给 PC1 或 PC2”,做到 USB 设备在两台 PC 间切换连接。并且它用 PC1_DET / PC2_DET 监测两台 PC 的 VBUS 电压,判断连接状态。
CH9338 说得很直接:通过 USB 厂商驱动 + 上位机,可实现两台电脑间数据传输;一端下传的数据可由芯片上传到对端。
首次使用是需要安装软件的,这里展示 Windows 和 Mac 下的安装:


外部 3.3V:VDD33(5,19),各 0.1uF 去耦。
内核 1.2V:AVDDK(10)(1uF 去耦)、DVDDK(28)(0.1uF 去耦)。
上行到 PC1:PC1_UD±(6,7);上行到 PC2:PC2_UD±(15,16)
下行 DEV1/2/3:DEV1_UD±(11,12)、DEV2_UD±(13,14)、DEV3_UD±(31,32)
PC1_DET(3)、PC2_DET(4):检测 VBUS 状态(内置约 40k 弱下拉;>2.0V 判连接,<0.8V 判断开)。
PC1_LED(1)、PC2_LED(2):连接状态指示(低=连接,高=断开);在某些模式下还能闪烁提示“光标焦点在哪台”。
CH9338 支持整体过流/整体电源控制,典型搭配 CH217K 限流配电开关:

应该是这个
PWREN#(27):整体下行端口电源使能(低有效)。
OVCUR#(24):整体下行端口过流检测输入(低表示过流)。

手册的图 5-1 说明了用 CH217K + 电阻设置限流门限
手册第 8 页给了整套参考设计:
SPI Flash:存驱动/上位机,给 USB 虚拟光驱用。 (这个就不说了)
CH412K:作为 USB 信号的 ESD 保护(文中建议其 VCC 接 3.3V)。

CH213K 理想二极管:防止外部供电向上行 USB 口倒灌,或两个上行口之间互相倒灌;也说了可用肖特基但压降更大。

走线/电流承载:PC_VBUS/DEV_VBUS/GND 要尽量加宽,多过孔并联。
扩展到 USB3.0:看到有 USB3.0 的芯片版本 CH9339,回头有机会再了解一下。
没想到一颗主控就可以完成这么多的设计,以往 WCH 的芯片只是给一个连接方式,这次是给了一个上手可用的方案;CH9338 KMFU 方案主要由CH9338 单芯片和多平台APP 构成。
CH9338 芯片使用基于青稞RISC-V 内核的多USB主机和多USB设备的SOC架构,易于集成,可用于显示器、电脑、扩展坞等通过USB 新增外设和数据共享功能。
在具体设计的时候,其实离复杂的 USB 协议非常远,只要正确的连接晶振以及外围保护器件等就可以正常运行,是属于易上手,易使用的一档。