查看: 4161|回复: 48

[LPC经验分享] 基于LPC5516的SDVX手台技术分享

[复制链接]
  • TA的每日心情
    慵懒
    2024-2-8 09:39
  • 签到天数: 217 天

    [LV.7]常住居民III

    92

    主题

    1111

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7621

    热心会员

    最后登录
    2024-4-22
    发表于 2022-3-29 14:18:02 | 显示全部楼层 |阅读模式
    本帖最后由 az158 于 2022-3-30 14:56 编辑

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

    首先简单科普一下USB的速度,对于USB2.0来说,一共有3种速度
    低速(USB1.0):1.5Mbit/s
    全速(USB1.1):12Mbit/s
    高速(USB2.0):480Mbit/s
    对于大部分支持USB2.0的单片机来说,一般都是支持的全速模式,高速模式是比较少见的,而这次使用的LPC5516是全速模式与高速模式都支持的。

    我们先看一下手台的USB类型。
    微信截图_20220329131832.png
    可以看到,识别出来的是高速USB,但是事实上对于键盘鼠标这种低速设备来说,完全是大才小用了,这里我就是属于弄着玩玩,看起来比较酷炫。

    手台本身由两部分组成,键盘与鼠标,可以看到配置描述符里面有两个接口
    微信截图_20220329133314.png
    分别就是鼠标跟键盘了
    微信截图_20220329133326.png
    微信截图_20220329133337.png

    USB鼠标部分:

    鼠标发送给PC的数据每次4字节
    BYTE1 --
           |--bit7~3:  无意义
           |--bit2:     中键,1按下 0抬起
           |--bit1:     右键
           |--bit0:     左键
    BYTE2 -- X坐标变化量,负数表示向左移,正数表右移。用补码表示变化量
    BYTE3 -- Y坐标变化量,负数表示向下移,正数表上移。用补码表示变化量
    BYTE4 -- 滚轮变化,0x01表示滚轮向前滚动一格;0xFF表示滚轮向后滚动一格;0x80是个中间值,不滚动。

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

    这个参数在鼠标上叫回报率,也叫刷新率,简单理解就是1S能上传多少次数据到电脑,一般鼠标是125Hz。我的鼠标测试(罗技 M90)
    微信截图_20220329124623.png
    手台数据测试
    微信截图_20220329131119.png
    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键,可正常识别。
    微信截图_20220329123230.png

    键盘另一个比较重要的就是反应速度了,也就是按下按键到电脑反应的时间(其实我觉得完全不重要,因为键盘又不像鼠标一样是个连续的过程,人的反应速度才多少)。
    软件上配置的主机轮询速度就是4ms,也就是理论上,按下按键到电脑有反应,最长要4ms。
    微信截图_20220329134159.png
    这个只能说,主观感受是完全没问题的。

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


    按键与编码器:
    按键、编码器通通外部上拉加电容消抖,软件部分没添加消抖,使用中未出现按键抖动的问题
    编码器代码采用外部中断的方式写的,稳定性还可以,就是买的编码器分辨率太低了,效果不太理想。

    WS2812:
    代码上使用了SPI去模拟,没有做按键与灯的绑定代码,目前只支持全彩渐变呼吸灯的效果。目前板子硬件上有11个灯,驱动毫无压力。
    代码是用了mgn的程序改巴改巴搞出来的,原地址: [LPC55]LPC驱动WS2812 LED灯带的几种姿势

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

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


    对于我这个手台来说LPC5516可以说性能严重过剩。还是得想个办法逼出极限性能来啊
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 1938 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17279
    最后登录
    2024-4-24
    发表于 2022-3-29 14:56:54 | 显示全部楼层
    学习学习。
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 23:23
  • 签到天数: 1208 天

    [LV.10]以坛为家III

    22

    主题

    4757

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    8067

    活跃会员

    最后登录
    2024-4-23
    发表于 2022-3-29 15:01:50 | 显示全部楼层
    学习一下,谢谢大佬分享
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    3 分钟前
  • 签到天数: 1277 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13231
    最后登录
    2024-4-24
    发表于 2022-3-29 15:03:45 | 显示全部楼层
    反正5516性能过剩严重, 要不加个摄像头, 可以设别脑袋或者眼球左右晃/转动?
    跟着日天混 ,三天饱九顿!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32017
    最后登录
    2024-4-9
    发表于 2022-3-29 15:12:38 | 显示全部楼层
    sumoon_yao 发表于 2022-3-29 15:03
    反正5516性能过剩严重, 要不加个摄像头, 可以设别脑袋或者眼球左右晃/转动? ...

    这是个好主意啊
    签到签到
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    789

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2716
    最后登录
    2024-4-4
    发表于 2022-3-30 09:21:28 | 显示全部楼层
    来学习了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2022-3-30 09:27:38 | 显示全部楼层
    学习了,认真地读了下来。
    有一个问题:x坐标的变化量与byte的bit4组成9位的偏移量。这里byte指得哪个字节啊?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92618
    最后登录
    2024-4-24
    发表于 2022-3-30 09:40:36 | 显示全部楼层
    感谢大佬分享,认真学习
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2 小时前
  • 签到天数: 1781 天

    [LV.Master]伴坛终老

    65

    主题

    7539

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    12751
    最后登录
    2024-4-24
    发表于 2022-3-30 09:47:05 | 显示全部楼层
    感谢大佬分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    前天 10:34
  • 签到天数: 2110 天

    [LV.Master]伴坛终老

    56

    主题

    4772

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    24801
    最后登录
    2024-4-22
    发表于 2022-3-30 10:01:56 | 显示全部楼层
    这个厉害了,向大佬学习
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-24 13:00 , Processed in 0.142896 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表