EPP Printer Port / Enhanced Parallel Port
Pin No. | Signal Name |
1 | Write # |
2 | Address/Data 0 |
3 | Address/Data 1 |
4 | Address/Data 2 |
5 | Address/Data 3 |
6 | Address/Data 4 |
7 | Address/Data 5 |
8 | Address/Data 6 |
9 | Address/Data 7 |
10 | Interrupt # |
11 | Wait # (paired with 16) |
12 | Paper End * |
13 | Select * |
14 | Data Strobe # |
15 | Error * |
16 | Initialize Printer *(paired with 11) |
17 | Address Strobe # |
18 | Ground (data) |
19 | Ground (Paired with 1) |
20 | Ground (Paired with 10) |
21 | Ground (Paired with 12) |
22 | Ground (Paired with 13) |
23 | Ground (Paired with 14) |
24 | Ground (Paired with 15) |
25 | Ground (Paired with 17) |
Each signal is identified by its pin number on a DB-25 connector and its signal name.
In it's SPP mode, all signals are essentially
the same as a Standard Parallel Port. When the enhanced features are
enabled all eight data lines are used and only five signal lines,
although these lines change definition (changed lines are indicated
by a '#' in the table above). The other four lines (indicated by a
'*') are used for application-specific purposes.
Address/Data bits
These 8 lines carry the information from device to device, each line carries a bit of information to be sent or received, the information here travels in both ways since this is a bidirectional port unlike the SPP port where information on these lines travel from the computer to the device. These lines function with standard TTL voltages, 5 volts for a logical 1 and 0 volts for a logical 0.
Write
This line is used to let devices connected to the port, that data is beeing sent on the data lines (pins 2-9), it is normally high and goes low when data is being transmitted.
Interrupt
Used by devices connected to the EPP to request an interrupt, when in normal mode the line is low and goes high when an interrupt requested by a device.
Wait
The wait line is used to indicate that a data transfer was successfull. The line is high in it's normal state, when data has been received it goes low and will go back high when it's ready to receive the next byte.
Data strobe
This line is essentially the same as the strobe line on the SPP, when a device sends data, it will put the byte information on all 8 data lines and then will put this line low to let the other device connected that it can sample the data present.
Address strobe
The address strobe works the same as the data strobe line, but instead of indicating regular data, it an adress, that can be used to select a device connected to the port or select a register. The line is normally high and goes low when active.
Other lines
The EPP specification lets the four other lines used by the Standard Parallel Port, to be deffined as needed by the specific needs of each application. The four lines are pin 12 (Paper End), 13 (Select), 15 (Error) and 16 (Init).
ECP Printer Port Extended Capabilities Port
ECP is an extension of the EPP design, since EPP didn't provide for the way to carry out each transfer every step of the way, Hewlett-Packard and Microsoft combined their efforts to pick up where EPP leaves off. The first version (1.0) was first published in November 1992 and many new versions have been published since. ECP adds two different modes of communications. A fast two way mode and another faster two way mode by using simple RLE compression scheme.
ECP as with EPP is backwards compatible with old style printers and devices, but when advance devices are connected the ECP port can transfer data at higher speeds and with more versatility. By including a complete protocol, every transfer is negotiated by asking the connected device it's capabilities. This means that when using a printer with ECP capabilities and using compression, the port will automatically transfer the data in the best and fastest possible way.
By using a simple compression called RLE (Run Length Encoding), the ECP port can boost the speed of transmitting data. The RLE scheme is a simple byte level data compression system that will effectively compress long sequences of the same byte by using a two byte code that is transmitted by sending the repeated byte and the number of times it is repeated in the sequence. This method works over repeated byte strings of up to 128 bytes, which means that it allows a maximum compression of 64:1. This method is good for images that often contain long streams of the same bytes, but in regular text output, this method is not very effective.
The ECP port is also designed to accept multiple devices on a single port. To accomplish this task, it uses its own addressing scheme, it sends a channel address command on the parallel port bus (data lines). By doing this the port tells all devices, except the one to witch the stream of data is meant for, to ignore all forthcoming data, until the next channel address command. If no channel address command is sent for a given transfer, it defaults to the address zero. This addressing scheme gives it the possibility to connect up to 128 different devices or channel addresses.
Each signal is identified by its pin number on a DB-25 connector and its signal name.
DB25 | Centronic 36 Pin | |||
Pin No. | Signal Name | Pin No. | Signal Name | |
1 | Strobe | 1 | nStrobe | |
2 | Data 0 | 2 | Data 0 | |
3 | Data 1 | 3 | Data 1 | |
4 | Data 2 | 4 | Data 2 | |
5 | Data 3 | 5 | Data 3 | |
6 | Data 4 | 6 | Data 4 | |
7 | Data 5 | 7 | Data 5 | |
8 | Data 6 | 8 | Data 6 | |
9 | Data 7 | 9 | Data 7 | |
10 | nAcknowledge | 10 | nAcknowledge | |
11 | Busy | 11 | Busy | |
12 | PError | 12 | PError | |
13 | Select | 13 | Select | |
14 | nAutoFeed | 14 | nAutoFeed | |
15 | nFault | 15 | N/C | |
16 | nInit | 16 | N/C | |
17 | nSelectIn | 17 | N/C | |
18 | Ground | 18 | N/C | |
19 | Ground | 19 | Ground | |
20 | Ground | 20 | Ground Connector | |
21 | Ground | 21 | Ground | |
22 | Ground | 22 | Ground Connector | |
23 | Ground | 23 | Ground | |
24 | Ground | 24 | Ground Connector | |
25 | Ground | 25 | Ground | |
26 | Ground Connector | |||
27 | Ground | |||
28 | Ground Connector | |||
29 | Ground | |||
30 | Ground | |||
31 | nInit | |||
32 | nFault | |||
33 | Ground | |||
34 | N/C | |||
35 | N/C | |||
36 | nSelectIn |
Standard Parallel Port
This is the original parallel port, it's been used on all PC computers since the very beginning and has mostly remained unchanged over the years. When IBM came up with the first PC, they opted to go along the lines of the the most prominent printer manufacturer at the time, Centronics. This printer manufacturer had developed a set of control signals that was up to the task of controlling computer printers and since many printer manufacturers had been adopting this now standard design, it was the obvious choice to make.
But when IBM constructed it's PC they opted to not use the true Centronics connector which was a 36 conductor Amphenol connector (also known as the Centronics connector). IBM opted for a 25 pin D shell connector also called a DB-25 connector. Since then, printer manufacturers have always used Centronics connectors and PC manufacturers have been using DB-25 connectors. This is the reason why you need this special adapter cable that is known as a printer cable and is now a standard accessory.
Each signal is identified by its pin number on a DB-25 and Centronics 36 pin connector and its signal name.
DB25 | Centronic 36 Pin | |||
Pin No. | Signal Name | Pin No. | Signal Name | |
1 | Strobe | 1 | Strobe | |
2 | Data 0 | 2 | Data 0 | |
3 | Data 1 | 3 | Data 1 | |
4 | Data 2 | 4 | Data 2 | |
5 | Data 3 | 5 | Data 3 | |
6 | Data 4 | 6 | Data 4 | |
7 | Data 5 | 7 | Data 5 | |
8 | Data 6 | 8 | Data 6 | |
9 | Data 7 | 9 | Data 7 | |
10 | Acknowledge | 10 | Acknowledge | |
11 | Busy | 11 | Busy | |
12 | Paper End | 12 | Paper End | |
13 | Select | 13 | Select | |
14 | AutoFeed | 14 | AutoFeed | |
15 | Error | 15 | N/C | |
16 | Init | 16 | N/C | |
17 | Select In | 17 | N/C | |
18 | Ground | 18 | N/C | |
19 | Ground | 19 | Ground | |
20 | Ground | 20 | Ground | |
21 | Ground | 21 | Ground | |
22 | Ground | 22 | Ground | |
23 | Ground | 23 | Ground | |
24 | Ground | 24 | Ground | |
25 | Ground | 25 | Ground | |
26 | Ground | |||
27 | Ground | |||
28 | Ground | |||
29 | Ground | |||
30 | Ground | |||
31 | Init | |||
32 | Error | |||
33 | Ground | |||
34 | N/C | |||
35 | N/C | |||
36 | Select In |
Strobe
The strobe line is the heart of the parallel port, it tells the printer when to sample the information of the data lines, it is usually high and goes low when a byte of data is transmitted. The timing is critical for the data to be read correctly, all bits on the data lines must be present before the strobe line goes low, to insure data integrity when the printer samples the data lines. The time needed for each byte is about half a microsecond then the the strobe line goes low for about one microsecond and then the data is usually still present for another half microsecond after the strobe goes high. So the total time needed to transmit a full byte is around two microseconds.
Data
These 8 lines carry the information to be printed and also special printer codes to set the printer in different modes like italics, each line carries a bit of information to be sent, the information here travels only from the computer to the printer or other parallel device. These lines function with standard TTL voltages, 5 volts for a logical 1 and 0 volts for a logical 0.
Acknowledge
This line is used for positive flow control, it lets the computer know that the character was successfully received and that it's been dealt with. It's normally high and goes low when it has received the character and is ready for the next one, this signal stays low for about 8 microseconds.
Busy
As seen above (strobe line), each byte takes about 2 microseconds to be sent to the printer, this means the printer is receiving about 500,000 bytes per second (1 sec divided by 2 microseconds), no printer can print this fast, so they came up with a busy line. Each time the printer receives a byte this line will send this line high to tell the computer to stop sending, when the printer is done manipulating the byte (printing, putting it in the buffer or setting it's internal functions) it then goes back low, to let the computer know that it can send the next byte.
Paper End
Also refered to as Paper Empty, this line will go high when you run out of paper, just like the paper out light on your printer, this way the computer will know and can tell you of the problem. When this happens the busy line will also go high so the computer stops sending data. Without this line when you would run out of paper the busy line would go high and the computer would seem to be hanged.
Select
This line tells the computer when it is selected (or online), just like the light on your printer. When the select line is high the printer is online and is ready to receive data, when it's low the computer will not send data.
Auto Feed
Not all printers treat the cariage return the same way, some will just bring the print head to the beginning of the the line beeing printed and some will also advance the paper one line down (or roll the paper one line up). Most printers have a DIP switch or some other way to tell your preference of how to interpret the cariage return. The auto feed signal lets your computer do the job for you, when it put's this signal low, the printer will feed one line when it gets a cariage return, by holding the signal high the software must send a line feed along with the cariage return to obtain the same effect.
Error
This is a general error line, there is no way of knowing the exact error from this line. When no errors are detected, this line is high, when an error is detected it goes low. Some of the errors that can arrise through this line are: cover open, print head jammed, a broken bealt by detecting that the head does not come back to it's home position or any other error that your printer can detect.
Initialize Printer
This line is used to reinitialize the printer, the computer will accomplish this by putting the line, wich is normally high, to it's low state. This is very useful when starting a print job, since special formating codes might have been sent to the printer on the last job, by reinitializing the printer you are sure of not messing up the whole thing, like printing the whole document in italics or something.
Select Input
Many computers give the option of letting the computer the option of putting the printer online or not, by putting this signal high the printer is kept in it's offline state and putting it low the printer is online and will accept data from the computer. Many printers have a DIP switch to let decide if the computer can control the online state, when the switch is active it will keep this line always low, thus keeping the computer from putting the printer offline.
Ground
This is a regular signal ground and is used as a reference for the low signal or logical 0.