返回列表 发帖

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

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

1.1.嵌入式开发联盟9 i& o! ^0 p% r
概要
W90P710 PS2主机控制接口是一个基于PS2协议的APB设备,它通过PS2接口可以和IBM键盘等其它设备相连。例如,当有按键被按下或者放开时,IBM键盘将相应扫描码传给主机控制器,然后键盘的BIOS根据扫描码可以判断是哪一个按键被操作了。键盘也可以从主机控制器接收命令,最通用的命令是状态指示命令(如,数码锁定、大小写字母锁定和滚动锁定指示灯)。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 w! d; ]' v" E, c! R6 g

9 E# m2 G/ M- l嵌入式开发联盟PS2接口工作基于双向通讯协议。键盘可以给主机发送数据,同时主机也可以通过使用PS2时钟线和数据线给键盘发送数据。PS2时钟和数据线都是双向的集电极开路 I/O 线。主机传送在传输方向上有较高的优先级。当PS2数据线和时钟线都是高电位时(即线路空闲),键盘可以自由的传送数据,反之当时钟线位于低电位时,键盘将缓存所有的数据直到PS2时钟线被释放而转变为高电位。一个传送的数据,例如从键盘传给主机,由11比特位构成,依次是一个起始位(逻辑0),8个数据位(最低位在前),一个奇偶校验位(奇校验)和一个结束位(逻辑1)。每一位数据都在时钟产生下降沿时被读取。时钟由键盘产生,时钟信号的频率一般在20~30千赫兹之间。
/ A5 l4 N- s% C8 D- M% @1 y( |嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' s5 i- y( i. Y
主机到键盘的传输协议由拉低PS2的数据线的电位开始。一般情况下,PS2时钟线至少保持位于低电位60us,然后键盘的数据线拉低,同时释放键盘的时钟线。此后,键盘的PS2时钟线开始产生时钟信号。当第一个下降沿产生后,主机开始在PS2数据线装载第1位数据(起始位),这个数据位将在下一个下降沿被读进键盘,这个过程将重复把一个字节8个数据位和1个奇偶校验位转载到PS2数据线。- 嵌入式底层驱动开发技术学习网站/ i. ^4 S/ Y( h; r, j
- 嵌入式底层驱动开发技术学习网站! Q6 v5 A0 B1 @1 c$ y9 S
1.1.
+ ?+ F1 b- A" j- h# e8 k嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
键盘扫描码对应表
- 嵌入式底层驱动开发技术学习网站0 a. j# E5 W0 f% Q9 g) @/ c; |
嵌入式开发联盟2 g  }3 R4 y: H9 O. X

% i* W  V7 A5 \嵌入式开发联盟本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 @4 ~- a, M* n4 C4 R5 w* s# o
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* M6 z7 h8 _0 J! L" L
1.1.- 嵌入式底层驱动开发技术学习网站. {' S& m" z& I0 l4 \9 W% @2 C
寄存器映射

Register
4 |1 ]3 ~" }3 z1 I( q5 A嵌入式开发联盟寄存器
, V# J$ a  _9 j2 E, W- l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

Address

地址

R/W

/

Description

说明

Reset value

复位初始值

PS2CMD
# T+ X2 E/ Q3 A) B" y+ l( W9 f- 嵌入式底层驱动开发技术学习网站
0xFFF8.9000嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 y" l, M9 w" P/ @9 P

R/W

嵌入式开发联盟4 i) w( a8 y# b
PS2 Host Controller Command Register
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% g) v* x% D! c7 b( W( e9 d
PS2主机控制命令寄存器嵌入式开发联盟4 v) m  u# u5 n% A% P2 T" g

0x0000.0000

PS2STS
2 ^; J9 Y) F9 R! K2 o- 嵌入式底层驱动开发技术学习网站
0xFFF8.9004
1 G$ C3 s* r$ `6 j. _0 V, m3 e8 c嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

R/W

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, k* s  q0 q3 s7 E* P* ^6 j
PS2 Host Controller Status Register

: l+ H3 l# y1 X. S/ n& n, H) \' f嵌入式开发联盟PS2主机控制状态寄存器
' B+ y8 ?# R. l8 w  P- 嵌入式底层驱动开发技术学习网站

0x0000.0000

PS2SCANCODE
/ x) [/ I& O0 D- 嵌入式底层驱动开发技术学习网站
0xFFF8.9008- 嵌入式底层驱动开发技术学习网站! q0 u: m2 f) f2 f$ h7 N0 ?

RO


0 a) E" i/ x2 w( w$ [mcuos.comPS2 Host Controller RX Scan Code Register

1 U6 \5 v/ T- b. k& G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习PS2主机控制扫描码接收寄存器4 b3 a6 f( I' i8 m: n0 D

0x0000.0000

PS2ASCII
6 M9 k" B6 I6 q) F6 [
0xFFF8.900C
% I$ E+ X! M% K% E- 嵌入式底层驱动开发技术学习网站

RO

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 v  S) P3 K2 Y6 e
PS2 Host Controller RX ASCII Code Register

0 s# P( k1 _0 _) z  t0 o1 R- 嵌入式底层驱动开发技术学习网站PS2主机控制ASCII码接收寄存器本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, R5 v& g- h( M# j

0x0000.0000

; b# ^0 s0 a% R( l7 J1 e# c& i( D
1.2.
$ J! ^' Y- A8 R$ amcuos.com
程序设计注意点
1.2.1.
' s* c+ y3 D0 q  }+ Q嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
往键盘发送命令
键盘命令:0xED 0x01(点亮滚动锁定指示灯)本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ @" J8 v1 T9 o( n; \$ X- w

  }! M6 p; p% }9 K# c  i. C$ F! [命令:嵌入式开发联盟  Y7 E2 v8 M& [1 ]5 V8 x
1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 k" X; g& a2 p! Z+ j' U
把命令0xED写入命令寄存器CMD(CMD[7:0]),并且把EnCMD位置位1使PS2写入有效。

! q- y9 w4 m- h: m- 嵌入式底层驱动开发技术学习网站2.mcuos.com$ Y  H' t  I5 F
等待状态寄存器STSTX_IRQ 位被置起,完成往设备写入命令

7 @, E+ O5 p* p. \% D5 |mcuos.com3.嵌入式开发联盟* n8 e# R! R+ n" `  T4 T
等待状态寄存器STSRX_IRQ 位被置起,主机控制器接收到设备一个字节的确认信息

/ z! y5 K' Q, V  [本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4.
5 Z$ {- b( t5 x1 g4 f嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
重新执行1~3步完成第二个命令0x01的写入操作

4 ~& f+ S7 E3 D; q0 v嵌入式开发联盟 嵌入式开发联盟" P5 Y( P& M5 g: }1 e4 o
1.2.2.
- X' B  C" u/ N! p' X# L1 E) B& ^嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
接收键盘发送的扫描码
命令:本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' ^9 C2 T% j. r3 n
1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 S9 F% n+ P; {% w. Z& z
等待状态寄存器STSRX_IRQ 位被置起

& F4 @; l4 L( Y% d- 嵌入式底层驱动开发技术学习网站2.- 嵌入式底层驱动开发技术学习网站- w2 z! E3 [7 X- R
读取扫描码寄存器SCANCODERX_shift_keyRX_releaseRX_extend
嵌入式开发联盟' `+ q( K* U0 a& E: d  j; S6 \
3.
" Q# n" j% s6 W" A- 嵌入式底层驱动开发技术学习网站
读取扫描码寄存器SCANCODESCANCODE[7:0]

5 ?0 H' S! P+ ~& R0 f1 P. ~& Nmcuos.com4.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* f# P5 J; c+ [
读取ASCII码寄存器SCANCODEASCII[7:0].

5 K! _  t: {" `& ^! P& ~- t本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 mcuos.com/ Y8 P3 u8 ]/ f1 f& w; V) o

( q' Q# L6 r3 J+ o- q$ G; Y嵌入式开发联盟
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

回复 1# 的帖子

谢谢lz
6 x+ _: L; G- K8 B% Z! H- 嵌入式底层驱动开发技术学习网站  受用了

TOP

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