外设天下 - 电脑外设发烧友聚集地

123下一页
我的人缘0

[求助] 问下PS2口.和USB口的工作原理.真心求助.

22 44420
楼主
跳转到指定楼层
发表于 2011-7-27 10:59 只看该作者 倒序浏览 阅读模式
百度上面搜索是 PS2口是淘汰的接口将要被USB口取代了.

为什么机械键盘只有在PS2口才能实现全键位无冲. USB口只能部分键位无冲...求解... .
0
已赞
微信分享 收藏
回复

使用道具 举报

我的人缘0
推荐
发表于 2011-7-27 13:51 只看该作者
这这……,你是怎么作出这篇有板有眼的理论的?
Saphire 发表于 2011-7-27 12:51
就拿先在刚出的V7芯片来举例吧。它用的是 holtek HT82A523R 。简介如下:
Features
  • Operating voltage:
    fSYS=6MHz & 12MHz: 3.3V~5.5V
  • 40 bidirectional I/O lines (max.)
  • One 16-bit programmable timer/event counter with overflow interrupt
  • One 8-bit programmable timer/event counter with overflow interrupt
  • Only crystal oscillator (6MHz or 12MHz)
  • Watchdog Timer
  • 4096x15 program memory ROM
  • 192x8 data memory RAM
  • HALT function and wake-up feature reduce power consumption
  • 6-level subroutine nesting
  • 2 sets of SIO (synchronous serial I/O) function
  • Supports Interrupt, Control, Bulk transfer
  • USB 2.0 full speed function compatible
  • 4 endpoints supported (endpoint 0 included)
  • Total FIFO size is 152 bytes
    (8, 8, 8, 64x2 for EP0~EP3)
  • Bit manipulation instruction
  • 15-bit table read instruction
  • 63 powerful instructions
  • All instructions in one or two machine cycles
  • Low voltage reset function
  • 32/64-pin LQFP package
    48-pin SSOP package
    52-pin QFP package


注意我标红的RAM是 192字节(192x8bits)。

然后看 holtek HT82A523R 的data sheet(来源:http://www.holtek.com/pdf/computer/82a523rv150.pdf)第18页


USB Interface
The HT82A523R has 4 Endpoints (EP0~EP3).
EP0~EP2 are support Interrupt transfer, EP3 is support
Bulk transfer.
There are 12 registers, including USC (20H), USR
(21H), UCC (22H), AWR (address+remote wake-up
23H), STALL (24H), SIES (25H), MISC (26H), SETIO
(27H), FIFO0 (28H), FIFO1 (29H), FIFO2 (2AH) and
FIFO3 (2BH) used for the USB function.

The FIFO size of each FIFO is 8 byte (FIFO0), 8 byte
(FIFO1), 8 byte (FIFO2) and 128 byte (FIFO3), and total of 152
bytes.

但是看第8页的RAM layout得知General Purpose Data Memory(192Bytes)是从040H开始的,
那些USC USR UCC...FIFO3 register不占这部分RAM,所以USB实际占用的RAM是FIFO buffer 0-3,一共是
8+8+8+128=152字节。留给程序的可用内存只有40字节了,当然不可能保存下全部的键盘按键状态。


而更早推出的键盘,用的芯片规格还要低,比如Plum无冲金标,用的是 holtek HT82K95E,RAM只有160字节。用了USB后程序可以用的才8字节,能做6键无冲已经很不容易了。

回复 支持 1 反对 0

使用道具 举报

我的人缘0
推荐
发表于 2011-7-27 13:14 只看该作者
从键盘电路角度上讲,u口全无冲也是可能的,现在常见的u口无冲基本都是是任意六键无冲,这就说明了u口无冲的限制因素不在电路上,至于u口的控制芯片什么的,我是真不懂。。。。。不过话说100字节就能存六个键值么。。。。。按说是不至于啊
回复 支持 1 反对 0

使用道具 举报

我的人缘0
推荐
发表于 2011-7-27 13:09 只看该作者
话说usb不太清楚,只确定ps2传给主机的信号应该是诸如“某键按下”“某键弹起”你同时按下所有按键的话,ps2的数据脚是串行发送若干个“某键按下”,然后放开时是顺序发送“某键弹起”,所以从接口的角度讲,ps2键盘口实现无冲问题一点都不大,毕竟是专门为键盘做的口
usb复杂得多,通用接口应该需要有专门的设备识别什么的程序来控制,具体的不清楚
做过简单的东西从ps2键盘口上读键值,当时没用usb就是要考虑集成度的事,不想用别人的芯片,usb的识别程序我觉得我这种二把刀写不出来。。。。。。。{:1_052:}
回复 支持 1 反对 0

使用道具 举报

我的人缘0
推荐
发表于 2011-7-27 12:51 只看该作者
这是因为键盘芯片的限制。由于常用的键盘芯片(也较便宜)只有100多个字节的RAM内存空间。处于PS2接口工作方式时,键盘芯片不占用太多的RAM内存,因此键盘控制程序可以用这个100多字节来保存按键按下和抬起状态,实现 ...
域外天魔 发表于 2011-7-27 11:51
这这……,你是怎么作出这篇有板有眼的理论的?
回复 支持 1 反对 0

使用道具 举报

我的人缘0
推荐
发表于 2011-7-27 12:22 只看该作者
{:1_027:}
回复 支持 1 反对 0

使用道具 举报

我的人缘0
推荐
发表于 2011-7-27 11:51 只看该作者
这是因为键盘芯片的限制。由于常用的键盘芯片(也较便宜)只有100多个字节的RAM内存空间。处于PS2接口工作方式时,键盘芯片不占用太多的RAM内存,因此键盘控制程序可以用这个100多字节来保存按键按下和抬起状态,实现全键盘无冲突的功能。而USB工作方式,键盘芯片会占用近100个字节的空间做USB的缓冲队列,留个程序的RAM空间就只有10多个字节了,所以只能做到10来键无冲突。

PLU的产品能实现USB全键无冲功能,就是使用了新的键盘芯片(拥有更多的RAM,当然芯片价格也会贵大概几毛钱到几元钱),并且修改了键盘控制程序。
回复 支持 1 反对 0

使用道具 举报

我的人缘0
8
发表于 2011-7-27 14:02 只看该作者
围观论坛强人 只能学习了 一只对无冲有爱 但我只想说 键盘厂商太暴利了
回复 支持 反对

使用道具 举报

我的人缘0
9
发表于 2011-7-27 14:05 只看该作者
技术贴标记一下
回复 支持 反对

使用道具 举报

我的人缘0
10
发表于 2011-7-27 14:13 只看该作者
测试
标记一下
回复 支持 反对

使用道具 举报

123下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则