高人,请帮忙看看这个IC是什么型号的,具体参数是什么

[复制链接]
3234|2
 楼主| lion364 发表于 2009-2-13 11:42 | 显示全部楼层 |阅读模式
高人,请帮忙看看这个IC是什么型号的,具体参数是什么<br /><br />它是键盘电路板上的元件,附图。<br />
computer00 发表于 2009-2-13 12:43 | 显示全部楼层

看不出来...要不就是丝印中间最长的那个...

  
tyw 发表于 2009-2-13 13:01 | 显示全部楼层

都绑定了,没法猜的,lz不妨找个用8042的老式旧键盘研究,

<H2>硬件知识剖析之键盘驱动</H2><br />这次讲的可能玄乎点,在linux等系统下编译或者编译驱动程序时,或许用得着,其他时候,也没什么群体愿意了解这些知道,前天研发部的人在利用键盘控制扫描枪和前端钱箱,用到了这方面的细节知道,比较有用。<br />【PC端】:pc机上对键盘进行读写与控制的io端口是60H和64H;60H作为数据端口,由改端口可以给键盘写数据或读取键盘数据;64H作为命令端口,可以读取键盘的状态或写入命令数据;<br />【键盘控制器端】:在linux下我们可以用下面的命令来查看我们pc机当前使用的是什么键盘控制器:<br />helight@helight-desktop:~$&nbsp;cat&nbsp;/proc/interrupts<br />CPU0&nbsp;CPU1&nbsp;<br />0:&nbsp;181&nbsp;0&nbsp;IO-APIC-edge&nbsp;timer<br />1:&nbsp;1800&nbsp;0&nbsp;IO-APIC-edge&nbsp;i8042<br />3:&nbsp;2&nbsp;0&nbsp;IO-APIC-edge&nbsp;<br />4:&nbsp;2&nbsp;0&nbsp;IO-APIC-edge&nbsp;<br />7:&nbsp;0&nbsp;0&nbsp;IO-APIC-edge&nbsp;parport0<br />8:&nbsp;3&nbsp;0&nbsp;IO-APIC-edge&nbsp;rtc<br />9:&nbsp;0&nbsp;0&nbsp;IO-APIC-fasteoi&nbsp;acpi<br />14:&nbsp;0&nbsp;0&nbsp;IO-APIC-edge&nbsp;libata<br />15:&nbsp;8686&nbsp;0&nbsp;IO-APIC-edge&nbsp;libata<br />......<br />另外键盘一般使用的中断号是1.所以可以看出其对应的控制器是i8042,当然从网上查了资料得知,一般情况下的键盘<br />控制器也就是i8042,所以看到这两个都有时,就可以确定键盘中断号是1,键盘控制器就是i8042.<br />i8042:<br />i8042也就是intel8042,位于主板上,CPU通过IO端口与i8042通信,i8042则负责读取键盘按键的扫描吗或是发送个中键盘命令.另外还有一个芯片是8048,它是位于键盘中的,是将键盘上的按键转换成所谓的扫描码,关于扫描码下面会做简单的介绍.<br />而我们的键盘驱动直接读写&nbsp;i8042&nbsp;芯片,通过&nbsp;i8042&nbsp;间接的向键盘中的&nbsp;i8048&nbsp;发命令。所以对于驱动来说,直接发生联系的只有&nbsp;i8042&nbsp;,因此我们只介绍&nbsp;i8042&nbsp;,不介绍&nbsp;i8048。<br />i8042有四个8bits的寄存器,他们是状态机存器,输出寄存器,输入寄存器和控制寄存器.而端口只是用60H和64H两个端口.<br />状态寄存器是一个8位只读寄存器,任何时刻均可被cpu读取。其各位定义如下<br />Bit7:&nbsp;PARITY-EVEN(P_E):&nbsp;从键盘获得的数据奇偶校验错误<br />Bit6:&nbsp;RCV-TMOUT(R_T):&nbsp;接收超时,置1<br />Bit5:&nbsp;TRANS_TMOUT(T_T):&nbsp;发送超时,置1<br />Bit4:&nbsp;KYBD_INH(K_I):&nbsp;为1,键盘没有被禁止。为0,键盘被禁止。<br />Bit3:&nbsp;CMD_DATA(C_D):&nbsp;为1,输入缓冲器中的内容为命令,为0,输入缓冲器中的内容为数据。<br />Bit2:&nbsp;SYS_FLAG(S_F):&nbsp;系统标志,加电启动置0,自检通过后置1<br />Bit1:&nbsp;INPUT_BUF_FULL(I_B_F):&nbsp;输入缓冲器满置1,i8042&nbsp;取走后置0<br />BitO:&nbsp;OUT_BUF_FULL(O_B_F):&nbsp;输出缓冲器满置1,CPU读取后置0<br />Output&nbsp;Buffer(输出缓冲器)<br />输出缓冲器是一个8位只读寄存器。驱动从这个寄存器中读取数据。这些数据包括,扫描码,发往&nbsp;i8042&nbsp;命令的响应,间接的发往&nbsp;i8048&nbsp;命令的响应。<br />Input&nbsp;Buffer(输入缓冲器)<br />输入缓冲器是一个8位只写寄存器。缓冲驱动发来的内容。这些内容包括,发往&nbsp;i8042&nbsp;的命令,通过&nbsp;i8042&nbsp;间接发往&nbsp;i8048&nbsp;的命令,以及作为命令参数的数据。<br />Control&nbsp;Register(控制寄存器)<br />也被称作&nbsp;Controller&nbsp;Command&nbsp;Byte&nbsp;(控制器命令字节)。其各位定义如下<br />Bit7:&nbsp;保留,应该为0<br />Bit6:&nbsp;将第二套扫描码翻译为第一套<br />Bit5:&nbsp;置1,禁止鼠标<br />Bit4:&nbsp;置1,禁止键盘<br />Bit3:&nbsp;置1,忽略状态寄存器中的&nbsp;Bit4<br />Bit2:&nbsp;设置状态寄存器中的&nbsp;Bit2<br />Bit1:&nbsp;置1,enable&nbsp;鼠标中断<br />BitO:&nbsp;置1,enable&nbsp;键盘中断<br />【控制命令】&nbsp;:<br />对键盘的控制命令有两种:<br />1.使用于i8042的命令,这种命令是直接写给i8042来完成.<br />这一类的操作有:给i8042写命令或读命令,设置键盘密码,自检,开启或禁用键盘等.<br />2.以数据的形式写给i8042,再由i8042以命令的形式写给i8048达到控制目的.<br />这一类的操作有:&nbsp;设置LED灯设置键盘的扫描码类型,设置键盘的工作方式等.<br />【扫描码】&nbsp;:<br />当键盘上有键被按下,松开,按住,键盘将产生扫描码(&nbsp;Scan&nbsp;Code&nbsp;),这些扫描码将被&nbsp;i8048&nbsp;直接得到。扫描码有两种,Make&nbsp;Code&nbsp;和&nbsp;Break&nbsp;Code。当一个键被按下或按住时产生的是&nbsp;Make&nbsp;Code&nbsp;,当一个键被松开产生的是&nbsp;Break&nbsp;Code。每个键被分配了唯一的&nbsp;Make&nbsp;Code&nbsp;和&nbsp;Break&nbsp;Code&nbsp;,这样主机通过扫描码就可以知道是哪一个键。简单的说就是按下键,产生一个&nbsp;Make&nbsp;Code。松开键,产生一个&nbsp;Break&nbsp;Code。<br />到目前为止一共有三套扫描码集(&nbsp;Scan&nbsp;Code&nbsp;Set&nbsp;),ps/2&nbsp;键盘默认使用第二套。不过可以设置&nbsp;i8042,让&nbsp;i8042&nbsp;把得到的&nbsp;Scan&nbsp;Code&nbsp;翻译成&nbsp;Scan&nbsp;Code&nbsp;Set&nbsp;1&nbsp;中的&nbsp;Scan&nbsp;Code&nbsp;,这样键盘驱动从&nbsp;i8042&nbsp;得到的所有&nbsp;Scan&nbsp;Code&nbsp;都是第一套中的&nbsp;Scan&nbsp;Code(实际中驱动也是这么做的)。所以我们只讨论&nbsp;Scan&nbsp;Code&nbsp;Set&nbsp;1&nbsp;。需要说明的是&nbsp;Scan&nbsp;Code&nbsp;和&nbsp;ASCII码完全不相同。<br />在&nbsp;Scan&nbsp;Code&nbsp;Set&nbsp;1&nbsp;中,大多数键的&nbsp;Make&nbsp;Code,Break&nbsp;Code&nbsp;都是一个字节。他们的&nbsp;Make&nbsp;Code&nbsp;的最高位都为0,也就是他们的&nbsp;Make&nbsp;Code&nbsp;都小于&nbsp;0x7F。而他们的&nbsp;Break&nbsp;Code&nbsp;为其&nbsp;Make&nbsp;Code&nbsp;或运算&nbsp;80h&nbsp;,也就是把&nbsp;Make&nbsp;Code&nbsp;的低7位不变,最高位设置为1。<br />还有一些扩展按键,他们的&nbsp;Scan&nbsp;Code&nbsp;是双字节的。他们的第一个字节都是E0h,表明这是一个扩展键。第2个字节,和单字节&nbsp;Scan&nbsp;Code&nbsp;的情况相同。<br />还有一个特殊的键,Pause/Break&nbsp;键,它的&nbsp;Make&nbsp;Code&nbsp;为&nbsp;E1,1D,45&nbsp;E1,9D,C5,注意是&nbsp;E1h&nbsp;开头。而且它没有&nbsp;Break&nbsp;Code&nbsp;。但有些键盘使用的是Scan&nbsp;Code&nbsp;Set&nbsp;1.<br />以上大部分内容转录自互联网,内容源自RSS中。本文链接地址:<a href="http://www.linwan.net.cn/archives/2928.html" target=_blank>http://www.linwan.net.cn/archives/2928.html</a>&nbsp;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部