发作品签到
标准版

Xbox-HID-串口-U盘 四合一模块 XPLUG-CH

工程标签

2.7k
0
0
48

简介

CH549模拟Xbox、HID手柄、模拟CH340、U盘,四合一Demo工程,含2.4G收发和FLASH存储

简介:CH549模拟Xbox、HID手柄、模拟CH340、U盘,四合一Demo工程,含2.4G收发和FLASH存储

开源协议

GPL 3.0

创建时间:2023-09-26 21:12:28更新时间:2024-07-12 09:49:17

描述

基本信息

本模块通过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实现时的相关资料或笔记,供参考。

展示视频:https://www.bilibili.com/video/BV1uH4y1W7fT

2024.7.12更新

提供了一套外壳3D设计,分上下两部分,因空间较小未使用螺丝或卡扣结构,合起来后直接在接缝处点胶粘住即可。

没有给LED开通光孔,因为外壳比较薄,一般来说光完全可以透过。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
相关资料.zip
111
2
Keil-C51.zip
97
3
3D_V1.2.zip
11
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航