索尼PS手柄原理分析与制作.docx
《索尼PS手柄原理分析与制作.docx》由会员分享,可在线阅读,更多相关《索尼PS手柄原理分析与制作.docx(11页珍藏版)》请在冰豆网上搜索。
![索尼PS手柄原理分析与制作.docx](https://file1.bdocx.com/fileroot1/2023-1/22/8f147230-9760-4a10-8f64-55b160581bf5/8f147230-9760-4a10-8f64-55b160581bf51.gif)
索尼PS手柄原理分析与制作
索尼PS手柄原理分析与制作
作者:
未知来源:
游戏机信息网加入时间:
2005-2-14
目录
∙Playstation手柄针脚输出
∙PS手柄信号
∙PS手柄数据
∙用74XX逻辑电路仿真PS手柄
∙用微处理器仿真PS手柄
PS手柄针脚输出
面对插头
-------------------------------
PIN1->|ooo|ooo|ooo|
\_____________________________/
针脚#作用
1DATA
2COMMAND
3N/C(9Voltsunused)
4GND
5VCC
6ATT
7CLOCK
8N/C
9ACK
DATA
信号流向从手柄到主机。
此信号是一个8bit的串行数据,同步传送于时钟下降沿(输入输出信号在时钟信号由高到低时变化,所有信号的读取在时钟前沿到电平变化之前完成。
)
COMMAND
信号流向从主机到手柄。
此信号和DATA相对,同样是一个8bit的串行数据,同步传送于时钟下降沿。
VCC
电源电压从5V到3V原装的索尼手柄都可以工作。
主机主板上装有表面安装的750mA保险丝,用于防止外设过载(750mA是包括左右手柄和记忆卡)。
ATT
ATT用于提供手柄触发信号。
信号在通信期间处于低电平。
又有人将此针脚叫做Select,DTR和Command。
CLOCK
信号流向从主机到手柄。
用于保持数据同步。
ACK
从手柄到主机的应答信号。
此信号在每个8bits数据发送之后的最后一个时钟周期变低,并且ATT一直保低电平。
如果ACK信号不变低约60微秒PS主机会试另一个外设。
PS手柄信号
所有通讯都是8bit串行数据最低有效位先行。
在PS手柄总线的所有时码在时钟下降沿都是同步的。
传送一个字节的情况如下所示。
|BIT0|BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7|
CLOCK-----___---___---___---___---___---___---___---___-----------
DATA-----000000111111222222333333444444555555666666777777--------
********
CMND-----000000111111222222333333444444555555666666777777--------
ACK----------------------------------------------------------__-
数据线的逻辑电平在时钟下降沿驱动下触发改变。
数据的接收读取在时钟的前沿(在记号*处)到电平变化之前完成。
在被选手柄接收每个COMMAND信号之后,手柄需拉低ACK电平在最后一个时钟。
如果被选手柄没ACK应答主机将假定没手柄接入。
当PS主机想读一个手柄的数据时,将会拉低ATT线电平并发出一个开始命令(0x01)。
手柄将会回复它的ID(0x41=数字,0x23=NegCon,0x73=模拟红灯,0x53=模拟绿灯).在手柄发送ID字节的同时主机将传送0x42请求数据。
随后命令线将空闲和手柄送出0x5A意思说:
“数据来了”。
下面是一个数字手柄的时钟信号
ATT-______________________________________________________________
|Byte1||Byte2||Byte3|
CLOCK---_-_-_-_-_-_-_-_-----_-_-_-_-_-_-_-_-----_-_-_-_-_-_-_-_-----
0xFF0x410x5A
DATA-------------------------__________--__----__--__----__--__----
0x010x42
CMND-----_____________-----__--________--__------------------------
ACK--------------------__-------------------__-----------------__-
在手柄执行初始化命令之后将发送它所有的数据字节(数字手柄只有两个字节)。
在最后字节发送之后使ATT高电平,手柄无需ACK应答。
数字手柄的数据传送如下所示(这里A0,A1,A2...B6,B7是两个字节的数据比特)。
ATT_______________________________________-------
|Byte4||Byte5|
CLOCK---_-_-_-_-_-_-_-_-----_-_-_-_-_-_-_-_--------
DATA---D0D1D2D3D4D5D6D7----E0E1E2E3E4E5E6E7-------
CMND----------------------------------------------
***
ACK--------------------__------------------------
注意:
没ACK.
PS手柄数据
下面五个表显示手柄的实际发送字节
标准数字手柄
BYTECMNDDATA
010x01idle
020x420x41
03idle0x5ABit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7
04idledataSLCTSTRTUPRGHTDOWNLEFT
05idledataL2R2L1R1/\OX|_|
所有按键按下有效。
NegCon
BYTECMNDDATA
010x01idle
020x420x23
03idle0x5ABit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7
04idledataSTRTUPRGHTDOWNLEFT
05idledataR1AB
06idledataSteering0x00=Right0xFF=Left
07idledataIButton0x00=Out0xFF=In
08idledataIIButton0x00=Out0xFF=In
09idledataL1Button0x00=Out0xFF=In
所有按键按下有效。
模拟手柄红灯模式
BYTECMNDDATA
010x01idle
020x420x73
03idle0x5ABit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7
04idledataSLCTJOYRJOYLSTRTUPRGHTDOWNLEFT
05idledataL2R2L1R1/\OX|_|
06idledataRightJoy0x00=Left0xFF=Right
07idledataRightJoy0x00=Up0xFF=Down
08idledataLeftJoy0x00=Left0xFF=Right
09idledataLeftJoy0x00=Up0xFF=Down
所有按键按下有效。
模拟手柄绿灯模式
BYTECMNDDATA
010x01idle
020x420x53
03idle0x5ABit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7
04idledataSTRTUPRGHTDOWNLEFT
05idledataL2L1|_|/\R1OXR2
06idledataRightJoy0x00=Left0xFF=Right
07idledataRightJoy0x00=Up0xFF=Down
08idledataLeftJoy0x00=Left0xFF=Right
09idledataLeftJoy0x00=Up0xFF=Down
所有按键按下有效。
PS鼠标
(credittoT.Fujita)
BYTECMNDDATA
010x01idle
020x420x12
03idle0x5ABit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7
04idle0xFF
05idledataLR
06idledataDeltaVertical
07idledataDeltaHorizontal
所有按键按下有效。
用74XX逻辑电路仿真PS手柄
这个电路能设置到仿真一个数字手柄,一个模拟手柄(两种模式)或一个NegCon。
本电路使用了六块74XXIC仿真一个数字手柄,如仿真一个模拟手柄要多四块74XXIC'和四块A/D转换器,同样仿真一个NegCon手柄一样要多四块74XXIC'和四块A/D转换器。
电路如何工作
当ATT电平被主机拉低,反相器4/4A拉高74HC165的SH/!
LD脚,串口输入脚读入数据(图中只画了五块IC中的二块)。
反相器1/4A为HC165提供时钟信号,因此在PS主机输出的CLK信号的每个下降沿HC165移出数据的下一比特。
数据经由ATT信号控制的反相器2/4B门电路输出,使到只有被选的设备才能接入总线。
读进HC165的数据的时码关系如以上图表所示。
看回图表所示第一字节是0xFF,意思是从A1到A8全是高位。
下一个字节是手柄ID。
数据手柄的ID是0x41即B1-8是HLLLLLLHL排列。
再下一个字节是数据准备命令0x5A即C1-8为HLHLLHLH。
最后两个字节是表示按键情况,当没按下为高电平,按下为低电平。
Ack信号由反相器1/4A,2/4A和1/4B产生。
二极管D1只允许当CLK低时反相器1/4A对C1充电。
当CLK高位时间比R1/C1设定的长,反相器2/4A将输出高电平。
高电平经过C2到反相器1/4B输出低脉冲,由ATT信号控制门电路输出(避免争夺总线)。
用微处理器仿真PS手柄
微处理器使用Motorola68HC11。
运行代码使用用汇编,可内置或使用任何52脚的EEPROM。
电路如何工作
本电路使用一片MotorolaMC68HC11完成所有工作。
状态的读入使用16路N/O(normalyopen)开关输入,在电路的左边。
四路模拟输入在右边。
数据发送使用了芯片两个串行口中的一个。
四个跳线控制电路的工作情况。
J1跳线在电路板顶部控制HC11工作在两种操作模式中的一种。
当J1打开时微处理器运行在单芯片模式,闭合时在特殊的bootstrap模式。
J2,3和4选择仿真何种PS手柄,如下表所示。
模式
J2
J3
J4
数字
O
O
O
模拟红灯
O
O
C
NegCon
O
C
O
模拟绿灯
O
C
C
保留
C
X
X
O=打开,C=关闭,X=不用
四个模拟输入在电路的右上角设计外接电位器。
电位器值并没规定一般用10K到50K较灵敏。
三条线分别接中点,电源和地如下所示。
____________________
|||
|\/
|/\/\/\/\
|/\/\/\/\
|||
|||
OOO
PIN3PIN2PIN1
电路板下面的九个插座连到PS主机给微处理器程序使用。
各脚作用如下。
Pin#
作用
1
SCIRXFORRS-232comms(notusedbypsx)
2
SCITX
3
DATA(pin1onPSX)
4
CLOCK(pin2onPSX)
5
COMMAND(pin7onPSX)
6
ATT(pin6onPSX)
7
VCC(pin5onPSX)
8
ACK(pin9onPSX)
9
GND(pin4onPSX)
最后在电路板下部的LVI(lowvoltageinhibitor)作用是保持HC11在复位状态当没足够电压安全运行时。
如果你找不到可以不用不影响电路工作但可能导至过流烧保险丝。
电路板
上面电路板所用元件的编号及型号如下。
元件表
U1
MC68HC11E2
U2
MC34064Lowvoltageinhibitor
XTAL
8Mhz晶振
C1,C2
18pF瓷片电容
C3,C4
1uFmonoorMKT电容
R1
10M电阻
R2-R5
4K7电阻
RP1
4K7x9电阻排
CON1
9脚插座
D1-D16
1N4148二极管
J1
引导模式跳线
J2-J4
手制模式跳线
POT1-4
模拟输入
Button1-16
16路跳线开关
软件
软件包包括电路板PCB图(auto/easytrax格式)这里下载
点击下载该文件
HC11的下载软件
程序包括在ZIP文件中,文件名EELOADER.EXE.这是一个IBM执行文件用作下载代码进HC11。
九针连接口的第一、二脚是一个5VRS232口,可以通过如下一个MAX232转换器连接到任何IBM兼容PC的串口上。
使用它连接到你的PC串口,打EELOADPSXCONT.S19/Cx,x是使用的串口,接着按屏幕上的指令做。