嗨〜大家好,我是Phage Studio的创始人Egahp(稍后我会正式与您见面)。我喜欢做一些奇怪的事情,但我不想重复自己。
在这篇文章中,我将向您介绍键盘延迟的一点知识,如果有问题,请指出
实际上,很被误导了,以为轮询率(刷新率)是延迟,但实际上不是延迟。
键盘延迟由这些部分组成
1.轴触发延迟
2.电路延迟
3.防抖动延迟(可避免)
4.数据处理延迟
5.数据链路传输延迟
6.PC端处理延迟
接下来,我们将逐一介绍延迟时间

一、首先是轴触发延迟
这更容易理解。它主要与键行程有关,其次是弹簧压力和结构。从压机开始到电路的第一次闭合,这段时间称为轴触发延迟。该延迟是轴体。搬运时,机械轴,薄膜轴,光轴,磁轴无法避免。请注意,这是从压紧动作开始到电路闭合为止。磁轴可以调整触发按键,因此可以调整这部分延迟。典型的樱桃由于短按键,银轴也被称为适用于游戏。降低弹簧压力可以在一定程度上减少这种延迟。例如,两个相同的G,一个是正常的6 2. 5g弹簧,另一个是窗口的较轻弹簧,啊,短按键和低压降低了轴的触发延迟,但增加了概率错误的触感。
二、然后电路延迟
兄弟提到“优化响应速度取决于电容矩阵”,我想他应该已经对硬件去抖动有所了解,但这有点不合时宜。众所周知,实际条件并不理想,电路必须具有一定的寄生电感和电容,这对延迟有一定的影响。所谓的硬件去抖动电路主要有两种类型,其中一种是由RC组成的按钮去抖动电路,它使用电容器。两端的电压不能突然改变以消除抖动。相同的硬件反跳有很多缺点。例如,如果电容器的电容值太小,则不能完全消除抖动,而太大则会引起触发延迟。详细的原理可以理解这一点,另一种使用RS触发器,但仅适用于几个键,不适合用作键盘。
理想的按钮按下和抬起应该是方波,但实际上,在上升和下降沿上有重复的波形,并且有一定的时间,
我只是画了几张图来显示电路延迟。这部分延迟无法完全避免。寄生电容和电感将一直存在,但是这部分延迟非常小,可以忽略不计(ns级)

这是理想的按下和抬起按钮。这是方波。

这是忽略抖动的近似表示。在被确认为高电平之前,上升沿必须上升到H。下降沿是相同的,所以会有一个很小的延迟。

三、接下来,我们将讨论反跳延迟,这是延迟的主要根源之一。
由于机械轴触发的原理是两个弹片相互接触导致短路,因此机械接触很难避免弹性碰撞。关闭它的时间将非常短,从几毫秒到几十毫秒。触发原理和质量都相关。如果它是更好的MX结构轴,则通常可以保持在5ms以内,而普通按钮则可以保持20ms。
我还画了一幅画来近似

接下来,我们来谈谈常用软件去抖动方法的延迟去抖动原理。
当我们看到水平位于底部(红线下方)时,我们认为该按钮已被按下,而当我们看到水平较高(在绿线上方)时,我们就按下了按钮。
1.如果软件不处理该怎么办?该程序速度极快,每秒可扫描数千次。扫描矩阵只需0.x ms。当我们读取低电平时,抖动周期随之而来。如果不进行处理,我们将处于抖动周期的许多次。读取的未知结果可能很高或很低,这将导致软件确定重复的压紧和抬起动作已导致组合。
2.延迟去抖动,当我们读取低电平时,我们将延迟5ms。此时,抖动周期已结束。如果再次为低电平,则表示已按下该按钮,因此第二个判断为+延迟,以避免出现组合情况,但是此方法有致命的缺点,引入了延迟,并且相当大。
3.在按下按钮之前,未命名的算法将抖动。如果未按下该按钮,是否还会发生?当然不是,当我们按下它时,程序读取低电平,然后让软件将其判断为按下。然后我们仍然处于抖动周期,并且程序的下一个扫描结果是不确定的。我们应该做什么?然后,我们让程序在一段时间(例如5ms)内放弃读取结果,以使我们已经过了抖动周期。当水平被下拉时,确定按钮被按下。让我们再次看一下电梯。同样,我们在第一次读取高电平后判断按钮被抬起,并在一段时间后放弃读取结果,因此我们不会引入延迟。这样会发生什么?如果有足够理想的轴和足够快的人,他只能将按钮保持在5毫秒内才能执行此操作,但此程序将忽略他的抬起,但没有这种事情。对于那些速度快的人,没有轴的反弹仅需要5ms,因此不会造成钥匙丢失。
这是导致延迟,抖动的元凶之一。

四、数据处理延迟
好的算法可以使数据处理非常快,而不好的算法也可以导致非常慢的速度甚至丢失密钥。这方面与特定的固件和主控有关。例如,一个简单的板栗,Atmel的32U4,一个主频率为16Mhz的8位单片机(与ST的STM32系列的STM32F411CCU6相比)和一个32位的Arm Cortex-M4核心单片机(具有最高频率为96Mhz(超频)。我认为每个人都理解如此巨大的差异。
将8位计算机与32位计算机进行比较是不寻常的。因为几乎没有可比性。
至于大量生产的键盘,大多数大量生产的键盘都是定制芯片。为什么?当然是为了降低成本。当然,高端产品并不短缺。我记得小米游戏键盘是stm32微控制器。我记得罗技的Light Speed是NRF52832(已忘记),它也是32位Arm Cortex-M4F核心单芯片微处理器,时钟频率为64Mhz。此。密钥未打孔,这是一个很大的错误。只是标准键盘无法实现真正的全键打孔。

有多种方法可以实现不打孔的全键,对此将不做深入讨论,所涉及的内容更加复杂,一种是多接口方法,该方法是通过将多个USB标准键盘组合到一个设备中来实现的。 ,这似乎是另一种方法是修改HID报告描述符的位图方法。这是真正的全键非紧急键盘,即使按下所有键也不会发生冲突。而且,弹出多个键盘并不像使用多种界面方法(设备管理器可以看到没有打孔的26个键实际上是多个键盘)
好!好累,让我们继续
蓝牙键盘
BLE 5. 0 BLE 4. 2 Gatt(通用属性配置文件),这是什么? BLE是一种蓝牙技术,称为低功耗蓝牙,Gatt是蓝牙SIG的上层协议之一。该联盟规定了一系列配置文件,可以快速创建蓝牙应用程序。 (这句话有些松散)
让我们讨论蓝牙键盘的延迟。 BLE还具有一个Interval参数。此参数有上限。最快的是7.5ms。这是什么?
这类似于轮询速率,但与轮询速率略有不同。 PC和键盘将每7.5ms交换一次数据,以确保链接和数据传输。当我们要发送数据时,协议栈将自动处理,等待下一次数据交换,然后将其发送出去,因此蓝牙协议的传输延迟为0- 7.5ms,就在您要交换数据时,您需要发送数据,并且在数据交换之后,您需要发送数据。请注意,这只是一种理想情况。实际上,存在一系列条件,例如额外的数据处理时间,无线传输延迟,由丢包和重传导致的额外延迟,信道选择等,因此蓝牙键盘很难与有线键盘相比。
最后一个2. 4G协议键盘
例如,著名的Youlian LightSpeed,Logitech LightSpeed是在Nrf的2. 4g协议栈上开发的,首先让我们分析一下,有线键盘->电缆-> USB HID协议-> PC端,Logitech LightSpeed键盘-> 2. 4G专用协议->电缆-> USB HID协议-> PC端,我想看到这里的每个人都明白,2. 4G协议键盘的上限本质上不如有线(胡说) ,但是为什么体验仍然很好?那是因为这是上限。有线垃圾与LightSpeed无与伦比。 2. 4G协议栈可以指定间隔更短,并且Logitech具有一系列措施,例如非常先进的抗干扰跳频算法,因此尽管2. 4G的上限不如有线网络高,它也可以使大多数所谓的有线游戏“键盘升起”。
有线网络之间也存在巨大差距。必须将可比的东西放在一起并进行比较。
6.PC端处理延迟
动动手,让我们做一个实验。您打开任务管理器页面,然后单击性能标题栏。我们只注意CPU占用率,并将鼠标的返回率(轮询率(刷新率))调整为最高,然后在鼠标垫上画一个圆圈。注意不要停止。制作一个连续且平滑的花环。现在,请注意您的CPU使用率,并重复几次实验。每个人都应牢记自己的结论。为何垃圾计算机偶尔不响应游戏鼠标?那是因为CPU不够用。键盘和鼠标手柄均为HID设备。它们中断传输并占用大量CPU资源。 PC端处理延迟,这不应该写在键盘延迟中,但是我仍然写道,您现在使用垃圾CPU运行这堆应用程序,与3990x空闲PC相比,CPU利用率达到100%,甚至尽管相同的键盘延迟当然是不同的。什么是传输中断?这意味着CPU首先放下东西,然后首先进行操作(以易于理解的术语)。这种延迟很难测试,但是有很多方法。
好的,到此结束。一次完成写作有点累。每个人都很难在这里看到。如果有错误,请指出并喜欢它们。下期将写关于如何花费25元购买设备的测试键盘的延迟。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-349899-1.html
不能说出尊严来