The Parallel Port: Negotiation Sequence
Signal Flow |
※ |
A 1284 compliant peripheral device must implement the negotiation sequence, because this is how reverse channel and advanced modes are activated.
/Select | /AutoFeed | D0,...,D7 | /Strobe | /Ack | /Error | Select | PE | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1284Active | HostBusy | HostClk | PtrClk | /DataAvail | XFlag | AckDataReq | ||||||||||||||||||||||||||||||||||||
1 |
|
|
|
|
|
|
|
|
No extended 1284 mode must be active | |||||||||||||||||||||||||||||||||
2 |
|
|
|
|
|
|
|
|
H ensures sane state of control lines | |||||||||||||||||||||||||||||||||
3 |
|
|
|
|
|
|
|
|
H places negotiation byte on data lines | |||||||||||||||||||||||||||||||||
4 |
|
|
|
|
|
|
|
|
H requests negotiation | |||||||||||||||||||||||||||||||||
5 |
|
|
|
|
|
|
|
|
P acknowledges negotiation | |||||||||||||||||||||||||||||||||
6 |
|
|
|
|
|
|
|
|
H strobes negotiation byte into P | |||||||||||||||||||||||||||||||||
7 |
|
|
|
|
|
|
|
|
H waits (for >= 0.5us?) | |||||||||||||||||||||||||||||||||
8 |
|
|
|
|
|
|
|
|
H requests answer | |||||||||||||||||||||||||||||||||
9 |
|
|
|
|
|
|
|
|
P places abilities on bus | |||||||||||||||||||||||||||||||||
10 |
|
|
|
|
|
|
|
|
P signals valid answer | |||||||||||||||||||||||||||||||||
11 |
|
|
|
|
|
|
|
|
Notes
- /Init must be constantly high during negotiation.
-
If the /Strobe signal is missing, a peripheral should return to the de-selected Centronics compatibility state when /AutoFeed goes high again. There is a proper 1284 termination sequence, too.
Negotiation Byte |
※ |
The negotiation byte is a combination of bits that the host uses to negotiate a mode, select a sub-device, and possibly request a device ID from the peripheral.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
---|---|---|---|---|---|---|---|---|
0 | 0 | reserved | ||||||
1 | 0 | 0 | 0 | EPP mode | ||||
0 | 0 | 1 | 0 | ECP mode without RLE | ||||
0 | 1 | 1 | 0 | ECP mode with RLE | ||||
0 | 0 | 0 | 1 | Byte mode | ||||
0 | 0 | 0 | 0 | Nibble mode | ||||
0 | no device ID requested | |||||||
1 | device ID requested | |||||||
0 | without extensibility link | |||||||
1 | with extensibility link |