TS-SER4
Product Page | |
Specifications | |
---|---|
Weight 54g (approx) | |
Documents | |
Schematic | |
Mechanical Drawing |
Introduction
The TS-SER4 is a PC/104 expansion card with four serial ports using the PC standard 16C550 type UARTs (with 16-byte FIFOs). All four COM ports support RS-232 levels and two of these COM ports can optionally support RS-422/ RS-485 levels.
A flexible interrupt sharing design allows for a large number of COM ports using a minimum number of interrupts. An interrupt status register allows rapid identification of the interrupt source.
This product uses a multi-layer PCB with power and ground planes to minimize noise and EMI issues. The TS-SER4 only requires a single 5V power supply.
PC/104 Bus Interface
The TS-SER4 features a 16-bit PC/104 bus interface that allows access up to 11 IRQ lines. A lower cost version with an 8-bit PC/104 bus interface limits the interrupt selection to 6 IRQ lines (IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, and IRQ9). A Xilinx programmable Logic Device (PLD) is used to decode the COM port addresses. This allows for a great amount of flexibility in the standard product and allows for custom configurations if they are necessary.
Serial Ports
The two serial ports that are labeled COM_A and COM_B support RS-232 levels only. These two ports support the full complement of standard RS-232 handshakes as shown in Table 1.
Figure 1 - Serial Port Header Pin Location. Pin 1 is labeled with a dot in the legend.
05 | 04 | 03 | 02 | 01 |
10 | 09 | 08 | 07 | 06 |
Table 1: Pin-out for COM_A and COM_B Headers
Pin# | RS-232 Signal |
---|---|
1 | DCD |
2 | RX data |
3 | TX data |
4 | DTR |
5 | GND |
6 | DSR |
7 | RTS |
8 | CTS |
9 | RI |
10 | - |
The two serial ports labeled COM_C and COM_D support a subset of RS-232C handshakes lines that is sufficient for the vast majority of applications. In addition these two ports can optionally have RS-485/RS-422 drivers. Table 2 lists the pin-outs for these ports
Table 2: Pinout for COM_C and COM_D Headers
Pin | RS-232 | RS-422 | RS-485 |
---|---|---|---|
1 | TX+ | RX/TX+ | |
2 | RXD | ||
3 | TXD | ||
4 | RX+ | ||
5 | GND | GND | GND |
6 | TX- | RX/TX- | |
7 | RTS | ||
8 | CTS | ||
9 | RX- | ||
10 |
The serial ports all use 16C550 UARTs, which provide 16 byte send and receive FIFOs, reducing the CPU overhead of high-speed serial communications.
The serial baud clock (common to all four serial ports) is derived from the PC/104 OSC (14.318 MHz) signal. If this signal is not present on the bus (all Technologic Systems products have this signal), it will be necessary to add a 3.6864 MHz crystal oscillator in the position labeled X1. This supplemental crystal oscillator can also be used to generate very high-speed baud rates (up to 1 Megabit/sec) or non-standard baud rates easily. The PC/104 OSC signal is always used as the clock source except when a crystal oscillator is installed. When a crystal oscillator is installed, it is always used to drive the baud clock.
NOTE:
Not all serial adapter cables are alike! We are aware of at least two 'standard' pinouts for these cables. If you did not purchase your serial adapter cables from us, this may be an issue if the serial ports are not working.
NOTE:
On the FD version of the TS-SER4, COM-C and COM-D have pin 4 hard wired to RS485 X+. Even when the RS-232 jumper is selected, DTR will be absent on these ports.
COM Port Selection
The four COM ports can be configured as COM1 thru COM24. Jumpers (labeled COM1, COM2, COM4 and JP3) are used to select the base COM port using a binary weighting. COMA is always the base COM port selected. For example, if the four COM ports are to be configured as COM5 thru COM8 then jumpers "COM1" and "COM4" should be installed (1 + 4 = 5). In this case COMA would be COM5 and COMB, COMC, and COMD would be COM ports COM6, COM7, and COM8 respectively.
Table 3 documents jumper settings and the base COM port selected.
Table 3: Base COM port Selection
Jumper | Control REG | COM Port | |||
---|---|---|---|---|---|
COM1 | COM2 | COM4 | JP3 | Base Addr | Base Addr |
yes | no | no | no | 230h | COM1 |
no | yes | no | no | 230h | COM2 |
yes | yes | no | no | 230h | COM3 |
no | no | yes | no | 230h | COM4 |
yes | no | yes | no | 234h | COM5 |
no | yes | yes | no | 234h | COM6 |
yes | yes | yes | no | 234h | COM7 |
no | no | no | no | 238h | COM9 |
yes | no | no | yes | 240h | COM13 |
no | yes | no | yes | 240h | COM14 |
yes | yes | no | yes | 240h | COM15 |
no | no | yes | yes | 240h | COM16 |
yes | no | yes | yes | 244h | COM17 |
no | yes | yes | yes | 244h | COM18 |
yes | yes | yes | yes | 244h | COM19 |
no | no | no | yes | 248h | COM21 |
Table 4 documents the physical I/O address locations for COM ports COM1 thru COM12.
Table 4: COM port I/O locations
COM Port | I/O Location (Hex) |
---|---|
COM1 | 3F8 |
COM2 | 2F8 |
COM3 | 3E8 |
COM4 | 2E8 |
COM5 | 3A8 |
COM6 | 2A8 |
COM7 | 3A0 |
COM8 | 2A0 |
COM9 | 398 |
COM10 | 298 |
COM11 | 390 |
COM12 | 290 |
COM13 | 378 |
COM14 | 278 |
COM15 | 368 |
COM16 | 268 |
COM17 | 328 |
COM18 | 228 |
COM19 | 320 |
COM20 | 220 |
COM21 | 318 |
COM22 | 218 |
COM23 | 310 |
COM24 | 210 |
There are four status registers associated with each TS-SER4 board. These registers contain the status of all the jumpers and also the status of the interrupts for each COM port. These four registers have different I/O locations depending upon the Base COM port selected. This allows for multiple TS-SER4 boards to be installed. Table 3 documents where the base address for these control and status registers is located. There are a total of six different Base locations to allow a total of six TS-SER4 boards in a single system. Using a custom configuration in the Xilinx PLD, it is possible to have more than three boards in a system.
Control and Status Registers
There are four registers on each TS-SER4 board (unrelated to the UARTs). These registers are documented in Table 5 below. The first three registers are "Read Only" while in the fourth register bit 7 is "Read/Write" and bits 0-6 are "Read Only". For all registers, if a condition is true, a logic "1" is returned. For example, when a jumper is present, a logic "1" is returned. For the Base + 1 address, if an interrupt is pending, the respective status bit is set to a logic "1".
Table 5 - TS-SER4 Control and Status Registers
Address | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|---|
Base + 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
Base + 1 | INT_D | INT_C | INT_B | INT_A | ||||
Base + 2 | J_com4 | J_com2 | J_com1 | J_irq8 | J_irq4 | J_irq2 | J_irq1 | |
Base + 3 | En_485 | OP_485 | J_JP3 | J_JP2 | J_JP1 | J_2xBaud | J_2irq |
The Base address (Base + 0) always returns a fixed value of 7A (Hex).
The Base + 1 address returns the status of the 4 interrupt sources from COM_A, COM_B, COM_C, and COM_D. This is essential for sharing interrupts and allows the interrupt service routine to determine which COM port has an interrupt pending. When any of these sources has an interrupt pending, the respective status bit is set.
The Base + 2 address returns the status of the jumpers that determine the Base COM port location (jumpers J_com1 thru J_com4) and the Base IRQ selected (jumpers J_irq1 thru J_irq8).
The Base + 3 address has the RS-485 option bit returned on bit 6. Bits 0-4 return the status of other miscellaneous jumpers. Bit 7 of this register is readable and writeable. When set, bit 7 enables RS-485 and RS-422 operation. At power-up or system reset, bit 7 is initialize to a zero (RS-485 disabled). Note bit 6 must set (RS-485 option is populated) in order for RS-485 or RS-422 to function.
Interrupt Selection
The TS-SER4 has four interrupt sources (COM_A thru COM_D) that can be routed to one or two of 11 possible PC/104 interrupts. Jumpers are used to select which interrupts are used.
The jumpers use a simple addition algorithm to select the interrupt. For example, if you wish to use IRQ6, then the jumpers labeled IRQ2 and IRQ4 should be installed (4 + 2 = 6).
Either a single interrupt or two interrupts may be used. All four sources are mapped to a single interrupt when jumper "2-IRQs" is not installed. When this jumper is installed, the COM_A and COM_C interrupts are routed to the lower IRQ and COM_B and COM_D interrupts are routed to the higher IRQ as shown in Table 6. The Interrupt status register can be read to determine which COM port is the source of the interrupt. See Section 5.
Table 6: Interrupt Selection
Jumper | IRQ | ||||
---|---|---|---|---|---|
IRQ1 | IRQ2 | IRQ4 | IRQ8 | 2-IRQs | Selected |
Yes | Yes | No | No | No | IRQ3 |
No | No | Yes | No | No | IRQ4 |
Yes | No | Yes | No | No | IRQ5 |
No | Yes | Yes | No | No | IRQ6 |
Yes | Yes | Yes | No | No | IRQ7 |
Yes | No | No | Yes | No | IRQ9 |
No | Yes | No | Yes | No | IRQ10 |
Yes | Yes | No | Yes | No | IRQ11 |
No | No | Yes | Yes | No | IRQ12 |
No | Yes | Yes | Yes | No | IRQ14 |
Yes | Yes | Yes | Yes | No | IRQ15 |
Yes | Yes | No | No | Yes | 3 and 4 |
No | No | Yes | No | Yes | 4 and 5 |
Yes | No | Yes | No | Yes | 5 and 6 |
No | Yes | Yes | No | Yes | 6 and 7 |
Yes | Yes | Yes | No | Yes | 7 and 9 |
Yes | No | No | Yes | Yes | 9 and 10 |
No | Yes | No | Yes | Yes | 10 and 11 |
Yes | Yes | No | Yes | Yes | 11 and 12 |
No | No | Yes | Yes | Yes | 12 and 14 |
No | Yes | Yes | Yes | Yes | 14 and 15 |
RS-485 and RS-422
COM_C and COM_D can support RS-232 or RS-485 or RS-422 protocols. Jumpers are used to select which mode is to be used for each port. There are also jumpers to add 120 ohm termination resistors for the TX and RX pairs. Termination resistors may be required when running very long distances at high baud rates. The TS-SER4 board supports either half-duplex or full duplex operation. The jumpers are labeled "RS-485" to select half-duplex (single pair operation) and the jumpers are labeled "RS-422" for full duplex operation (two pairs required).
The transmit enable for the RS-485 driver is controlled by the RTS signal. The RTS signal must be asserted true to enable the RS-485 driver. When RTS is deasserted it disables the transmit driver and enables the RS-485 receiver. The RTS signal has no effect on the RS-422 receiver. The RS-422 receiver is always functional. But RTS must be asserted to enable the RS-422 driver.
There is a control bit (See Section 5) that must be set for proper RS-485 or RS-422 operation. This bit must be set once and does not need to be updated. This enable bit solves a problem when RTS is asserted during boot. The BIOS and some Operating Systems toggle RTS during boot, which could cause it to "jam" the RS-485 bus. There is also a status bit indicates if the TS-SER4 is populated with the RS-485 option.
2X Baud Clock
The Jumper labeled "2x Baud" can be installed to cause all baud rates to be twice as high as the standard UART programming would indicate. For example, when a divisor of "1" written into the UART baud rate register, this would normally provide a baud rate of 115.2 Kbaud. But when jumper "2x Baud" is installed, this same divisor will yield a baud rate of 230.4 Kbaud.
When the external crystal oscillator is installed, this jumper also doubles the effective baud rate. If a 3.6864 MHz oscillator is installed, standard baud rates are obtained. If a 16.0 MHz oscillator is installed and jumper "2x Baud" is installed, a baud rate of 1 Megabit/second is obtained. This is the maximum clock rate that the TL16C554 chip can handle.
By adjusting the frequency of the external crystal oscillator (and also the divisor in the UART), any non-standard baud rate can be obtained.
X1 and Non-standard Baud Rates
The TS-SER4 has a socket for a 5V 8-DIP, 4 Leads (half size, metal can) oscillator. By default, the TS-SER4 uses a clock (1.8432MHz) from the PC104 bus which has a maximum baud rate of 115200. When a signal is detected on the X1 socket, it will use the clock from there instead.
Typically you will use 'setserial' to configure the port. For example, lets assume you have a 7.3728MHZ and your target baud rate is 230,400. Your baud_base is 7,372,800/16=460,800. This will also be your maximum baud rate. To reach custom baud rates, you must divide this value by an integer. In our case, the divisor would be 2 to reach 230400.
setserial /dev/ttyS4 spd_cust baud_base 460800 divisor 6
Note: | Custom baud rates can be up to 5% off of your target baud rate, and communication will still be possible with most devices. |
Linux allows you to access this custom baud rate by essentially overwriting the ioctl used when setting your baud rate to 'B38400'. The Linux Documentation Project has more details on serial programming.
Jumpers JP1,JP2
These jumpers are not defined at this time. We may have some special functions for these jumpers in the future. For example, we had intended to support automatic RS-485 on the TS-SER4. The board was designed to allow for this capability, but the limited number of macrocells in the Xilinx PLD has forced us to forgo this functionality. The flexibility of the Xilinx PLD allows us to change this if required. For example, if we limited the number of IRQs that could be selected, we could gain enough macrocells to implement automatic RS-485 capability.
These jumpers can be read back in the status register, so they can be used as "User Jumpers" If there is a special feature you require, contact Technologic Systems.
Example Usage on TS-7800
Note: | Generally the usage of this driver is product specific and covered in the manual for the SBC the TS-SER4 is attached to. This section is legacy and only applies to the original TS-7800. |
To use the serial boards with the 7800, the ts7800_isa16550 module must be installed multiple times, once for each serial port. Below is a session log where the SER4 was successfully implemented. Here, the TS-SER4 had both RS-232 jumpers installed, along with COM1 and COM2 (designating com ports 3-6) and IRQ2 and IRQ4 (designating ARM IRQ 6). No other jumpers were on. Thus the io arguments for the commands below come from lines 3 to 6 on Table 4 of the manual. For the hello world test, COM A was looped back to COM C.
/ # pc104on / # modprobe ts7800_isa16550 irq=6 io=0x3e8 / # rmmod ts7800_isa16550 / # modprobe ts7800_isa16550 irq=6 io=0x2e8 / # rmmod ts7800_isa16550 / # modprobe ts7800_isa16550 irq=6 io=0x3a8 / # rmmod ts7800_isa16550 / # modprobe ts7800_isa16550 irq=6 io=0x2a8 / # cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A mmio:0xF1012000 irq:3 tx:11570 rx:577 RTS|CTS|DTR|DSR|CD 1: uart:16550A mmio:0xF1012100 irq:4 tx:0 rx:0 DSR|CD 2: uart:16550A mmio:0xEE0003E8 irq:70 tx:0 rx:0 3: uart:16550A mmio:0xEE0002E8 irq:70 tx:0 rx:0 4: uart:16550A mmio:0xEE0003A8 irq:70 tx:0 rx:0 DSR|CD|RI 5: uart:16550A mmio:0xEE0002A8 irq:70 tx:0 rx:0 DSR|CD|RI 6: uart:unknown port:00000000 irq:0 7: uart:unknown port:00000000 irq:0 / # / # mdev -s / # / # dmesg ..... serial8250: ttyS2 at MMIO 0xee0003e8 (irq = 70) is a 16550A serial8250: ttyS3 at MMIO 0xee0002e8 (irq = 70) is a 16550A serial8250: ttyS4 at MMIO 0xee0003a8 (irq = 70) is a 16550A serial8250: ttyS5 at MMIO 0xee0002a8 (irq = 70) is a 16550A / # / # cat < /dev/ttyS2 & / # echo "Hello World!" > /dev/ttyS4 Hello World! / #
Product Notes
Temperature Range
The TS-SER4 is available in both standard temperature (0-70 degrees Celsius) and in extended temperature range of –40 to +85 degrees Celsius.
FCC Advisory
This equipment generates, uses, and can radiate radio frequency energy and if not installed and used properly (that is, in strict accordance with the manufacturer's instructions), may cause interference to radio and television reception. It has been type tested and found to comply with the limits for a Class A digital device in accordance with the specifications in Part 15 of FCC Rules, which are designed to provide reasonable protection against such interference when operated in a commercial environment. Operation of this equipment in a residential area is likely to cause interference, in which case the owner will be required to correct the interference at his own expense.
If this equipment does cause interference, which can be determined by turning the unit on and off, the user is encouraged to try the following measures to correct the interference:
Reorient the receiving antenna. Relocate the unit with respect to the receiver. Plug the unit into a different outlet so that the unit and receiver are on different branch circuits. Ensure that mounting screws and connector attachment screws are tightly secured. Ensure that good quality, shielded, and grounded cables are used for all data communications. If necessary, the user should consult the dealer or an experienced radio/television technician for additional suggestions. The following booklets prepared by the Federal Communications Commission (FCC) may also prove helpful:
How to Identify and Resolve Radio-TV Interference Problems (Stock No. 004-000-000345-4) Interface Handbook (Stock No. 004-000-004505-7) These booklets may be purchased from the Superintendent of Documents, U.S. Government Printing Office, Washington, DC 20402.
Limited Warranty
See our Terms and Conditions for more details.
Usage with 3rd party devices
Please note that while efforts are made to follow the PC/104 specification this peripheral is not tested with third party SBCs or connected peripherals. This card is not guaranteed to operate as intended when third party PC104 peripherals or SBCs are connected.