[ESP8266/ESP32]CH567 自动烧写工具 精华

3504浏览
查看: 3504|回复: 3

[ESP8266/ESP32] CH567 自动烧写工具

[复制链接]
本帖最后由 zoologist 于 2022-10-9 11:40 编辑

最近我在使用 CH567 制作双 USB 设备,在这个过程中,我发现每次烧写程序都比较麻烦。例如,首先要拔掉设备,然后按下 DOWNLOAD 按键,接下来再插入USB端口中,最后才能烧写(值得庆幸的是我预留了RESET按钮,否则还要重新插拔一次)。经过研究和实验,我设计了一个能够自动完成烧写的设备。基本原理是:使用芯片模拟USB设备下电过程(断开 D+D-,再下电);然后通过MOSFET模拟按下DOWNLOAD键(Pin 下拉到GND);再使用芯片模拟USB设备上电过程(先上电,再连接 D+D-);接下来用户就可以在PC上进行烧写;最后再通过MOSFET模拟RESET 键。烧写好的程序就可以正常运行了。
下面介绍这次用到的两颗主要芯片。首先是用于切换USB信号(D+D-)的CH442。它是 DPDT模拟开关芯片,包含2 路单刀双掷二选一开关。CH442CH44X 系列芯片的一款。这一系列是模拟开关芯片,具有高带宽,支持视频信号,支持低速、全速和高速USB 信号的特点。
CH567 自动烧写工具图1
另外一个是 SY6280AAC芯片,用于控制 USB母头(连接CH567)的 USB 供电。
CH567 自动烧写工具图2
这次使用的主控为 DFRbot 出品的 FireBeetle,他的核心是 ESP32。实际上主要功能是通过GPIO来实现的,要求不高,有需要的朋友可以修改为任意的单片机。
最终电路图设计如下:
CH567 自动烧写工具图3
主控部分需要注意的是预留了一个跳线位置,必要时将此短接起来FireBeetle可以直接从USB1取电(例如,FireBeetle支持蓝牙,可以修改代码为蓝牙控制触发 CH567进去下载模式)。
CH567 自动烧写工具图4
下面是2GPIO 通过MOSFET控制的RST PowerDown 引脚。没有触发时,RSTPWDPIN会出现3.3V,当有需要时可以拉低到GND
CH567 自动烧写工具图5
接下来是USB接口和用于切换的CH442E芯片,USB1 USB公头,接入电脑中;USB3USB母头,用于连接CH567CH442E控制USB1 USB信号(IN_D-IN+D+)在USB3DBDC)和断开(S2BS2C)之间切换。
CH567 自动烧写工具图6
最后是SY6280AA芯片,UPW_CTRL控制IN_VCC是否输出到 OUT_VCC 上。
CH567 自动烧写工具图7
这个设计是给FireBeetleShield,最终的PCB 如下:
CH567 自动烧写工具图8
焊接之后照片如下,右侧是 DFRobotFireBeetle,二者可以通过堆叠的方式进行连接。
CH567 自动烧写工具图9
完整代码如下:
  1. <blockquote>#define PWD_CTRL 22
复制代码

使用方法是通过串口接收指令,代码定义了如下五个动作:
1."d" 按下PowerDown
2."f" 抬起PowerDown
3."r" 按下然后抬起RESET
4."u" 模拟断开USB 母头设备
5."p" 模拟插入USB 母头设备

zoologist  高级技匠
 楼主|

发表于 2022-8-22 11:41:01

测试的工作视频
回复

使用道具 举报

zoologist  高级技匠
 楼主|

发表于 2022-8-27 19:46:44

下载附件WCH自动烧写 .zip

完整 PCB 和电路图

特别声明:本制作使用立创EDA设计电路图和PCB,其中BOM提及的元件编号属于立创商城。但是这并不表示本人认可、推荐、认同、建议用户使用立创商城所售商品。本人并不保证、承诺任何人根据本涉及购买使用任何立创商城商品复现本作品能够正常工作。
回复

使用道具 举报

小企鹅  初级技匠

发表于 2022-9-4 16:41:59

厉害厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail