【精选】intel_8042芯片编程.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【精选】intel_8042芯片编程

ps/2 键盘硬件概述 对于驱动来说,和键盘相关的最重要的硬件是两个芯片。一个是 intel 8042 芯片,位于主板 CPU 通过 IO 端口直接 和这个芯片通信,获得按键的扫描码或者发送各种键盘命令。另一个是 intel8048 芯片或者其兼容芯片,位于键盘中, 这个芯片主要作用是从键盘的硬件中得到被按的键所产生的扫描码,与 i8042 通信,控制键盘本身。 当键盘上有键被按下时,i8048 直接获得键盘硬件产生的扫描码。i8048 也负责键盘本身的控制 比如点亮 LED 指示 , 灯,熄灭 LED 指示灯。i8048 通过 ps/2 口和 i8042 通信,把得到的扫描码传送给 i8042 。CPU 通过读写端口,可以直 接把 i8042 中的数据读入到 CPU 的寄存器中,或者把 CPU 寄存器中的数据写入 i8042 中。ps/2 口一共有 6 个引脚, 可以拔下 ps/2 插头看一下,这 6 个引脚分别为 时钟,数据,电源地,电源+5V ,还有2 个引脚没有被用到。由于只有 , 一个引脚传输数据,所以 ps/2 口上的数据传输是串行的。 下面几幅图是一个键盘的内部,可以看到用来产生扫描码的按键矩阵( Key Martix ) ,可以看到键盘中的芯片(这里 不是 i8048 ,是一个兼容的其他型号的芯片)。 i8042 键盘控制器 键盘驱动直接读写 i8042 芯片,通过 i8042 间接的向键盘中的 i8048 发命令。所以对于驱动来说,直接发生联系的 只有 i8042 ,因此我们只介绍 i8042 ,不介绍 i8048 。 象 i8042 ,i8048 这样的芯片,本身就是一个小的处理器,它的内部有自己的处理器,有自己的 Ram ,有自己的寄存 器,等等。 i8042 有 4 个 8 bits 的寄存器,他们是 Status Registe (状态寄存器),Output Buffe (输出缓冲器),Input Buffe (输入缓冲器),Control Registe (控制寄存器)。使用两个 IO 端口,60h 和 64h。 Status Registe (状态寄存器) 状态寄存器是一个 8 位只读寄存器,任何时刻均可被 cpu 读取。其各位定义如下 Bit7: PARITY-EVEN(P_E): 从键盘获得的数据奇偶校验错误 Bit6: RCV-TMOUT(R_T): 接收超时,置 1 Bit5: TRANS_TMOUT(T_T): 发送超时,置 1 Bit4: KYBD_INH(K_I): 为 1 ,键盘没有被禁止。为0 ,键盘被禁止。 Bit3: CMD_DATA(C_D): 为 1 ,输入缓冲器中的内容为命令,为0 ,输入缓冲器中的内容为数据。 Bit2: SYS_FLAG(S_F): 系统标志,加电启动置 0 ,自检通过后置1 Bit1: INPUT_BUF_FULL(I_B_F): 输入缓冲器满置 1 ,i8042 取走后置 0 BitO: OUT_BUF_FULL(O_B_F): 输出缓冲器满置 1 ,CPU 读取后置 0 Output Buffe (输出缓冲器) 输出缓冲器是一个 8 位只读寄存器。驱动从这个寄存器中读取数据。这些数据包括,扫描码,发往 i8042 命令的响应 , 间接的发往 i8048 命令的响应。 Input Buffe (输入缓冲器) 输入缓冲器是一个 8 位只写寄存器。缓冲驱动发来的内容。这些内容包括,发往 i8042 的命令,通过 i8042 间接发往 i8048 的命令,以及作为命令参数的数据。 Control Registe (控制寄存器) 也被称作 Controller Command Byte (控制器命令字节)。其各位定义如下 Bit7: 保留,应该为 0 Bit6: 将第二套扫描码翻译为第一套 Bit5: 置 1 ,禁止鼠标 Bit4: 置 1 ,禁止键盘 Bit3: 置 1 ,忽略状态寄存器中的 Bit4 Bit2: 设置状态寄存器中的 Bit2 Bit1: 置 1 ,enable 鼠标中断 BitO: 置 1 ,enable 键盘中断 2 个端口 0x60,0x64 驱动中把 0x60 叫数据端口 驱动中把 0x64 叫命令端口 1.5 命令 驱

文档评论(0)

tazhiq2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档