r7SCWfzws

HID keyboard to serial port module based on CH554G

 
Overview

引言
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+SYSTEM_UP


CH554上电
是上电后发送的第一个包。
N+CHIP_ID=%02X

芯片ID
回报芯片ID
对于CH554,此处芯片ID为固定的0x54,即"N+CHIP_ID=54
"。
N+WAITING


CH554就绪
是上电后发送的第三个包。发送此包代表着CH554已经打开了USB Host准备握手。
N+DEVICE_IN


CH554检测到USB设备插入
注意,插入不代表HID握手成功。
N+DEVICE_OUT


CH554检测到USB设备拔出
 
N+DAT: %c%c%c%c%c%c%c%c

8字节HID数据包
CH554回传HID数据包
此处若为键盘,需要另外参考键盘的HID数据包格式。
N+KBD_ERR_%02x

报错代码
CH554在与键盘通讯途中报错
可能是通讯途中USB键盘断开。
N+KBD_ERR_NO_ENDP


CH554找不到键盘的有效端点
 
N+ENUM_ROOT_ERR_%02X

报错代码
CH554枚举设备失败
通常是插入的设备不受支持。
N+ENUM_HUB_ERR_%02X

报错代码
CH554枚举HUB失败
可能是插入了空HUB,或HUB不受支持,或HUB供电不足。
 
后记、目前发现的BUG
①目前版本若USB供电不足,插入USB设备时容易导致全系统重启,下一版将添加一个大电容。
②目前版本USB公口未做保护,容易被击穿,下一版将添加USB-LC6。
③目前版本没有专门的串口测试点,下一版本将添加飞线点。
④目前版本不能更改CH554G波特率,下一版考虑添加GPIO控制波特率的功能,做的更像是一个键盘转串口芯片。
⑤目前版本只能单向回传HID的数据,下一版考虑添加通过串口接收数据控制芯片的功能。
⑥别在意工程名的CH554T,那是历史遗留问题。
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2025-06-19 19:21:57
  • Capacitive touch button chip information sharing
  • InterruptInitialize cannot return, what's going on?
  • TI C6000 DSP Notes
  • Research on the design of DDS noise signal generator
  • [Recruitment] [Turing Robot] Hardware Engineer
  • Flash API Error #65535

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号