返回列表 发帖

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

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

1.1.
" Z! a4 `- t5 Z4 L4 \" T3 L嵌入式开发联盟
概要
W90P710 PS2主机控制接口是一个基于PS2协议的APB设备,它通过PS2接口可以和IBM键盘等其它设备相连。例如,当有按键被按下或者放开时,IBM键盘将相应扫描码传给主机控制器,然后键盘的BIOS根据扫描码可以判断是哪一个按键被操作了。键盘也可以从主机控制器接收命令,最通用的命令是状态指示命令(如,数码锁定、大小写字母锁定和滚动锁定指示灯)。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! B0 C' R8 K4 P$ Y+ H
+ R3 \& m9 ^3 f
PS2接口工作基于双向通讯协议。键盘可以给主机发送数据,同时主机也可以通过使用PS2时钟线和数据线给键盘发送数据。PS2时钟和数据线都是双向的集电极开路 I/O 线。主机传送在传输方向上有较高的优先级。当PS2数据线和时钟线都是高电位时(即线路空闲),键盘可以自由的传送数据,反之当时钟线位于低电位时,键盘将缓存所有的数据直到PS2时钟线被释放而转变为高电位。一个传送的数据,例如从键盘传给主机,由11比特位构成,依次是一个起始位(逻辑0),8个数据位(最低位在前),一个奇偶校验位(奇校验)和一个结束位(逻辑1)。每一位数据都在时钟产生下降沿时被读取。时钟由键盘产生,时钟信号的频率一般在20~30千赫兹之间。
! E+ L3 J$ D8 \6 y+ V2 N% a' r本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
4 W6 r% {9 p5 Z2 F* ?  Z嵌入式开发联盟主机到键盘的传输协议由拉低PS2的数据线的电位开始。一般情况下,PS2时钟线至少保持位于低电位60us,然后键盘的数据线拉低,同时释放键盘的时钟线。此后,键盘的PS2时钟线开始产生时钟信号。当第一个下降沿产生后,主机开始在PS2数据线装载第1位数据(起始位),这个数据位将在下一个下降沿被读进键盘,这个过程将重复把一个字节8个数据位和1个奇偶校验位转载到PS2数据线。
1 N; _! N$ O$ q7 ?$ b- 嵌入式底层驱动开发技术学习网站 嵌入式开发联盟* W/ ?2 v  ^2 c. y3 H( ~
1.1.
& c" i8 R1 m% r' _# @嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
键盘扫描码对应表

# k. R: b2 o) L7 v5 e! G
; p! Q) ]3 J- b, ]/ a9 Ymcuos.com- 嵌入式底层驱动开发技术学习网站0 q" r( b  X$ q% Q5 g% e" G

" c" R2 i3 j3 S, H+ ^2 Y) E嵌入式开发联盟
! M- E# n: y$ m! v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* f/ G$ O" w  p1 c
寄存器映射

Register
. v! n! I, u8 ~0 j( k" \寄存器mcuos.com1 \5 d4 L. S3 J' t: }3 c' u

Address

地址

R/W

/

Description

说明

Reset value

复位初始值

PS2CMD本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# B' P) l1 o& i
0xFFF8.9000
+ e9 q" N; G+ a( a8 g& X" u嵌入式开发联盟

R/W


; Y  [6 \7 f" c2 m1 [0 `3 V' f本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。PS2 Host Controller Command Register
嵌入式开发联盟, F8 k  w+ Y. B9 A6 j8 L4 G, s
PS2主机控制命令寄存器
+ d* `( _6 P9 j/ b4 W

0x0000.0000

PS2STS- 嵌入式底层驱动开发技术学习网站, ]5 B* w1 g# D: R8 L
0xFFF8.9004嵌入式开发联盟) s, W7 J" H5 D7 W! \

R/W


. `% D3 o) ^$ T( s+ n( `- 嵌入式底层驱动开发技术学习网站PS2 Host Controller Status Register

  Z% i& C: i, l) K) \$ o1 N9 C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。PS2主机控制状态寄存器mcuos.com& S; r2 }0 s8 L! P" _

0x0000.0000

PS2SCANCODE* r( y/ ~- X( g8 d
0xFFF8.9008
7 D! c# L% \- j2 U) `

RO


* X( s  B3 u7 U& E) L# D/ O  VPS2 Host Controller RX Scan Code Register

0 w  n( I7 V" w& u本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。PS2主机控制扫描码接收寄存器
2 @! g9 S8 F  j5 p# ~- 嵌入式底层驱动开发技术学习网站

0x0000.0000

PS2ASCIImcuos.com- R$ X/ l! d) V2 o* f* H
0xFFF8.900C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# b% p% k9 |4 b5 s* @1 a0 H6 u

RO

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 i2 |8 J9 u$ }0 }
PS2 Host Controller RX ASCII Code Register

. K3 F$ \: q- C/ A嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习PS2主机控制ASCII码接收寄存器/ n7 k0 Y# a+ n& I: N+ I

0x0000.0000


- Q& o" o* K' V  F! N本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.2.
  h% S% Y* \- K$ I, \8 s4 U本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
程序设计注意点
1.2.1.
& c$ h# Y7 e5 }  R! |. v- 嵌入式底层驱动开发技术学习网站
往键盘发送命令
键盘命令:0xED 0x01(点亮滚动锁定指示灯)
- k8 w- c/ B+ p- 嵌入式底层驱动开发技术学习网站
1 g/ h. P, }: Y: I' B& U命令:
7 ]3 [0 @# u! u7 t0 g9 Z0 Y1.嵌入式开发联盟3 `7 @- V% x+ L( b& P- l* v* P' g/ c
把命令0xED写入命令寄存器CMD(CMD[7:0]),并且把EnCMD位置位1使PS2写入有效。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# D, K& N0 W6 G2 a6 e6 `6 S
2.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 ]1 v5 ~* D3 o0 P
等待状态寄存器STSTX_IRQ 位被置起,完成往设备写入命令

# t. Y. h, T* u9 w  G5 `3 P本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3.
9 z; n5 I) f, f$ `- V( U嵌入式开发联盟
等待状态寄存器STSRX_IRQ 位被置起,主机控制器接收到设备一个字节的确认信息
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 M* c! }% f5 k( y! r' Q3 q
4.
/ _5 k% M$ ?+ X3 o本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
重新执行1~3步完成第二个命令0x01的写入操作

9 }% h/ \3 l5 m& l0 w$ N( _6 P5 F本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
: k1 T2 f) N4 r& b1.2.2.
6 |$ c6 g+ Y$ e' `8 f$ k- 嵌入式底层驱动开发技术学习网站
接收键盘发送的扫描码
命令:mcuos.com) k9 j1 j) d& m; S
1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- ]7 K5 d2 Q" O, s" ?% D$ |
等待状态寄存器STSRX_IRQ 位被置起

$ H) v8 x/ v4 W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2.
9 ]6 ]; A$ t5 J
读取扫描码寄存器SCANCODERX_shift_keyRX_releaseRX_extend

$ e4 R: f5 ]" d; Z  y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3.
# K6 x1 t- e! u3 u' @嵌入式开发联盟
读取扫描码寄存器SCANCODESCANCODE[7:0]
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  m3 Z  l1 r, u; v
4.
( b$ |' G+ ?: }- 嵌入式底层驱动开发技术学习网站
读取ASCII码寄存器SCANCODEASCII[7:0].

8 w7 {! N0 R( [; R6 Z: z
- u6 h% [- I# E$ I8 h嵌入式开发联盟
# d( Y  k" \# H7 t' N. i
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

回复 1# 的帖子

谢谢lz
: Z' C3 L/ [) }# D4 q0 M) _6 }$ V嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  受用了

TOP

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