加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于LPC5516的SDVX手台技术分享-自制音乐游戏控制器

05/17 09:01
3560
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
电路板图(3)
相关方案
  • 方案介绍
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

本感觉一个键鼠复合设备没啥好讲的,但是应不住日天兄再三之邀,写下此文。

首先简单科普一下USB的速度,对于USB2.0来说,一共有3种速度

低速(USB1.0):1.5Mbit/s

全速(USB1.1):12Mbit/s

高速(USB2.0):480Mbit/s

对于大部分支持USB2.0的单片机来说,一般都是支持的全速模式,高速模式是比较少见的,而这次使用的LPC5516是全速模式与高速模式都支持的。

我们先看一下手台的USB类型。

可以看到,识别出来的是高速USB,但是事实上对于键盘鼠标这种低速设备来说,完全是大才小用了,这里我就是属于弄着玩玩,看起来比较酷炫。

手台本身由两部分组成,键盘与鼠标,可以看到配置描述符里面有两个接口

分别就是鼠标跟键盘了

USB鼠标部分:

鼠标发送给PC的数据每次4字节

BYTE1 --

|--bit7~3: 无意义

|--bit2: 中键,1按下 0抬起

|--bit1: 右键

|--bit0: 左键

BYTE2 -- X坐标变化量,负数表示向左移,正数表右移。用补码表示变化量

BYTE3 -- Y坐标变化量,负数表示向下移,正数表上移。用补码表示变化量

BYTE4 -- 滚轮变化,0x01表示滚轮向前滚动一格;0xFF表示滚轮向后滚动一格;0x80是个中间值,不滚动。

USB是一个主机向从机查询的协议,对于鼠标来说,查询的速度越快,连续性越好,这里我程序设置的主机轮询速度为2ms,也就是鼠标部分1S通信500次。

这个参数在鼠标上叫回报率,也叫刷新率,简单理解就是1S能上传多少次数据到电脑,一般鼠标是125Hz。我的鼠标测试(罗技 M90)

手台数据测试

500Hz的回报率对手台来说完全足够。

USB键盘部分:

键盘发送给PC的数据每次8个字节

定义分别是:

BYTE1 --

|--bit0: 左Ctrl,1为按下 0为抬起

|--bit1: 左Shift

|--bit2: 左Alt

|--bit3: 左GUI

|--bit4: 右Ctrl

|--bit5: 右Shift

|--bit6: 右Alt

|--bit7: 右GUI

BYTE2 -- 保留

BYTE3--BYTE8 -- 普通按键

所以说一般的USB键盘只考虑软件的话只能做到6键无冲,如果需要更多,那只能加点接口,也就是那些支持多键无冲的键盘(需要硬件支持)。

对于手台来说,上面只有7个按键,这7个按键是直接接到IO上的。硬件完全支持无冲。而且其中一个按键还是确定键,平时使用中软件只要保证6键无冲即可。

同时按下6键,可正常识别。

键盘另一个比较重要的就是反应速度了,也就是按下按键到电脑反应的时间(其实我觉得完全不重要,因为键盘又不像鼠标一样是个连续的过程,人的反应速度才多少)。

软件上配置的主机轮询速度就是4ms,也就是理论上,按下按键到电脑有反应,最长要4ms。

这个只能说,主观感受是完全没问题的。

对于LPC5516来说这种应用只能说是毛毛雨了,150MHz的主频,完全轻轻松松。

按键与编码器

按键、编码器通通外部上拉加电容消抖,软件部分没添加消抖,使用中未出现按键抖动的问题。

编码器代码采用外部中断的方式写的,稳定性还可以,就是买的编码器分辨率太低了,效果不太理想。

WS2812:

代码上使用了SPI去模拟,没有做按键与灯的绑定代码,目前只支持全彩渐变呼吸灯的效果。目前板子硬件上有11个灯,驱动毫无压力。

代码是用了mgn的程序改巴改巴搞出来的,原地址: https://www.nxpic.org.cn/module/forum/forum.php?mod=viewthread&tid=620562

程序开发上,NXP官方提供了很详细的例程,很方便就能上手,手台的软件部分的开发时间加起来不超过2小时。MCUXpresso Config Tools确实好用,配IO配时钟不要太简单,

最后总结一下:对于键鼠设备来说,全速USB就完全足够,因为键鼠是走中断传输模式的,速度的提升到了1ms之后的意义就不大了,太快反而给主机带来了负担。比如现在我在使用的键盘就是全速USB的,能查到的鼠标信息,好的游戏鼠标的回报率就是500Hz或者1000Hz了,换算到USB速度上,差不多也就是全速USB的水平吧(手上没有这么高级的玩意,猜的速度,欢迎有大佬在帖子留下自己鼠标的测试记录)。

对于我这个手台来说LPC5516可以说性能严重过剩。还是得想个办法逼出极限性能来啊。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
OPF520 1 TT Electronics OPTEK Technology Receiver, 5Mbps, Through Hole Mount, ROHS COMPLIANT, PLASTIC, 3 PIN
$4.78 查看
FC5BQCCMM20.0-T1 1 Fox Electronics Parallel - Fundamental Quartz Crystal, 20MHz Nom, SMD, 4 PIN
$0.99 查看
TJA1043TKY 1 NXP Semiconductors TJA1043 - High-speed CAN transceiver SON 14-Pin

ECAD模型

下载ECAD模型
$1.8 查看

相关推荐

电子产业图谱