I was able to gather here some informations about specifications of the PSX controller communication system.
But some informations presented on that article are wrong or incomplete (or at least doesn't match my observations).
Specifications
The controller (Standard Digital Pad, NPC-103, ...) uses a 5-wires serial bus to communicate with the playstation.
The serial bus is really a SPI look-a-like bus (one byte in one byte out), then i will use SPI names to name each wire.
Wires:
- Clock (SCLK)
- Command (MOSI)
- Data (MISO)
- Slave Select (SS)
- Acknowledge (ACK)
Parameters:
- Clock is 250 KHz
- Clock is low when inactive (CPOL = 0)
- Bit order is least significant bit first
- 8 bits per transfer
- Data is valid on Clock leading edge (CPHA = 0)
- Slave Select is active low
ACK is pulled low by the controller after each transfer for at least one clock tick.
Controller connector
1 2 3 4 5 6 7 8 9
-------------------------
| o o o | o o o | o o o |
\-----------------------/
Orientation: Looking at the connector
- MISO
- MOSI
- +7.5V (Used for rumble motors)
- GND
- VCC (+3.3V)
- SS
- SCLK
- N/C
- ACK
While pin 8 is not connected in all the controllers i have checked, it's wired inside the playstation, then it must have a role.
Communication
Coming soon.