制作缘由
公司内网只有PS/2接口,希望可以使用无线鼠标(貌似没有PS/2接口的)。而那种USB转PS/2的转接头只是简单的连线,需要键盘或鼠标本身支持PS/2模式才可以正常工作,现代的USB鼠标接收器显然没有考虑这一点。无意中发现有人用Arduino制作过USB键盘转PS/2的装置,那么鼠标一定也可以。这个装置,从原理上来说,就是一个转发器。对于USB鼠标(非蓝牙无线鼠标对主机来说仍是USB鼠标,和有线的没啥区别),他是一个主机,接收来自鼠标的数据;对于真正的主机,他是一个PS/2鼠标,负责向其发送转换过的数据。
PS/2部分
物理接口
如下图,实际有用的只有4根线,1 - Data:用于传输数据(双向);5 - Clock:用于向主机发送脉冲,控制读写数据;3 - Ground:接地;4 - Vcc (+5V) :电源。其中1和2可以接在Arduino任意的数字引脚上(但要避开USB Host Sheild占用的那些引脚,我实际使用的是2号、3号引脚),而3和4分别接在Arduino的5V和GND引脚上,这样不用额外供电,连到主机的PS/2接口就能正常工作。
数据传输(1位)
设备 > 主机 :由设备控制Clock以产生脉冲,首先,设置Data为要发送的位(高/低电平表示1/0),同时保持Clock为高电平一段时间,然后拉低Clock为低电平,产生一个下降沿,通知主机读取(锁存)Data,继续保持Clock为低电平一段时间后释放Clock(恢复为高电平,为传输下1位数据做准备)。。
主机 > 设备:仍然由设备控制Clock脉冲。当主机拉低Data或Clock时表示想要向设备发送(命令)数据,此时设备应该停止发送数据,优先读取来自主机的数据,待主机释放Clock(变为高电平)时,表示设备可以开始读入数据。首先,设备让Clock保持高电平一