返回列表 发帖

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

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

1.1.
7 z7 Q9 s) U% d2 a; \' M嵌入式开发联盟
概要
W90P710 PS2主机控制接口是一个基于PS2协议的APB设备,它通过PS2接口可以和IBM键盘等其它设备相连。例如,当有按键被按下或者放开时,IBM键盘将相应扫描码传给主机控制器,然后键盘的BIOS根据扫描码可以判断是哪一个按键被操作了。键盘也可以从主机控制器接收命令,最通用的命令是状态指示命令(如,数码锁定、大小写字母锁定和滚动锁定指示灯)。
, A4 I2 Y& F- e  o- @- z( L 嵌入式开发联盟, r( p" @  z+ E
PS2接口工作基于双向通讯协议。键盘可以给主机发送数据,同时主机也可以通过使用PS2时钟线和数据线给键盘发送数据。PS2时钟和数据线都是双向的集电极开路 I/O 线。主机传送在传输方向上有较高的优先级。当PS2数据线和时钟线都是高电位时(即线路空闲),键盘可以自由的传送数据,反之当时钟线位于低电位时,键盘将缓存所有的数据直到PS2时钟线被释放而转变为高电位。一个传送的数据,例如从键盘传给主机,由11比特位构成,依次是一个起始位(逻辑0),8个数据位(最低位在前),一个奇偶校验位(奇校验)和一个结束位(逻辑1)。每一位数据都在时钟产生下降沿时被读取。时钟由键盘产生,时钟信号的频率一般在20~30千赫兹之间。
/ X% g' _. p0 _9 W  y- Y9 u- 嵌入式底层驱动开发技术学习网站
0 {' `% |8 t" n$ f主机到键盘的传输协议由拉低PS2的数据线的电位开始。一般情况下,PS2时钟线至少保持位于低电位60us,然后键盘的数据线拉低,同时释放键盘的时钟线。此后,键盘的PS2时钟线开始产生时钟信号。当第一个下降沿产生后,主机开始在PS2数据线装载第1位数据(起始位),这个数据位将在下一个下降沿被读进键盘,这个过程将重复把一个字节8个数据位和1个奇偶校验位转载到PS2数据线。
" Q" N* B& P8 Y' _mcuos.com
! O& b% a7 k: F1 c7 fmcuos.com1.1.- 嵌入式底层驱动开发技术学习网站( ^* r6 H3 E$ s
键盘扫描码对应表
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 @1 x* d; q* i: J  G4 n9 F

5 J/ c$ U; J1 {9 i8 ]0 u, ]( q嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
  q. n+ t9 F& O" j- 嵌入式底层驱动开发技术学习网站
2 q9 B1 V) u/ @# D* i嵌入式开发联盟
4 r# E2 O4 P* ]) [mcuos.com1.1.
1 [8 \5 R# Z: S# ?, q6 d$ b
寄存器映射

Register嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 n2 @7 k+ t9 b' [
寄存器
. X2 x' ~7 E8 m. n2 e. t& {1 T+ ]! K" smcuos.com

Address

地址

R/W

/

Description

说明

Reset value

复位初始值

PS2CMD嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 |! Q& z8 [' F. [) X
0xFFF8.9000
  m, I  A3 B3 j+ j1 E4 r/ Y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

R/W


0 d- v' I- j6 g1 @, o$ x1 z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习PS2 Host Controller Command Register
嵌入式开发联盟+ ]+ g3 M# W: q" @( W0 T5 B0 i
PS2主机控制命令寄存器本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。* j0 \' G' d. A. H& w( Y) P

0x0000.0000

PS2STS嵌入式开发联盟8 d/ B4 Q8 i7 u  \8 ?
0xFFF8.9004本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 m, e! l2 l$ ^+ G

R/W

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 y1 |% {2 e" p  b* Q$ q6 R
PS2 Host Controller Status Register
mcuos.com8 V; z$ p. w0 m% O5 Z1 b/ x
PS2主机控制状态寄存器( _" f3 \  Z- }2 K# Q

0x0000.0000

PS2SCANCODE嵌入式开发联盟7 }3 s5 l; q* r6 z3 F' t
0xFFF8.9008
. {! i1 g  ?$ w/ A' R嵌入式开发联盟

RO


' ~" J  T4 q1 i2 _& G3 e嵌入式开发联盟PS2 Host Controller RX Scan Code Register

% w7 J0 @9 L3 W3 P& Amcuos.comPS2主机控制扫描码接收寄存器mcuos.com6 \; K, K8 z5 k9 W

0x0000.0000

PS2ASCII嵌入式开发联盟1 B3 b5 j3 v& [$ \' j8 u- P
0xFFF8.900C
* K; \& T* V8 F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

RO

; `' |- a1 |0 Q4 ], ^  {. m( P
PS2 Host Controller RX ASCII Code Register

$ v) ~0 {8 Z2 `6 q1 n7 j0 APS2主机控制ASCII码接收寄存器, b7 f/ G5 P& M9 T* R+ K

0x0000.0000


# z& E- \3 H1 N( @7 Z1.2.
* L" Q, m/ B% Z$ ^; s  Fmcuos.com
程序设计注意点
1.2.1.- 嵌入式底层驱动开发技术学习网站5 w) d" T8 P7 w2 u6 I+ p1 a. O
往键盘发送命令
键盘命令:0xED 0x01(点亮滚动锁定指示灯), f0 s6 R5 k$ \, j. z; O# g

7 u- P8 D) H& O/ p( ]% Smcuos.com命令:
% Q6 w  r3 e# m  {5 R, @本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.mcuos.com3 A. M) U2 V& n, A6 d
把命令0xED写入命令寄存器CMD(CMD[7:0]),并且把EnCMD位置位1使PS2写入有效。

: c: e. D# C  [; s! W- 嵌入式底层驱动开发技术学习网站2.嵌入式开发联盟0 M+ z) Z' w; W. _7 @
等待状态寄存器STSTX_IRQ 位被置起,完成往设备写入命令

6 L  `0 j% ]* d( n0 ]- R  e& D5 u3.mcuos.com# F& }. D& W$ S5 B4 N2 K
等待状态寄存器STSRX_IRQ 位被置起,主机控制器接收到设备一个字节的确认信息

3 s( p- j! h0 n; v; H, w& y嵌入式开发联盟4.
' l; x! Z4 v# r* |0 ^2 Qmcuos.com
重新执行1~3步完成第二个命令0x01的写入操作

# R, {+ U% m1 j2 Mmcuos.com
  e  O8 t: m! j0 S6 a* Z' U6 G0 y; j1.2.2.
0 y+ A  [$ p% p4 ?1 g& P3 m8 a本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
接收键盘发送的扫描码
命令:
' @0 Q3 B( _, |嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 H1 K3 q+ |- f
等待状态寄存器STSRX_IRQ 位被置起

* p) h/ N( X2 X8 X% x! h- S& J' Lmcuos.com2.
( j! t* S1 ^' R( n( X( ?. d嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
读取扫描码寄存器SCANCODERX_shift_keyRX_releaseRX_extend

: u3 l" Z2 h! u+ L) y* Vmcuos.com3.
* w% H8 _% H$ y/ A) U% i5 E嵌入式开发联盟
读取扫描码寄存器SCANCODESCANCODE[7:0]

* `1 l& j, A* B6 {$ m) _嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4.
9 }# Z4 j& _; C3 S嵌入式开发联盟
读取ASCII码寄存器SCANCODEASCII[7:0].

& H$ N3 P& a  G) B* Z0 i! M嵌入式开发联盟
" f5 Q& @6 m! ]. p& J# n/ ]! A- 嵌入式底层驱动开发技术学习网站- 嵌入式底层驱动开发技术学习网站$ g, k( M0 W+ o  a) P
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

回复 1# 的帖子

谢谢lz
( {8 M- k* X' u  y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  受用了

TOP

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