站内搜索
发作品签到
标准版

基于CH554G的HID键盘转串口模块

工程标签

2.8k
0
0
3

简介

基于CH554G的键盘转串口模块。

简介:基于CH554G的键盘转串口模块。

开源协议

CC BY-NC-ND 3.0

创建时间:2022-12-28 01:46:26更新时间:2023-07-27 09:56:11

描述

引言

WCH旗下有很多串口转HID芯片,比如CH9329(串口转HID键盘/鼠标/自定义HID芯片)、CH9328(串口转HID键盘芯片)、CH9326(串口转HID芯片)。但是,这些芯片的USB都是Device,也就是说,是将外设模拟成鼠标/键盘和电脑进行通讯。而我需要的功能其实是让不支持USB-Host的单片机,以串口方式读取USB HID键盘回传的数据。

 

物料介绍

本作品使用了一颗CH554G芯片作为主控,而板上的CH340C是便于调试的,可以根据自己的需求更改板子原理图,或者简单摘掉这颗CH340C,飞线连接(没有预留飞线口是我的失误,但是打了不少就没改)。

 

USB口与烧录方法说明

Type-C口连接的是CH340C。

USB-A口连接的是CH554G。

按住BOOT,使用USBA公对A公线连接A口与电脑,然后使用WCHISPStudio烧录附件中的固件。拔插之后可自动运行主程序。

CH554G的USB除了烧录,只能用来插入USB键盘!插入其他设备可能导致意想不到的错误!切勿插入HID混合设备(如部分2.4G键鼠套装),可能导致CH554G卡死、无法按预期工作!

 

LED灯指示

竖着拿板子,SERIAL左侧的LED2为电源/HID数据包指示灯;SERIAL右侧的LED1为USB状态指示灯。

LED2上电后即亮;

LED1上电后熄灭;在上电后,USB设备插入时LED1灯会亮起(无论是否为HID设备),USB设备退出时LED1灯会熄灭,LED2灯会重新亮起(无论之前是否亮灭);

在有USB设备插入的时候,每传输1个数据包,LED2会转换一次亮灭状态。

注意:在正常运行、无USB设备插入且LED1灯熄灭时,按下BOOT键,LED1灯会点亮,这是正常现象,因为BOOT键会上拉CH554G的DP接口,刚好是USB设备握手的步骤。

 

串口数据格式

波特率115200,所有的包均以"N+"开头,以"\n"结尾,详细的格式如下:

包头 数据 含义 备注
N+SYSTEM_UP\n CH554上电 是上电后发送的第一个包。
N+CHIP_ID=%02X\n 芯片ID 回报芯片ID 对于CH554,此处芯片ID为固定的0x54,即"N+CHIP_ID=54\n"。
N+WAITING\n CH554就绪 是上电后发送的第三个包。发送此包代表着CH554已经打开了USB Host准备握手。
N+DEVICE_IN\n CH554检测到USB设备插入 注意,插入不代表HID握手成功。
N+DEVICE_OUT\n CH554检测到USB设备拔出  
N+DAT: %c%c%c%c%c%c%c%c\n 8字节HID数据包 CH554回传HID数据包 此处若为键盘,需要另外参考键盘的HID数据包格式。
N+KBD_ERR_%02x\n 报错代码 CH554在与键盘通讯途中报错 可能是通讯途中USB键盘断开。
N+KBD_ERR_NO_ENDP\n CH554找不到键盘的有效端点  
N+ENUM_ROOT_ERR_%02X\n 报错代码 CH554枚举设备失败 通常是插入的设备不受支持。
N+ENUM_HUB_ERR_%02X\n 报错代码 CH554枚举HUB失败 可能是插入了空HUB,或HUB不受支持,或HUB供电不足。

 

后记、目前发现的BUG

①目前版本若USB供电不足,插入USB设备时容易导致全系统重启,下一版将添加一个大电容。

②目前版本USB公口未做保护,容易被击穿,下一版将添加USB-LC6。

③目前版本没有专门的串口测试点,下一版本将添加飞线点。

④目前版本不能更改CH554G波特率,下一版考虑添加GPIO控制波特率的功能,做的更像是一个键盘转串口芯片。

⑤目前版本只能单向回传HID的数据,下一版考虑添加通过串口接收数据控制芯片的功能。

⑥别在意工程名的CH554T,那是历史遗留问题。

设计图

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

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
USB_Keyboard.hex
21
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

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

底部导航