Xbox-HID-串口-U盘 四合一模块 XPLUG-CH - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

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

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

开源协议: GPL 3.0

(未经作者授权,禁止转载)

创建时间: 2023-09-26 21:12:28
更新时间: 2024-03-21 23:05:21
描述

基本信息

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

展示视频:以后可能会添加

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
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

展开

工程视频/附件
序号 文件名称 下载次数
1

相关资料.zip

64
2

Keil-C51.zip

50
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP