
基于CH554G的HID键盘转串口模块
简介
基于CH554G的键盘转串口模块。
简介:基于CH554G的键盘转串口模块。开源协议
:CC BY-NC-ND 3.0
描述
引言
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
克隆工程

评论