众所周知,PS/2是一种很常见的键盘鼠标接口,很多开发板上都有,不论是单片机还是FPGA,基本例程都少不了PS/2控制器。但是,绝大部分代码都是作为PS/2主机来读取键盘鼠标发送的数据,很少有作为键盘鼠标设备来跟电脑通信的。Arduino倒是有几个PS/2键盘的库,只是难以移植,而用FPGA实现PS/2设备的方案,一个字都搜不到!因此作本文以记录笔者实现FPGA模拟PS/2键盘的全过程,希望能对大家有所帮助。
PS/2接口不支持热插拔!!!
PS/2接口不支持热插拔!!!
PS/2接口不支持热插拔!!!
《PS2技术参考》(Adam Chapweske著)是教科书级的参考资料,一定要潜心拜读。文章较长,一次性读完肯定记不住,最好先大致浏览,待遇到问题时反复查阅。
为便于理解,在此冒用现代网络技术的概念。
通常电脑上是母的,键盘和鼠标是公的,键盘是紫色,鼠标是绿色。时钟线和数据线都是5V,兼容3.3V CMOS。时钟信号总是由设备产生,时钟周期一般取40us。
与常用的串口类似,不管是上行还是下行,每帧都包含以下内容:
1个起始位 | 总为0 |
8个数据位(payload) | 低位(LSB)在前 |
1个校验位 | 奇校验 |
1个停止位 | 总为1 |
此外,在主机到设备的传输中,最后还有一个应答位。
记住这些,很重要。
这一层将低层与高层解耦合,将发送与接收的细节封装起来,为应用层打基础。
需要注意的问题有帧之间的延时、发送与接收间的干扰、与高层的总线时序等。
键盘与鼠标在本层分道扬镳,本文仅讨论键盘,不涉及鼠标。
要让电脑(host)识别到你写的键盘(device)是个艰巨的任务。电脑会在开机时发送一连串指令,每条指令都要得到正确的响应,稍有不慎就会被当做无效设备而抑制通信,严重时甚至使电脑无法正常启动!
因为会话是在开机时建立的,所以开机后再插入键盘是无效的,正所谓 “不支持热插拔”。
成功被主机识别后,就可以愉快地发送扫描码了。
本文发布于:2025-01-31 23:52:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1738338765576623.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |