引言

2018年4月的一天,某手柄刚刚参加完某比赛。结果不尽如人意,遂重新沉迷 osu! 这款音乐游戏,希望能够拥有一台趁手的小型键盘,无奈淘宝价格普遍过百,便尝试自造一台。

全文大部分内容根据自己数月前的经验和操作过程猜测和总结,所以有大量错误在所难免,还请各位大佬包涵并指出错误以改进本文!

总述

本节介绍了 项目的需求,选型,和 首次刷写程序,并使用 例程,完成了基本的 USB键盘 功能,完整项目可在 我的博客 获取,该部分源码可在 百度网盘 提取码33dt 下载查看。

注:
开发环境的操作系统为 Windows 10 1803 x64
在开发过程中可能会需要以下开发设计软件:(本文暂时还全部没用)
Keil μVision 5
Altium Designer 10
AutoCAD 2019

成品设备可在 我的淘宝店铺 直接购买。

从提出问题到解决问题

需求

制作出一个键盘,让其可以响应操作,并且键值可以配置,如果可能的话,最好还有RGB灯光和模拟鼠标按键功能

进行拆分

  1. USB识别为HID键盘设备,可响应操作
  2. USB识别为混合设备,额外包含HID输入设备,开发一个电脑上使用的控制程序用于修改键值
  3. 拥有若干RGB灯光,也可以被配置
  4. USB识别为混合设备,额外包含一个鼠标

选型

搜索某宝,某度和某应,找支持USB的单片机或键盘IC,找到如下可以使用的型号:

  1. WCH-CH340(模拟串口) + WCH-CH9328(键盘IC)
  2. WCH-CH55X(C51单片机)
  3. STM-STM32F10x(ARM32单片机)

最终基于“省钱”和“响应速度够快”两个想法的情况下, 采用 CH551G 型芯片(后期由于IO口不够用更换为了CH552T型),封装针脚定义如下图。

CH551封装

连接面包板

CH551G 为 SOP16 封装,无 DIP 封装版本,故购买了 SOP16 测试座一个(约¥14),将其转为 DIP 插口插入面包板。

接下来,给单片机连接 USB 线以用于连接至计算机,按照针脚定义,USB 以及供电针脚定义如下
P12:USB Data P
P13:USB Data M
P15:VCC
P14:GND
然后,参照 CH552/CH551 型单片机规格书的要求,给 P16 V33 以及 P15 VCC 分别接 0.1μF 电容至 P14 GND 上。

下载安装 WCHISPTool 连接数据线至计算机,可见 标签页 8位CH55X系列 下,在USB设备列表中已识别出设备,显示为 CH551。

设置刷写按钮

按照官方规格书说明,CH55x 提供了内置的 BootLoader ,正常来说按照下图来接就好……但是很玄学……在按照图像接好后并没有什么卵用……

官方ISP按钮原理图

最终我按照下图接线,成功工作……(D+反了别吐槽)

最后实际的接线

刷入例程

下载例程包,然后进入目录 \EVT\EXAM\USB\Device ,按住刚才设置的 刷写按钮 ,打开 WCHISPTool ,切换至标签页 8位CH55X系列 下,在固件中选择目录中的文件 CompositeKM.hex ,进行刷入,连接 P15 到一个按钮,然后接至 GND ,按下按钮,电脑收到按键响应。

这个固件的对应源码是 CompositeKM.C 其中的源码下次再详细说明。

(具体响应是什么我真的忘了……毕竟好几个月之前了……)

碎碎念

各位大佬好……本文本着水分的想法开写,将之前造键盘的过程发布出来进行分享。由于时间有点久远,有一些内容无法准确回忆起来,还望脑部部分缺失内容。

但愿本文还会继续更新下去,越新的内容我或许就能回忆起更过吧,笑。下次更新的内容应该是关于USB描述符相关的内容,尽量不鸽。

最后再水下,SimPad,基于C51的开源2键游戏键盘键盘项目,其中的PC端控制程序使用Electron完成,其中包含的无依赖组件 simple-color-picker (颜色选择器)可用于普通浏览器中,欢迎吐槽和建议。


Handle
58 声望0 粉丝

//console.log("尝试完成毕业设计中")