1、简单易用,可快速上手
2、流畅支持300个器件或1000个焊盘以下的设计规模
3、支持简单的电路仿真
4、面向学生、老师、创客
1、全新的交互和界面
2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计
3、更严谨的设计约束,更规范的流程
4、面向企业、更专业的用户
标准版 Xbox-HID-串口-U盘 四合一模块 XPLUG-CH
简介:CH549模拟Xbox、HID手柄、模拟CH340、U盘,四合一Demo工程,含2.4G收发和FLASH存储
开源协议: GPL 3.0
基本信息
本模块通过USB实现了4种工作模式,分别为:
1、模拟Xbox手柄,将2.4G接收到的数据转为Xbox手柄数据包传给电脑。
2、HID复合设备,包含键盘、鼠标、触控、媒体控制、HID手柄(PS4),以及自定义HID通信。代码默认将2.4G接到的数据转为HID手柄数据传给电脑。
3、模拟CH340,可以使用CH340/341的驱动让电脑识别到串口,支持波特率设置命令和RTS、DTR流控命令。
4、模拟U盘,使用外部FLASH作为存储介质。
本项目主要用于展示这4种设备在USB是如何实现的,供学习参考,硬件电路仅作最基本的支持,重要的是软件实现。
实际使用可自行修改,比如对于模拟Xbox和HID功能,可以不用2.4G而是直接在板上加按键和摇杆直接让主控读取并传给电脑,做成小手柄;
对于模拟CH340功能,可以和其他MCU如ESP32组成双主控系统,让CH549做低级工作,ESP32做高级的,且当ESP32需要烧录时,
CH549可以直接充当转串口芯片,而CH549本身又是USB直接烧录的,因此实现一个USB接口烧录两个(甚至更多)芯片且无需外加转串口芯片。
硬件
主控 CH549G,SOP16封装,支持USB直接烧录(该芯片作为51机,性能较佳且常用外设都有,使用方便,此外还有更多引脚的封装)。
5V转3.3V的LDO使用 662K. 芯片,为主控、无线模块和FLASH供电。
FLASH使用 W25Q128,SOP8封装,16M字节空间。若改用更小的需要修改代码宏定义。
无线模块使用基于 Si24R1 的2.4G模块(基本兼容NRF24L01),某宝优信电子搜Si24R1可找到。
一个无声按键,优信搜6*6*5按键可找到。
两个LED,在程序注释中认为LED1为绿,LED2为蓝,不过实际可自选颜色。
软件
0、模式切换
代码默认由按键控制模式切换,若按住按键上电,则为模式2;直接上电为模式1。可在代码中修改。
在工作状态下长按按键达到约1s,主控会关闭USB并反转LED1状态以提示,当松开按键,则触发软件复位,复位后切换模式。
默认的模式切换逻辑(复位前模式->复位后模式):1->3,2->4,3->2,4->1。模式切换逻辑可在代码中修改。4种模式如下:
1、模拟Xbox手柄
模拟了Xbox手柄的USB实现,具体可以参考这篇文章:Xbox控制器USB实现与数据格式
代码默认将2.4G接收到的数据转为Xbox手柄数据包传给电脑,2.4G数据包的组织格式见附件资料。
2、HID复合设备
HID设备:键盘、鼠标、触控、媒体控制、HID手柄(PS4),使用端点1上传,均以HID报文的形式上传数据,具体格式参考HID报文描述符。
自定义HID通信:使用端点2上下传,可在PC端以HID方式进行自定义通信。
代码默认将2.4G接到的数据转为HID手柄数据传给电脑。
3、模拟CH340
当电脑有CH340/341驱动时即能识别到串口,枚举和波特率、流控命令使用端点0,串口数据使用端点1上下传,端点2用于输入型流控信号上传(不过未实现)。
本demo板没有使能硬件串口,因为串口TX引脚与FLASH冲突,若不用FLASH则可以用串口引脚,使之成为真正的USB转串口芯片。
也可以尝试将串口数据传到2.4G模块上去,变成一个无线串口模块(代码只做了把2.4G接收数据用模拟串口上传的示例,而且没用缓冲区,很原始的示例)。
支持波特率设置命令,不过仅接收上位机设置的波特率数值,不会实际使用,这也是因为未使用硬件串口。
支持RTS、DTR流控命令,可在宏定义中修改RTS、DTR的引脚和极性。代码默认RTS对应LED1,DTR对应LED2,反极性。
4、模拟U盘
对U盘常用的BOT通信和SCSI(UFI)命令做了简单的支持,具体可参考这些内容:USB大容量存储BOT,或USB相关规范文档。
由于NOR FLASH的特性,以及主控的性能限制等,模拟U盘速度较慢,尤其写入非常慢。
代码默认读取时LED1闪烁,写入时LED2闪烁。
首次接入模拟U盘时PC会提示格式化,之后即可使用,而文件系统也在此过程由PC建立。
由于文件系统是PC建立的,因此主控只能得到原始数据流而不能解析文件,若需要让主控能读写文件则主控端需要挂载文件系统。
烧录
烧录软件为 WCHISPTool,可到沁恒官网搜索下载。烧录方式为CH549的USB直接烧录。
下载配置务必按照下图设置(尤其是最后一项下载配置脚必须为P51):
对于未烧过序的新CH549芯片,一般上电会自动进入下载模式,在烧录软件中能检测到设备。
若不是,则需要先用电阻上拉P51引脚(即USB DP线)到3.3V,再上电,触发烧录模式。
若不便完成上拉操作,或作为开发者需要不断修改程序,可考虑使用下载触发模块:CH5x下载器或USB开关
烧录后初次进入U盘模式时,由于FLASH没有数据,电脑会提示需要格式化,完成后即可正常使用。
其他
本项目主要展示各功能的USB基本实现,不太能保证完美模拟,不过在我自己的Win10上测试各功能均正常。
附件里有一些在研究这些USB实现时的相关资料或笔记,供参考。
展示视频:以后可能会添加
ID | Name | Designator | Footprint | Quantity | spiceSymbolName | JLCPCB Part Class | |
---|---|---|---|---|---|---|---|
1 | 1u | C1,C2,C3 | C0603 | 3 | LCEDA_Lib | C_0603_US | |
2 | 6*6*5_2PKEY | KEY1 | SW-SMD_L6.0-W6.0-P6.00-LS6.8 | 1 | LCSC | 6*6*5_2PKEY | |
3 | 0805 | LED1,LED2 | LED0805-RD_GREEN | 2 | lcsc | LED贴片灯0805 | |
4 | 1k | R1,R2 | R0603 | 2 | LCEDA_Lib | R_0603_EU | |
5 | CH549G | U1 | SOP-16_L10.0-W3.9-P1.27-LS6.0-BL | 1 | LCSC | CH549G | https://so.szlcsc.com/global.html?k=C9900000386&ref=editor |
6 | 662K. | U2 | SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR | 1 | LCSC | 662K. | |
7 | W25Q128JVSIQ | U3 | SOIC-8_L5.3-W5.3-P1.27-LS8.0-BL | 1 | LCSC | W25Q128JVSIQ | |
8 | AM90 | USB1 | USB-AM-TH_AM90 | 1 | LCSC | AM90 | https://so.szlcsc.com/global.html?k=C404965&ref=editor |
9 | SI24R1_NF-03 | VM1 | WIRELM-SMD_8P-L18-W12-P1.27-NF-03 | 1 | lightandelectricity | SI24R1_NF-03 |
展开
加载中...
是否需要添加此工程到专辑?