为什么鼠标需要晶体?


22

我在看这张旧鼠标(原USB鼠标)的原理图:

在此处输入图片说明

当我注意到它上面有一个水晶(Y1)时。我很好奇为什么鼠标需要计时器?它不能使用计算机上的时钟吗?另外,如果它有自己的晶体,会不会与CPU时钟不同步?


1
您从哪里获得原理图的?存在一些错误:例如,光电二极管的极性相反。
凝结


7
也许“晶体”实际上只是一个陶瓷谐振器。顺便说一句:为什么您期望鼠标内部没有时钟生成?甚至有可能在计算机内部甚至主板上有多个子电路,它们都有自己的时钟生成器(晶体振荡器)。
凝结

4
正如@OlinLathrop的回答所说,鼠标MCU并没有试图与主机系统的微处理器(MCU)保持同步。鼠标MCU只希望与通信端口同步,无论是USB,RS232C还是其他任何端口。
TonyM '17

5
从您的链接看来,这只鼠标旨在欺骗操纵杆。如果操纵杆接口的设计没有时钟信号,则鼠标没有可用的时钟信号。
Photon

Answers:


25

MOS 5717很可能是微控制器或执行代码的某些部分。它需要一个时钟才能运行。

但是,仅需一个微型时钟就无需晶体精度。那可能是为了交流。USB需要相当高精度的时钟。

鼠标不需要跟踪实时,也没有理由使其与CPU时钟同步。它的USB时钟必须与主机的USB时钟相距足够近,才能进行通信。在主机中处理鼠标事件发生的时间或鼠标事件之间的时间。鼠标只是发送有关其感觉发生的信息。

添加

以上是针对最初的问题而写的,该问题未提及该鼠标不是USB。由于几乎所有新鼠标都已经使用USB了十年或更长时间,因此在这种情况下进行回答是合理的。当您询问不寻常的事情时,您有责任弄清楚这一点。

尽管没有USB,但此鼠标仍具有需要时钟的处理器。显然,它还使用计时来测量连接到操纵杆的电位器的位置,OP对此没有提及。现在看来,超级猫的评论最相关,因此我将其复制到答案中:

Commodore 64具有电位计输入,该电位计测量通过可变电阻为固定电容器充电所需的时间。软件期望鼠标将电阻值读取为0-255的范围,并且干净地包裹254、255、0、1等。这意味着鼠标必须将其输出脉冲准确地计时到小于0.4的范围内%

1
@ user2417339因为CPU时钟不够准确。晶体为系统提供了这种不足的准确性
M.Ferru '17

9
关键是对于USB,两端必须有一个相当准确的时钟。因此,鼠标需要水晶才能使USB正常工作。为什么不使用主机PC上的时钟?简短的答案是USB不会给设备提供主机时钟的副本。为什么不那么复杂呢?在编写USB规范时,许多不同的东西彼此权衡取舍,而这一切都输了。
杰克B

2
唐纳德,请解释一下您的想法是错误的。
奥林·拉斯罗普

3
@OlinLathrop:Commodore 64具有电位计输入,用于测量通过可变电阻为固定电容器充电所需的时间。软件期望鼠标将电阻值读取为0-255的范围,并且干净地包裹254、255、0、1等。这意味着鼠标必须将其输出脉冲准确地计时到小于0.4的范围内%。
超级猫

2
@杰里:他们大多数只是电线,唯一的信息是绝缘的颜色。我发现其中两个是USB D +和D-线,其他的则是鼠标按钮,也许是LED指示灯,或者这只鼠标可能做的其他奇特的事情。
奥林·拉斯罗普

21

MOS 5717可以独立完成大量工作,以通过一组光学编码器创建鼠标功能。

数据表中的描述说的是最好的,

5717是用于Commodore 64的定制CMOS鼠标控制器。它将安装在两个按钮的鼠标主体中,使其能够插入64游戏杆端口并提供对GEOS软件等的鼠标控制。它通过在SID 512uS周期中的不同时间将SID芯片的POTX和POTY线接地来实现鼠标功能,从而为64位提供位置信息。

在ADC可以自由添加到几乎任何IC之前,SID接口使用电位计和输入积分电容器创建的充电/放电时间来估算“电位器”值。5717通过控制POT线上的信号时序来模拟具有数字输出的电位计。


3
为了以防万一,将数据表放在回送机器中。web.archive.org/web/99991232235959/http://...
奥斯卡·斯科格

4

如今,您可以在许多电子设备中看到这样的振荡器。微控制器在每个滴答处执行操作。要控制和了解µC在做什么,您需要一个准确的时钟。大多数µC都有内置时钟,不是很准确

正如@Olin Lathrop所说,对于USB协议或定期进行一些测量,最终需要此准确的时钟...


3

其他答案涵盖了鼠标内部的微型时钟需要做什么。但是,他们还没有涵盖问题的最重要部分:

它不能使用计算机上的时钟吗?

首先要注意的是计算机没有给它计时。如果没有人可以使用,则无法使用。当然,除非您要设置自定义连接器,否则您必须说服所有潜在客户手动修改他们的计算机。除非您的客户都是非常顽固的电子专家,否则这将不是成功的商业策略!

但是更重要的是为什么电脑没有给它计时。为了使时钟足够快以在鼠标中运行微型计算机,它必须非常快-绝对最小为几百kHz,更通常的情况是,对于非常老的微型计算机,您都可以达到MHz。5717显然期望使用4MHz时钟。这里的问题是,除非您对电缆的结构,信号源和信号下沉以及快速数字通信的所有相关有趣方面都非常小心,否则将电缆放下4MHz时所产生的就是无线电发射机。完全可以做到这一点,而无需向全世界广播-USB,DVI和HDMI设法以高速率发送数字数据-但这绝非易事。因此,除非有充分的理由,否则人们通常不会使用长电缆发送时钟。

此外,如果它具有自己的晶体,它是否会与CPU时钟不同步?

完全正确,如果鼠标产生的数据必须由CPU同步读取,则鼠标将需要CPU时钟。(实际上,您可以使用较慢的同步时钟来实现,并在另一端进行倍增,但是为了简单起见,暂时不要忘记这一点。)那么,是吗?

再次,从系统的角度来看,答案显然是“否”。5717在用户移动鼠标时改变其阻力。用户不会以如此快的速度移动鼠标,并且用户可以随时随地移动鼠标,因此不需要时钟同步。最坏的情况是,电阻在读取CPU的途中会发生变化,并且CPU会获得较低的值或较高的值。下次,电阻保持稳定,CPU获得最终值。由于鼠标仅以用户的手的速度移动,因此没有人会在乎或多或少地关心一个样本以达到最终值。

因此,以相反的顺序回答您的问题:

  • 它是否与CPU时钟不同步无关紧要。
  • 有很好的技术原因,除非绝对必要,否则不要通过有线方式发送CPU时钟,在这种情况下,则不是这样。

即使具有现代接口,也建议将数字电子设备从射频设备上移开。(在这种特定情况下,请在USB集线器和业余无线电收发器之间保持一定距离。)
CVn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.