为了 DIY 更带劲,用 CH339 手搓一个四路电流检测、独立开关的 USB Hub,全开源~

在相当长一段时间里,玩电子 DIY 的时候我用的 USB Hub 都是之前用 CH334R 做的一个 4 位 USB 2.0 Hub(见 听人劝吃饱饭,试试CH334R来做USB 2.0 Hub),不过逐渐发现常规 USB Hub 一些不方便的地方,特别是在调试一些设备的时候,需要拔插 USB 连接,一手要按住 BOOT 按钮,一手要拔插 USB 基本上不太现实

因此就想着再做一些更符合自己需求的、更方便辅助电子 DIY 的 USB Hub。

项目介绍

为了更好地辅助电子 DIY 中的调试工作,先列举一下痛点:

  • 需要自带 UART 调试接口,这样可以省掉一个 USB 转串口工具。虽然一些 MCU 也可以通过 USB CDC 进行调试日志输出,但是在 RESET 的时候,USB CDC 会断开连接,不如硬件 UART 可以持续保持连接,从启动时就观察日志输出。
  • 上位机 USB 及下游 USB 均可以独立控制电源,并且是容易操作的方式,从而在进入刷机模式时,可以单手完成 MCU 的断电、上电操作
  • 可以监控 USB 每一路的电流消耗,这样在测试时也可以大概预估项目的功耗水平,也不需要额外连接万用表来检测,要在 USB 中间插入万用表连接也不是特别方便。

在知道要解决什么问题之后,剩下的就是找一找什么芯片适合解决这些问题了。

在熟悉的厂家产品列表找了找,最终定位到沁恒的 CH339 这款 USB Hub 芯片,从官网介绍来看,足以满足我这些需求了。

对于独立电源控制,使用 PMOS + 自锁开关就可以比较方便地处理了,单手就可以按下和释放。

电流检测就简单了,直接串联一个采样电阻,本来用驱动屏幕的 MCU 的 ADC 采样就行了,但是刚好以前玩过一个四路 ADC 芯片 ADS1115 还有剩,16bit 分辨率也高,可以精确到 1mA,就选它了。

硬件选型

  • 主控 USB Hub 芯片:沁恒 CH339W,一款 7 端口多功能 USB HUB
  • 主控 MCU:沁恒 CH32V006,32 位 RISC-V MCU,65KB Flash,8KB RAM
  • 电流检测芯片:TI ADS1115,4 路 16 位 ADC
  • USB 过流保护:沁恒 CH217
  • 屏幕:0.96 寸 TFT LCD 模块,SPI 驱动,分辨率 160x80
  • 电源控制:AO3401 PMOS

CH339W

官网网站: https://www.wch.cn/products/CH339.html

CH339 是符合 USB 2.0 协议规范的 7 端口多功能 USB HUB 控制器芯片,单芯片集成 7 口 USB HUB、USB 百兆以太网、USB 高速 SD 读卡器、USB PD 和 USB 转 SPI、USB 转 JTAG、USB 转 UART、USB转 I2C 接口等功能。

这里主要是用 CH339 的 USB Hub 以及串口、JTAG、SPI、I2C 功能,只能说,CH339 功能太丰富了,以至于我只发挥了它不到一半的能力 😂,一般 4 路 USB 也够用了,像读卡器、百兆以太网没有加进来,一方面平时不太用得到,另外一方面也节省一点 PCB 布线压力 🙈。

ch339-diy-usb-hub-2

CH32V006

官方网站: https://www.wch.cn/products/CH32V006.html

我原来用了相当长一段时间的 CH32V003,但是受制于 Flash 和 RAM 大小的限制,只能驱动 OLED,后来发现 CH32V006,就马上觉得这个更适合我,只比 CH32V003 贵一点点,8 毛的单价,但是提供了 65KB Flash 的 8KB RAM,因此之前就尝试了一下来驱动彩色液晶屏(见 不到 1 元,64K Flash + 8K RAM:CH32V006 直驱彩色 TFT LCD,100 FPS 无压力)。

另外 CH32V006 的 MSOP-20 封装和 CH32V003 是可以 Pin to Pin 替换的,原理图设计的时候,我也是直接照搬之前的了 🙈。

ch339-diy-usb-hub-3

原理图

硬件部分一如既往的使用立创 EDA 进行项目开发。

这个项目本身不是很复杂,主要是外设比较多,CH339 相关部分直接参考官方应用例程就可以了。

CH32V006 部分也没什么复杂的,主要就是将 SPI 连接到 TFT LCD 上,原理图部分就直接从之前 LCD 测试项目中复制过来了。

ch339-diy-usb-hub-4

在最开始的版本中,下游 USB 口还搞错了一次,只将 GND 连接到了采样电阻上,SHELL 直接接地了,忘记了通常在设备端,SHELL 也是跟电源地连接在一起的,因此第一版完全没能测量出电流来。

ch339-diy-usb-hub-5

PCB 布线

这次因为有比较多的元件,并且有大量外部接口,CH339W 包括 4 路 USB 2.0,以及 JTAG、UART、SPI、I2C,因此选择了 4 层板来进行布线,空间上可以稍微宽裕一点。

PCB 布线

四层板布线还是比较宽裕的,USB 信号走了底层,顶层主要是 JTAG、UART 接口等走线,1 层走了电源。

ch339-diy-usb-hub-6

另外反正自用,为了省事,就没加 TVS 相关的保护电路 🙈。

PCB 渲染图

元件布局确定好,拉线拉完,就可以看看 PCB 的 3D 渲染效果图了。

ch339-diy-usb-hub-7

PCB 焊接

在嘉立创打样 PCB 到手之后,就可以焊接了,使用牛皮纸钢网刷锡膏(见 将节省进行到底,使用激光雕刻机和牛皮纸 DIY SMT 钢网),和加热台来完成贴片元件的焊接。

ch339-diy-usb-hub-8

这次换了瓶新的锡膏,效果好多了,使用牛皮纸钢网,CH339W 的 QFN 也能一次焊接成功,可以看到焊点还是挺规整的,测试下来也是全部都正确焊接上了。

看样子锡膏如果不放在冰箱,还是得常买常新,省得每次焊接引脚密集的元件还得用电铬铁补焊 🙈。

ch339-diy-usb-hub-9

固件测试

最后把 0.96 寸屏幕模块插上,给 CH32V006 刷入固件,屏幕正确显示了 4 个 USB 接口的电流就没有问题了~

ch339-diy-usb-hub-10

外壳模型

外壳使用了经典三明治结构,底壳通过自攻螺丝穿过 PCB,固定在上壳上。

因为整体布局比较紧凑,螺丝孔都没有对称排列了 🙈。

ch339-diy-usb-hub-11

另外后面想了想,搞了个双色的电源切换按钮,可以方便地看出按键是按下还是弹起状态 😃。

ch339-diy-usb-hub-12

实测演示

这里使用 CH339 Hub 连接了一个双口的 ESP32-S3 开发板,可以看到在单手举手机拍摄的情况下,另外一个手可以很方便地控制电源开关,并且屏幕可以显示两路电流。

视频

另外 CH339 自带的串口可以直接在串口调试工具中看到,就不额外演示了,和 CH340 转串口一样,这个在 macOS 上也是免驱的,可以直接使用。

项目开源

整个项目都已经开源了,硬件部分在立创开源平台,外壳在拓竹 MakerWorld,可以通过下面的链接查看。

硬件: https://oshwhub.com/wandaeda/ch339-electronic-diy-development/

外壳: https://makerworld.com.cn/zh/models/1775912-ch339-usb-hub-wai-ke

如果硬件项目打不开,可能在审核当中,可以过段时间再尝试。

小结

只能说,得益于 CH339 丰富的功能,用这个芯片做这个 USB Hub 就已经预告完成了一半,剩下的就是简单的使用 CH32V006 通过 SPI 驱动屏幕进行显示了,得益于更大的 Flash 和 SRAM,在屏幕模块价格差不多的情况下,以后 DIY 可以进入彩屏时代了 😃。

现在这个 USB Hub,应该可以支撑相当长一段时间的电子 DIY 工作了~

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>