返回列表 发帖

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

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

1.1.
2 k$ C# d, [0 D- T0 Y. {7 U本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
概要
W90P710 PS2主机控制接口是一个基于PS2协议的APB设备,它通过PS2接口可以和IBM键盘等其它设备相连。例如,当有按键被按下或者放开时,IBM键盘将相应扫描码传给主机控制器,然后键盘的BIOS根据扫描码可以判断是哪一个按键被操作了。键盘也可以从主机控制器接收命令,最通用的命令是状态指示命令(如,数码锁定、大小写字母锁定和滚动锁定指示灯)。
8 i* \8 n- ^; v6 @( g2 Y2 s0 ]1 `嵌入式开发联盟
* f5 A- I- Q5 K$ K1 X. t4 i; n! g嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习PS2接口工作基于双向通讯协议。键盘可以给主机发送数据,同时主机也可以通过使用PS2时钟线和数据线给键盘发送数据。PS2时钟和数据线都是双向的集电极开路 I/O 线。主机传送在传输方向上有较高的优先级。当PS2数据线和时钟线都是高电位时(即线路空闲),键盘可以自由的传送数据,反之当时钟线位于低电位时,键盘将缓存所有的数据直到PS2时钟线被释放而转变为高电位。一个传送的数据,例如从键盘传给主机,由11比特位构成,依次是一个起始位(逻辑0),8个数据位(最低位在前),一个奇偶校验位(奇校验)和一个结束位(逻辑1)。每一位数据都在时钟产生下降沿时被读取。时钟由键盘产生,时钟信号的频率一般在20~30千赫兹之间。
( {% E# o- p; F嵌入式开发联盟 嵌入式开发联盟5 ?. d# S4 E+ ]1 L
主机到键盘的传输协议由拉低PS2的数据线的电位开始。一般情况下,PS2时钟线至少保持位于低电位60us,然后键盘的数据线拉低,同时释放键盘的时钟线。此后,键盘的PS2时钟线开始产生时钟信号。当第一个下降沿产生后,主机开始在PS2数据线装载第1位数据(起始位),这个数据位将在下一个下降沿被读进键盘,这个过程将重复把一个字节8个数据位和1个奇偶校验位转载到PS2数据线。嵌入式开发联盟  }% A/ X& k$ A5 G9 f
& W  v$ m$ S# x" m. u& C! N  ^2 K
1.1.嵌入式开发联盟: n2 F$ [& K" ]
键盘扫描码对应表
mcuos.com. G3 f6 ^! E: p& t) {& ]: ~
- 嵌入式底层驱动开发技术学习网站+ i9 f3 d3 ~7 G; w" O
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ a4 J* s& ?# K9 J" A
- \4 b& ^5 |8 c
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习+ ]6 `) }1 G4 v7 p% g! n7 l7 b* e# l
1.1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! c* L- x: H0 _  p$ e  Z) c
寄存器映射

Register
9 A9 }: `, |1 X- }6 B0 i& {0 a. t寄存器- 嵌入式底层驱动开发技术学习网站1 N9 }6 H$ J- S' t# h

Address

地址

R/W

/

Description

说明

Reset value

复位初始值

PS2CMD
+ ?# t, C0 M9 i. F2 ^  N, B
0xFFF8.9000
6 w$ ^# d, S) V# G* Q- 嵌入式底层驱动开发技术学习网站

R/W


8 A  T, X% V! g5 @- z) x嵌入式开发联盟PS2 Host Controller Command Register
嵌入式开发联盟- J5 V3 ?( ?! ^7 S/ ^7 M8 u8 L
PS2主机控制命令寄存器
" T$ W4 M: m5 m5 ]mcuos.com

0x0000.0000

PS2STS
/ f/ w; _$ @  V
0xFFF8.9004本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! i  x2 ^! h: _+ M

R/W


% _* O1 v% {' f9 j本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。PS2 Host Controller Status Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% c6 ^$ G( S( q4 M% j
PS2主机控制状态寄存器mcuos.com7 Y$ p! z4 o6 m& u; m1 O7 j

0x0000.0000

PS2SCANCODE嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% z3 \  O, J6 y! I
0xFFF8.9008
, f8 z4 n; y: S2 z1 ~4 q+ I本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

RO


5 E% i: [. Z7 ?: a% E' s9 t# m) _本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。PS2 Host Controller RX Scan Code Register

3 S9 O1 Z5 d: k3 _- 嵌入式底层驱动开发技术学习网站PS2主机控制扫描码接收寄存器本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( }- u- K1 K5 x. U) ~! k

0x0000.0000

PS2ASCII
+ a( H: m. D9 b4 t, P! m
0xFFF8.900C
0 x% G* m  @3 v! |嵌入式开发联盟

RO

嵌入式开发联盟! N# a+ h+ b3 M6 r4 T
PS2 Host Controller RX ASCII Code Register
嵌入式开发联盟; l5 Y5 {) w( P. |
PS2主机控制ASCII码接收寄存器本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# a6 G) _! }7 U) M! x1 K

0x0000.0000


) D, U! q- s% h+ Y% \5 Q* h) _- 嵌入式底层驱动开发技术学习网站1.2.mcuos.com! E; G, b* x6 o
程序设计注意点
1.2.1.
$ t- I+ i0 L4 M& W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
往键盘发送命令
键盘命令:0xED 0x01(点亮滚动锁定指示灯)mcuos.com, T1 i4 j0 d; @' `/ v' m- S
嵌入式开发联盟" v& G& {( T+ q7 t( W& A
命令:- 嵌入式底层驱动开发技术学习网站9 C# w4 M$ D3 i; M
1.
& o) L3 }5 _1 b
把命令0xED写入命令寄存器CMD(CMD[7:0]),并且把EnCMD位置位1使PS2写入有效。
嵌入式开发联盟+ _. Q9 C' W8 a, J7 }
2.
: V. x: J% F. ~2 a+ C. Zmcuos.com
等待状态寄存器STSTX_IRQ 位被置起,完成往设备写入命令

' X9 {1 Q6 r4 }  r' m: amcuos.com3.
- `# W$ r* M- ]* A嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
等待状态寄存器STSRX_IRQ 位被置起,主机控制器接收到设备一个字节的确认信息
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 h; o( W0 p6 u8 C9 S8 U
4.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 \/ ~5 p$ Q/ k; O- C
重新执行1~3步完成第二个命令0x01的写入操作
嵌入式开发联盟9 N9 s0 x0 X# h, l% ?& u

8 r6 G+ b2 e9 x% Z7 v1.2.2.- 嵌入式底层驱动开发技术学习网站/ F. a, N2 u* x1 b' X
接收键盘发送的扫描码
命令:
* }; W: n* }1 V( @! P- ^5 ^3 C- 嵌入式底层驱动开发技术学习网站1.
( j+ F: _8 p, \  o$ [- 嵌入式底层驱动开发技术学习网站
等待状态寄存器STSRX_IRQ 位被置起
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。& F9 J" y( l8 m0 [6 l2 f& b) ~  d
2.- 嵌入式底层驱动开发技术学习网站0 q( d! G5 b2 H
读取扫描码寄存器SCANCODERX_shift_keyRX_releaseRX_extend

7 g( j4 K7 m! s5 ?* f嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3.mcuos.com# z  t; }; S7 ]0 v" d
读取扫描码寄存器SCANCODESCANCODE[7:0]
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 k: i& y/ B' \, ?9 U, |
4.
0 J" s1 C' L" j) Y. ?) X嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
读取ASCII码寄存器SCANCODEASCII[7:0].
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; x% Y9 W' v+ y1 z8 x

& ^* {" o6 X8 K- d/ _0 W- H5 ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 n5 q8 U2 ]1 H% i& K
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

回复 1# 的帖子

谢谢lz
! h9 w( e2 I* K5 Z% A- 嵌入式底层驱动开发技术学习网站  受用了

TOP

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