返回列表 发帖

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

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

1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: W3 g" m1 `( O
概要
W90P710 PS2主机控制接口是一个基于PS2协议的APB设备,它通过PS2接口可以和IBM键盘等其它设备相连。例如,当有按键被按下或者放开时,IBM键盘将相应扫描码传给主机控制器,然后键盘的BIOS根据扫描码可以判断是哪一个按键被操作了。键盘也可以从主机控制器接收命令,最通用的命令是状态指示命令(如,数码锁定、大小写字母锁定和滚动锁定指示灯)。
# ]& c: U. |! [" E/ H2 Z: vmcuos.com mcuos.com7 t- K4 e: X  F  \8 }2 k; j
PS2接口工作基于双向通讯协议。键盘可以给主机发送数据,同时主机也可以通过使用PS2时钟线和数据线给键盘发送数据。PS2时钟和数据线都是双向的集电极开路 I/O 线。主机传送在传输方向上有较高的优先级。当PS2数据线和时钟线都是高电位时(即线路空闲),键盘可以自由的传送数据,反之当时钟线位于低电位时,键盘将缓存所有的数据直到PS2时钟线被释放而转变为高电位。一个传送的数据,例如从键盘传给主机,由11比特位构成,依次是一个起始位(逻辑0),8个数据位(最低位在前),一个奇偶校验位(奇校验)和一个结束位(逻辑1)。每一位数据都在时钟产生下降沿时被读取。时钟由键盘产生,时钟信号的频率一般在20~30千赫兹之间。mcuos.com- X! J$ j6 T) f/ S! S% }! i

$ _- {# h3 S2 F% O# v0 V+ N主机到键盘的传输协议由拉低PS2的数据线的电位开始。一般情况下,PS2时钟线至少保持位于低电位60us,然后键盘的数据线拉低,同时释放键盘的时钟线。此后,键盘的PS2时钟线开始产生时钟信号。当第一个下降沿产生后,主机开始在PS2数据线装载第1位数据(起始位),这个数据位将在下一个下降沿被读进键盘,这个过程将重复把一个字节8个数据位和1个奇偶校验位转载到PS2数据线。嵌入式开发联盟8 Q( y$ E5 a, A: J! Q- W( `& n- g

& I" N- V7 S$ f本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.: u" _6 ^% Q% ?$ o& m5 n. m2 Y, k; Q
键盘扫描码对应表
mcuos.com6 ~% X; J3 X1 A% P

0 V; {: L' ]$ w. [1 v+ Pmcuos.com
- B+ t. f' q) W* Z本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式开发联盟1 I. O* \. z$ w& r5 Y+ K$ C2 x$ y

3 }8 y  i0 \. d- H" F$ g嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.
  {  b9 J- V/ Omcuos.com
寄存器映射

Register- 嵌入式底层驱动开发技术学习网站- j3 o+ W+ q# d# y% E, O
寄存器
8 d5 o+ J6 p8 y6 e( N+ g( b嵌入式开发联盟

Address

地址

R/W

/

Description

说明

Reset value

复位初始值

PS2CMD
3 @3 m9 h' @* Q嵌入式开发联盟
0xFFF8.9000
8 _8 s; g% Q9 Hmcuos.com

R/W


" o: ~8 f$ y5 l% |% U( d9 C2 O* K嵌入式开发联盟PS2 Host Controller Command Register

% F. s6 [. D# f: h8 P嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习PS2主机控制命令寄存器" F& E3 R, c1 k4 V) _

0x0000.0000

PS2STS嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& X3 N- [4 }8 q; ~
0xFFF8.9004嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 K; o! X( V( L# ?- [/ M

R/W

- 嵌入式底层驱动开发技术学习网站. r  S& |5 P. f3 k1 _1 k$ R: {: g
PS2 Host Controller Status Register
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" }  h. F7 |1 m% K! \
PS2主机控制状态寄存器mcuos.com) Y4 _( @& s) i  [

0x0000.0000

PS2SCANCODE嵌入式开发联盟, a* ^1 d! K. t& H
0xFFF8.9008mcuos.com$ D9 A" J7 r, w% L9 s$ Z: G

RO


6 v1 t$ F. ^/ XPS2 Host Controller RX Scan Code Register

( k6 R) y4 y; [0 X嵌入式开发联盟PS2主机控制扫描码接收寄存器
, _3 {% R% M7 ?4 W' P1 @4 q! ~- 嵌入式底层驱动开发技术学习网站

0x0000.0000

PS2ASCII本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 \( x( S% m" |& t+ A& x$ H3 h
0xFFF8.900C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. }. D; n5 L4 j; o' X

RO

嵌入式开发联盟# j0 h' O0 ?# @3 c. M
PS2 Host Controller RX ASCII Code Register
- 嵌入式底层驱动开发技术学习网站) Z" |( [$ W- q/ ^* V# \
PS2主机控制ASCII码接收寄存器
+ x3 q2 |; k2 _5 X2 Y& p" s$ j& b% Omcuos.com

0x0000.0000


% s9 J1 t6 o; ~; |. R$ R& o8 Jmcuos.com1.2.
0 |& d4 U/ E4 N' Q: M嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
程序设计注意点
1.2.1.
8 X( [6 @: V4 D2 ^; y* ^$ _嵌入式开发联盟
往键盘发送命令
键盘命令:0xED 0x01(点亮滚动锁定指示灯)
% X* a. Q% m1 `本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 嵌入式开发联盟) {: R9 J( |  s; i9 B
命令:嵌入式开发联盟  i% F2 x4 |) f3 i7 b
1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( Y. S7 P9 H- ?% l  W
把命令0xED写入命令寄存器CMD(CMD[7:0]),并且把EnCMD位置位1使PS2写入有效。

0 c( z! q7 G* D( O, o0 ^- 嵌入式底层驱动开发技术学习网站2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" s, y, n: X$ b8 [3 I
等待状态寄存器STSTX_IRQ 位被置起,完成往设备写入命令

5 _! }* J( ^8 C# o6 zmcuos.com3.嵌入式开发联盟3 E" s5 Y1 D$ o: `
等待状态寄存器STSRX_IRQ 位被置起,主机控制器接收到设备一个字节的确认信息
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 ^7 \( x& X- n& s. k# g  A) {- P
4.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 Q9 t/ y$ I! K+ Q9 |; N0 A0 M
重新执行1~3步完成第二个命令0x01的写入操作
mcuos.com( ~& v, q# b7 ~

# _+ o! w: p! t/ P1.2.2.- 嵌入式底层驱动开发技术学习网站2 p# w) i: E8 |- K- b# c4 Y! w
接收键盘发送的扫描码
命令:
/ t* b5 ?+ q$ D# i, r5 G; amcuos.com1.
& G* Y+ K7 `: Q6 l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
等待状态寄存器STSRX_IRQ 位被置起

; n. m1 W* y+ J! r$ `嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2.
. o. `- M" e' T嵌入式开发联盟
读取扫描码寄存器SCANCODERX_shift_keyRX_releaseRX_extend
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; J  H) R) Z3 b/ S% f' {- F
3.
% Q; t# o( s/ u; ~1 [# N+ pmcuos.com
读取扫描码寄存器SCANCODESCANCODE[7:0]
- 嵌入式底层驱动开发技术学习网站8 Y. x8 n. ]& M6 \+ x: r' `
4.mcuos.com. S, N. f/ p4 w* z/ ?, g$ k# F
读取ASCII码寄存器SCANCODEASCII[7:0].
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, m; s/ z" m! _

* L6 k7 Z- v; R. C1 s( K
! U+ B6 X- d& C$ A本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

回复 1# 的帖子

谢谢lz
2 A0 k6 P& X( n4 w( P% G本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。  受用了

TOP

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