返回列表 发帖

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

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

1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) t2 _# p& b# t, x+ Z% i/ x
概要
W90P710 PS2主机控制接口是一个基于PS2协议的APB设备,它通过PS2接口可以和IBM键盘等其它设备相连。例如,当有按键被按下或者放开时,IBM键盘将相应扫描码传给主机控制器,然后键盘的BIOS根据扫描码可以判断是哪一个按键被操作了。键盘也可以从主机控制器接收命令,最通用的命令是状态指示命令(如,数码锁定、大小写字母锁定和滚动锁定指示灯)。mcuos.com" ]% k, o/ H; \( I3 F

, g' J7 H: Q. y3 G# \/ Y6 o7 `+ ]嵌入式开发联盟PS2接口工作基于双向通讯协议。键盘可以给主机发送数据,同时主机也可以通过使用PS2时钟线和数据线给键盘发送数据。PS2时钟和数据线都是双向的集电极开路 I/O 线。主机传送在传输方向上有较高的优先级。当PS2数据线和时钟线都是高电位时(即线路空闲),键盘可以自由的传送数据,反之当时钟线位于低电位时,键盘将缓存所有的数据直到PS2时钟线被释放而转变为高电位。一个传送的数据,例如从键盘传给主机,由11比特位构成,依次是一个起始位(逻辑0),8个数据位(最低位在前),一个奇偶校验位(奇校验)和一个结束位(逻辑1)。每一位数据都在时钟产生下降沿时被读取。时钟由键盘产生,时钟信号的频率一般在20~30千赫兹之间。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) @, K* U7 @! ?3 s/ Z4 r+ `

5 G, j; o5 \5 L% h7 H本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。主机到键盘的传输协议由拉低PS2的数据线的电位开始。一般情况下,PS2时钟线至少保持位于低电位60us,然后键盘的数据线拉低,同时释放键盘的时钟线。此后,键盘的PS2时钟线开始产生时钟信号。当第一个下降沿产生后,主机开始在PS2数据线装载第1位数据(起始位),这个数据位将在下一个下降沿被读进键盘,这个过程将重复把一个字节8个数据位和1个奇偶校验位转载到PS2数据线。6 j4 l! s" V) [

& z3 ^9 q. }. J3 i! F( xmcuos.com1.1.
5 ?( C" y* H) p8 Q嵌入式开发联盟
键盘扫描码对应表
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" a% J# `) ]! [% _* |

, @# {% V# o6 g7 y1 U3 E  E. e/ G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
- A1 f. ~: p, x/ f: C
% k; T) y4 \! t( H- 嵌入式底层驱动开发技术学习网站嵌入式开发联盟  Y" w" L8 S% ^% `
1.1.! @- Y. U/ j! v
寄存器映射

Register本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( f0 h5 x; A6 C% P
寄存器
) ~3 a3 x8 N; ?- 嵌入式底层驱动开发技术学习网站

Address

地址

R/W

/

Description

说明

Reset value

复位初始值

PS2CMD
6 f  [7 |5 ^: Q, f9 q" g) H嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.9000
; B7 U! @1 J2 q+ \本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

R/W


1 x0 ]2 A3 t; \) V' a) FPS2 Host Controller Command Register
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: ^# p2 k, q% c+ V8 s" w
PS2主机控制命令寄存器0 N7 d3 N1 T% v4 r- Q

0x0000.0000

PS2STS
3 i" O) y6 f% _2 Y4 v嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.9004; D  Q2 t7 N. v, u+ H, n; W

R/W


6 N# L6 W. L/ B/ v( tPS2 Host Controller Status Register

4 L( p1 n) {& u6 `$ o0 tPS2主机控制状态寄存器
$ `3 e9 A9 A5 n  x. ], a嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

0x0000.0000

PS2SCANCODEmcuos.com, y6 m2 c" l" P, S. a
0xFFF8.9008- 嵌入式底层驱动开发技术学习网站8 S7 t% I& R) i, a' u8 V% [

RO


+ H* V2 g* ?* X9 B$ L9 o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习PS2 Host Controller RX Scan Code Register

: Z6 U* U8 g, H嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习PS2主机控制扫描码接收寄存器嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 n9 L) w% D  a0 p( w

0x0000.0000

PS2ASCII本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: m6 E3 b7 G6 ]: z
0xFFF8.900C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' ]* @* ?1 I0 K/ _+ ]: I: o# k

RO

嵌入式开发联盟. c' g; V6 y* o* B% b
PS2 Host Controller RX ASCII Code Register

) C5 f: I& d" Z+ D- }mcuos.comPS2主机控制ASCII码接收寄存器
% o) z6 O% d, H( [9 J嵌入式开发联盟

0x0000.0000


- h- R$ f/ F2 T+ m* gmcuos.com1.2.
6 Z0 B' n/ w: A; R: A# \0 Q- 嵌入式底层驱动开发技术学习网站
程序设计注意点
1.2.1.嵌入式开发联盟+ w  c* i" t0 B0 B( }
往键盘发送命令
键盘命令:0xED 0x01(点亮滚动锁定指示灯)嵌入式开发联盟% p0 E( `5 W4 s! y8 ]/ o3 v4 d

3 t6 L5 h1 T3 U' W! j% p. Omcuos.com命令:本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 D+ [0 e% D. P" w0 k+ ~* i
1.- 嵌入式底层驱动开发技术学习网站6 S! A  R* q3 K5 S# n
把命令0xED写入命令寄存器CMD(CMD[7:0]),并且把EnCMD位置位1使PS2写入有效。

" ^/ K0 f* ?) I, [- 嵌入式底层驱动开发技术学习网站2.嵌入式开发联盟& H0 c, i( R& _4 ^. e/ u4 q
等待状态寄存器STSTX_IRQ 位被置起,完成往设备写入命令
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 x; B0 {9 f/ N$ c
3.1 t8 |) u+ _; u* P+ m
等待状态寄存器STSRX_IRQ 位被置起,主机控制器接收到设备一个字节的确认信息

! n) ?  ]& b2 H, v$ B嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习8 L8 q& m# w; F$ L
重新执行1~3步完成第二个命令0x01的写入操作
% D+ U0 {* e5 B$ ]

: p/ \. \+ J) U! Z2 Umcuos.com1.2.2.
$ H1 V$ u" ?5 vmcuos.com
接收键盘发送的扫描码
命令:- 嵌入式底层驱动开发技术学习网站- n% ?$ k$ V' ~; N( [
1.
+ ?8 q/ y& X1 z5 M  _5 I5 m嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
等待状态寄存器STSRX_IRQ 位被置起
' q5 e7 Q! C, i9 d# R
2.
, c5 V  v0 K. k5 N9 Z% T* a7 ~1 H- 嵌入式底层驱动开发技术学习网站
读取扫描码寄存器SCANCODERX_shift_keyRX_releaseRX_extend

+ |' t# h" g/ b3 Y+ s  N; g( s3.- 嵌入式底层驱动开发技术学习网站$ b9 t- u( D6 M$ W
读取扫描码寄存器SCANCODESCANCODE[7:0]

) R9 j9 g8 s( ^8 J$ O7 X% o  @嵌入式开发联盟4.
6 Y- a2 r" n) F' |嵌入式开发联盟
读取ASCII码寄存器SCANCODEASCII[7:0].

" |: C) _4 Z$ @' P7 Imcuos.com 嵌入式开发联盟  p* o$ @( s3 n% |0 A& Q

& H, b6 V0 ~: T' b6 x5 Y0 V嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

回复 1# 的帖子

谢谢lz 嵌入式开发联盟+ K1 Y) {' v& u) u" l1 q5 L. |
  受用了

TOP

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