返回列表 发帖

[原创经验] w90x710系列PS/2主机控制接口

[原创经验] w90x710系列PS/2主机控制接口

1.1.
% s. d; a$ Z* l; I* Z  ~7 J
概要
W90P710 PS2主机控制接口是一个基于PS2协议的APB设备,它通过PS2接口可以和IBM键盘等其它设备相连。例如,当有按键被按下或者放开时,IBM键盘将相应扫描码传给主机控制器,然后键盘的BIOS根据扫描码可以判断是哪一个按键被操作了。键盘也可以从主机控制器接收命令,最通用的命令是状态指示命令(如,数码锁定、大小写字母锁定和滚动锁定指示灯)。- 嵌入式底层驱动开发技术学习网站1 n2 V9 M  }3 m
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; D9 h7 ]8 @& p( p# r: l+ r+ t6 D
PS2接口工作基于双向通讯协议。键盘可以给主机发送数据,同时主机也可以通过使用PS2时钟线和数据线给键盘发送数据。PS2时钟和数据线都是双向的集电极开路 I/O 线。主机传送在传输方向上有较高的优先级。当PS2数据线和时钟线都是高电位时(即线路空闲),键盘可以自由的传送数据,反之当时钟线位于低电位时,键盘将缓存所有的数据直到PS2时钟线被释放而转变为高电位。一个传送的数据,例如从键盘传给主机,由11比特位构成,依次是一个起始位(逻辑0),8个数据位(最低位在前),一个奇偶校验位(奇校验)和一个结束位(逻辑1)。每一位数据都在时钟产生下降沿时被读取。时钟由键盘产生,时钟信号的频率一般在20~30千赫兹之间。
9 I( n% K0 }3 z 嵌入式开发联盟% s2 X' O! U1 _2 }; o% o7 o, x
主机到键盘的传输协议由拉低PS2的数据线的电位开始。一般情况下,PS2时钟线至少保持位于低电位60us,然后键盘的数据线拉低,同时释放键盘的时钟线。此后,键盘的PS2时钟线开始产生时钟信号。当第一个下降沿产生后,主机开始在PS2数据线装载第1位数据(起始位),这个数据位将在下一个下降沿被读进键盘,这个过程将重复把一个字节8个数据位和1个奇偶校验位转载到PS2数据线。# g8 K% G! q5 f; I9 K/ w: K/ ^$ d3 \
- 嵌入式底层驱动开发技术学习网站+ P4 v' `% y2 B; E
1.1.
" w$ x$ p1 R2 z4 n8 y  v' v; k- ^' ymcuos.com
键盘扫描码对应表

6 ?7 q2 w) {" ]- E5 a) y
7 R6 |- t" B1 y, L: _嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
9 N% P; W* o' H+ W( Y( mmcuos.commcuos.com: C/ m! s5 P+ t
嵌入式开发联盟) `+ o. `8 _0 O0 V7 k1 u
1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. Z+ F" X7 }& ^3 U
寄存器映射

Registermcuos.com" x$ X( \( E, L! z+ X
寄存器
7 l; v# X8 N" Q, q% [; C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

Address

地址

R/W

/

Description

说明

Reset value

复位初始值

PS2CMD
% C. s0 O  X# R' }& H2 ?5 p) vmcuos.com
0xFFF8.9000
( h( Y/ I' E! v: ~0 u4 H6 f2 c- 嵌入式底层驱动开发技术学习网站

R/W

- 嵌入式底层驱动开发技术学习网站! u  H- o- B$ b0 N! O
PS2 Host Controller Command Register

3 X# g$ h+ o$ u$ K- 嵌入式底层驱动开发技术学习网站PS2主机控制命令寄存器mcuos.com' n2 Q6 F. z8 a5 u" t) M5 n7 y

0x0000.0000

PS2STS
# \9 i7 d* S& Y4 s+ O4 I3 }本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.9004
7 Q) |( y$ D% E% m

R/W


  |: e8 q3 X( q- M8 E9 mmcuos.comPS2 Host Controller Status Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习+ ^. G. F1 ]8 c" n1 D8 ~
PS2主机控制状态寄存器嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% ]9 [) b8 s% R, x  z

0x0000.0000

PS2SCANCODE嵌入式开发联盟, v" k  r8 X5 x2 U- i- d) a7 G8 X
0xFFF8.9008嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& P8 B& J* ]* j2 x; G

RO


% T/ ]! D* }( J. u+ n- Lmcuos.comPS2 Host Controller RX Scan Code Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; M3 D) c5 X% E% {7 W
PS2主机控制扫描码接收寄存器
  w) ?6 w$ c- Y, V) L) z7 s, g嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

0x0000.0000

PS2ASCII- 嵌入式底层驱动开发技术学习网站( F: p* ], h! l
0xFFF8.900C- 嵌入式底层驱动开发技术学习网站, }; T$ j4 l8 y% c  P- c

RO

- 嵌入式底层驱动开发技术学习网站: G( H6 w; z9 T4 J  }- t
PS2 Host Controller RX ASCII Code Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 f4 R0 T0 r- b
PS2主机控制ASCII码接收寄存器
; a1 T; y1 w$ }8 mmcuos.com

0x0000.0000


3 a7 |/ `3 f9 O& T* K0 r8 x# M本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.2.1 c9 v) f$ T2 {
程序设计注意点
1.2.1.mcuos.com7 ~0 M8 l8 S& Y* B1 ]
往键盘发送命令
键盘命令:0xED 0x01(点亮滚动锁定指示灯)- 嵌入式底层驱动开发技术学习网站  O( N* [) n, w+ l; k6 K" @
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* _- s5 E1 |7 v1 W% l1 [2 M& A7 }
命令:
  _9 J) K/ _& P0 c( I, o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.
$ i. H& `. K# V$ R" @$ c" ]; F4 ^嵌入式开发联盟
把命令0xED写入命令寄存器CMD(CMD[7:0]),并且把EnCMD位置位1使PS2写入有效。

- `- a9 o$ P7 D6 x- Z; t- 嵌入式底层驱动开发技术学习网站2.
2 b3 G6 O) k1 |3 H# J8 S本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
等待状态寄存器STSTX_IRQ 位被置起,完成往设备写入命令
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 H7 {" g8 q. E: h- b
3.
; A6 ]9 U4 W1 x1 a3 [
等待状态寄存器STSRX_IRQ 位被置起,主机控制器接收到设备一个字节的确认信息
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 k" O# g3 U5 y/ O# ]( D" d
4.mcuos.com$ Z5 W/ V* ^) X( d0 [. W2 x
重新执行1~3步完成第二个命令0x01的写入操作
- 嵌入式底层驱动开发技术学习网站- Z/ X! ~6 C/ E* `: r! I, _! G5 k
mcuos.com# I7 l3 w9 F- i- }# `% W
1.2.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ {3 {0 X+ I0 r, G, c
接收键盘发送的扫描码
命令:
# w# e3 u6 E) q. B" F7 F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, p* m, F7 a# c
等待状态寄存器STSRX_IRQ 位被置起

6 b: J) ]0 ^( ]. i, {/ j: E( i* e6 t- 嵌入式底层驱动开发技术学习网站2.
. y6 K  T5 I( j. r- Wmcuos.com
读取扫描码寄存器SCANCODERX_shift_keyRX_releaseRX_extend
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 c: Z2 f( c1 T# q6 S$ @' V
3.
4 _$ O1 o, ]5 W: _$ f
读取扫描码寄存器SCANCODESCANCODE[7:0]
嵌入式开发联盟9 U( y- n: x# j
4.# f$ s$ M* }  I8 Q3 M
读取ASCII码寄存器SCANCODEASCII[7:0].
- 嵌入式底层驱动开发技术学习网站! g: g* B& \9 `; N% q% u& {% t3 S

5 D7 A1 k( ?6 l- 嵌入式底层驱动开发技术学习网站
* ?+ w- d4 A  X! }# D嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

回复 1# 的帖子

谢谢lz 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ D4 ?3 E' T# i1 _6 Y1 |
  受用了

TOP

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服