Initialization
Initializing the chip requires knowledge of the UART’s register set. The first step is to set the baud rate
divisor. You do this by first setting the DLAB (Divisor Latch Access Bit) high. This bit is Bit 7 at Base
A3. In C code, the call would be:
outportb(BA3,0x80);
You then load the divisor into Base A0 (low byte) and Base A1 (high byte). The
following equation defines the relationship between baud rate and divisor:
Desired Baud Rate = (UART clock frequency) ÷ (32 * divisor)
When the Baud jumper is in the X1 position, the UART clock frequency is 1.8432 Mhz. When the
jumper is in the X4 position, the clock frequency is 7.3728 Mhz. The following table lists popular divisor
frequencies. Note that there are two columns to consider depending on the position of the Baud jumper.
Baud Rate Divisor x1
Divisor x4
Max Diff. Cable Length*
460800 -
1
550
ft
230400 -
2
1400
ft
153600 -
3
2500
ft
115200 1
4
3000
ft
57600 2
8
4000
ft
38400 3
12
4000
ft
28800 4
16
4000
ft
19200 6
24
4000
ft
14400 8
32
4000
ft
9600
12
48 – Most Common 4000 ft
4800 24 96
4000
ft
2400 48 192
4000
ft
1200 96 384
4000
ft
* Recommended maximum distances for differentially driven data cables (RS422 or RS485) are for typical conditions.
Table 5-1:
Baud Rate Divisor Values
In C, the code to set the chip to 9600 baud is:
outportb(BASEADDR, 0x0C);
outportb(BA1,0);
The second initializing step is to set the Line Control Register at Base A 3. This register
defines word length, stop bits, parity, and the DLAB. Bits 0 and 1 control word length and allow word
lengths from 5 to 8 bits. Bit settings are extracted by subtracting 5 from the desired word length. Bit 2
determines the number of stop bits. There can be either one or two stop bits. If Bit 2 is set to 0, there
will be one stop bit. If Bit 2 is set to 1, there will be two stop bits. Bits 3 through 6 control parity and
break enable. They are not commonly used for communications and should be set to zero. Bit 7 is the
DLAB discussed earlier. It must be set to zero after the divisor is loaded or else there will be no
communication.
The C command to set the UART for an 8-bit word, no parity, and one stop bit is:
outportb(BA3, 0x03)
The final initialization step is to flush the receiver buffers. You do this with two reads from the receiver
buffer at Base A0. When done, the UART is ready to use.
Manual PCI-COM-1S
14