From Technologic Systems Manuals
Released Mar. 2011
Product Page
Mechanical Drawing

1 Overview

The TS-8160 is a TS-SOCKET baseboard that provides an upgrade path for Technologic Systems TS-7260 and TS-7800 products. This board accepts any TS-4xxx macrocontroller. It interfaces to the macrocontroller via two TS-SOCKET standard 100-pin connectors and brings out the various ports to industry standard connectors. The TS-8160 is compatible with the TS-ENC720 enclosure.

1.1 TS-4500

See the TS-4500 page for functionality regarding the CPU, FPGA, and OS.

TS-4500 Cavium CNS2132 250MHz ARM9

2 Getting Started

Before attempting to apply power to the baseboard, perform the following steps while taking proper static discharge precautions

  • Place the TS-8160 base board on a firm non-conductive surface.
  • Place the COM1 "Console Enable" jumper in the console position so the debug port is brought out to the DB9 and COM1 headers.
  • Carefully, insert the macrocontroller daughterboard by aligning and pressing evenly and firmly onto the pair of mating connectors
  • Connect the console serial terminal cable
  • Connect the Ethernet cable is applicable.
  • Apply power
  • Monitor the TS-SOCKET SBC using a terminal emulator connected to the serial console port to verify that the board is operating properly

See the TS-4500 page for more details on dealing with the functionality of the macrocontroller.

3 Features

3.1 USB Host

The USB is available on two ports as a USB 2.0 host.

USB Host
Header PIN TS-Socket Location Name
1 N/A USB_5V

3.2 DIO header

The DIO is manipulated through tsctl, or through manipulation of the registers directly.

Using tsctl will be the easiest way to communicate with the IO. This example will show the simplest way to toggle the IO, but see the tsctl page for more advanced usage.

# The easiest approach is to invoke tsctl directly.
# Do not do this if the tsctl server is already running.
# Toggle the DIO high and low directly as follows:
tsctl DIO SetAsync 8160_DIO_1 high
tsctl DIO SetAsync 8160_DIO_1 low

# If you want to share the tsctl functionality
# among multiple processes or access it via TCP/IP,
# you will need to run the tsctl server and access it as a client:
tsctl --server

# Once the server is started it will daemonize and you can access it over TCP/IP.
# Toggle the DIO high and low via the tsctl client:
tsctl @ DIO SetAsync 8160_DIO_1 high
tsctl @ DIO SetAsync 8160_DIO_1 low

# Note that the '@' is optional if the host name is an IP address of form X.X.X.X
# For consistency we recommend always including the '@'

# Note in the above example, the values 8160_DIO_1, high and low are automatically 
# looked up to produce integer values. You can also do this manually, as show below:

# Lookup the logical DIO mapping of the dio header pin 1
eval `tsctl System MapLookup 8160_DIO_1`
# If you run this outside of the eval it will return:
# System_MapLookup_0=XXX
# where XXX is the actual logical DIO number. 
# If you look up "high" it will return 1, while "low" will return 0
# note that lookups are case-insensitive

# Toggle the DIO high and low:
tsctl @ DIO SetAsync $System_MapLookup_0 high
tsctl @ DIO SetAsync $System_MapLookup_0 low
Pinout Header
Pin Name Notes
1 8160_DIO_1 Pulled high by R124
2 Ground
3 8160_DIO_3 Pulled high by R123
5 8160_DIO_5 Pulled high by R122
7 8160_DIO_7 pulled high by R121
9 8160_DIO_9 Pulled high by R120
11 8160_DIO_11 Pulled high by R119
13 8160_DIO_13 Pulled high by R118
15 8160_DIO_15 Pulled high by R117
16 CPU_3.3V Do not draw more than 12mA
16 15
14 13
12 11
10 9
8 7
6 5
4 3
2 1
WARNING: DIO are not 5V tolerant. Only SPI_MOSI on this header is 5V tolerant.

3.3 LCD Header

The LCD header is designed around compatibility with our low cost LCD-LED: Alphanumeric 2x24 LCD. These IO are manipulated through tsctl, or through manipulation of the registers directly. Connector CN8 is a 14 pin (2x7) 0.1" spacing header.

Pinout Header
Pin Name Notes
1 LCD_5V Provides up to 1400mA
2 Ground
7 LCD_D1
8 LCD_D0
9 LCD_D3
10 LCD_D2
11 LCD_D5
12 LCD_D4
13 LCD_D7
14 LCD_D6
14 13
12 11
10 9
8 7
6 5
4 3
2 1
WARNING: LCD_D0 thru LCD_D7 are 5V tolerant. LCD_WR#, LCD_RS, and LCD_EN are not.

Power to the LCD header can be toggled by manipulating LCD Enable in the #Register Map. The LCD_5V pin can provide up to 1400mA, but this is a shared 5V rail and will depend on your power supply and what other devices are using that rail.

3.4 ADC Header

The Analog to Digital Converter consists of a 4-channel 16 bit sigma-delta converter and two, 2-channel analog switches. These are configured to allow input and conversion on two differential channels and 4 single ended channels. The 6-channel Analog to Digital signals are contained on connector HD5 which is a 16 pin (2x8) 0.1" spacing header. The connector layout and the signals carried by each pin are defined below. The input range for the differential input channels is 0- 2 VDC, and the input range on the single-ended channel is nominally 0-10 VDC.

Pinout Header
Pin Type Signal
1 Single ended Channel 6
3 Single ended Channel 5
5 Single ended Channel 4
7 Single ended Channel 3
9 N/A Not connected
10 N/A GND
11 Differential Channel 2-
12 Differential Channel 2+
13 N/A GND
14 Differential Channel 1-
15 Differential Channel 1+
16 N/A GND
16 15
14 13
12 11
10 9
8 7
6 5
4 3
2 1

3.5 CAN

CAN_H is on DB9 pin 4 and COM1 header pin 4

CAN_L is on DB9 pin 9 and COM1 header pin 9

You can find usage of the CAN port here.

3.6 Sleep mode

The TS-8160 features a AVR that has the ability to cut power to the macrocontroller for a specified amount of time. You can also use the jumper labelled 'WAKE', or the press the button on SW1 to restore power to the macrocontroller.

The ts8160ctl is available here.

Sleeping the board is essentially a shutdown. It is recommended that you have all of your filesystems in a read only state before running this command to avoid disk corruption. This example will simply shut down the macrocontroller for 20 seconds.

ts8160ctl --sleep 20

Power consumption during sleep mode is approximately 100uA.

Note: Sleep times will be rounded up to the granularity of sleep, which is 8 seconds for sleeps under ~3 days and 2048 seconds for longer sleeps. Actual sleep time will be +/- 10% the requested time due to low-power oscillator variation.

3.7 COM ports

Port Type RX (or 485 +) TX (or 485 -) Notes
ttyS0 RS232 DB9 pin 2, COM1 header pin 2 DB9 pin 3, COM1 header pin 3 Only with console enable jumper on
ttyS1 (XUART 0) RS485 DB9 pin 1, COM1 header pin 1 DB9 pin 6, COM1 header pin 6 Optional RS422 RX COM2 header pins 4(+) and 9(-)
ttyS2 RS232 DB9 pin 2, COM1 header pin 2 DB9 pin 3, COM1 header pin 3 Only with console enable jumper off
ttyS3 RS232 DB9 pin 8, COM1 header pin 8 DB9 pin 7, COM1 header pin 7
ttyS4 RS232 COM2 header pin 2 COM2 header pin 3
ttyS5 RS485 COM2 header pin 1 COM2 header pin 6
ttyS6 RS232 COM3 header pin 2 COM3 header pin 3 CTS available on pin 8

The COM headers follow a legacy pin configuration different from other pin header numberings. The COM headers are numbered thus:

1 6
2 7
3 8
4 9
5 10

Pin 1 corresponds to the pin next to the "dot" on the silk screen.

3.8 PC104 Header

See the TS-4500#PC104 section for more details on working with the PC104 bus.

The PC-104 connector consists of two rows of pins labeled A and B, the numbering of of which is shown below. The signals for the PC-104 are generated by the MAX240 PLD located on the baseboard. It converts the MUXBUS signals from the dual 100-pin Macrocontroller interface bus. Pin A1 is nearest to the macrocontroller mounting hole.

Any of the IO on this board labelled DIO_ can be controlled through tsctl as PC104_A/B<pin>, or through manipulation of the registers directly.

# Start tsctl server if it is not already running.
# This only needs to be done once
tsctl --server &

# Lookup the logical DIO mapping of the PC104 header pin A16
eval `tsctl System MapLookup PC104_A16`
# If you run this outside of the eval it will return:
# PC104_A16=138

# Toggle the DIO high and low:
tsctl DIO Set $PC104_A16 high
tsctl DIO Set $PC104_A16 low

You can also drive these DIO to manually manipulate the PC104 address to make peripherals usable that require a higher range of address than provided by the default address space of the MUXBUS.

Pin Name Pin Name
A1 BUS_BHE# B1 Ground
A3 AD_06 B3 5V
A4 AD_05 B4 AD_08
A5 AD_04 B5 CPU_3.3V
A6 AD_03 B6 Not connected
A7 AD_02 B7 Not connected
A8 AD_01 B8 Not connected
A10 ISA_WAIT# B10 Ground
A11 Ground B11 DIO_B11
A12 Not connected B12 DIO_B12
A13 Not connected B13 ISA_LOW#
A14 Not connected B14 ISA_IOR#
A15 Not connected B15 Not connected
A16 DIO_A16 B16 Not connected
A17 DIO_A17 B17 AD_09
A18 DIO_A18 B18 AD_10
A19 DIO_A19 B19 Not connected
A20 DIO_A20 B20 AD_12
A21 DIO_A21 B21 ISA_IRQ7
A24 ISA_ADD7 B24 Ground
A25 ISA_ADD6 B25 AD_11
A26 ISA_ADD5 B26 AD_13
A27 ISA_ADD4 B27 AD_14
A28 ISA_ADD3 B28 AD_15
A29 ISA_ADD2 B29 5V
A30 ISA_ADD1 B30 ISA 14.3 MHZ
A31 ISA_ADD0 B31 Ground
A32 Ground B32 Ground
TS-8100-PC104 Pinout.png
WARNING: Most of the pins on the PC104 bus are only 3.3V tolerant. Refer to the schematic for more details.

4 Register Map

All of these registers are intended for 16 bit access. On the TS-4500 this is accessed through a memory window that is not included in the default bitstream. See this page for more details. The SBUS examples include functions for accessing this general purpose memory window.

First set the MUXBUS configuration register so you can communicate with offboard devices.

ts7500ctl --address 0x20000 --poke16 0x181

After that you can use a simple C application to talk to these addresses:

#include <stdio.h>
#include "sbus.h"

int main()
     short boardid;
     boardid = winpeek16(0x0);
     printf("Board ID: %04X\n", boardid);

     return 0;

Offset Bits Access Description
0x0 15:0 Read Only Board ID (0x8100)
0x2 3:0 Read Only PLD revision
7:4 Read/Write Value to control PWM for LCD contrast
8 Read/Write TS-8100 USB Reset
9 Read/Write Controls ISA_RESET on the PC104 bus
10 Read/Write Enables a 14.3MHZ clock on the PC104 bus (B30) and the PLD (default 1)
11 Read/Write Enables the RS232 transceiver (default 1)
12 Read/Write Toggles 5V to the LCD header pin 1
13 Read/Write Enable CAN1 standby
14 Read/Write Enable CAN2 standby
15 Read/Write Enables the PWM output for the contrast value
0x4 7:0 Read/Write DIO odd pins 15:1 output data
13:8 Read/Write PC104 header A21:A16 output data
15:14 Read/Write PC104 header B12:B11 output data
0x6 7:0 Read/Write LCD pins 14:7 output data
8 Read/Write LCD Header pin 6 output data
9 Read/Write LCD Header pin 3 output data
10 Read/Write LCD Header pin 5 output data
11 Read/Write AVR MOSI
12 Read/Write AVR SCLK
13 Read/Write AVR RESET
14:15 N/A Reserved
0x8 7:0 Read/Write DIO Header odd pins 15:1 data direction
13:8 Read/Write PC104 A21:A16 data direction
15:14 Read/Write PC104 B12:B11 data direction
0xa 7:0 Read/Write LCD pins 14:7 data direction
8 Read/Write LCD Header pin 6 data direction
9 Read/Write LCD Header pin 3 data direction
10 Read/Write LCD Header pin 5 data direction
15:11 N/A Reserved
0xc 7:0 Read Only DIO Header dd pins 15:1 input data
13:8 Read Only PC104 A21:A16 input data
15:14 Read Only PC104 B12:B11 input data
0xe 7:0 Read Only LCD header pins 14-7 input data
8 Read Only LCD Write/Read (pin 6) input data
9 Read Only LCD Register Select (pin 3) input data
10 Read Only LCD Enable (pin 5) input data
11 Read/Write AVR MISO
15:12 N/A Reserved

5 Errata

5.1 TS-8160 AVR will not wake from sleep with button

Synopsis Rev 2 of the AVR software does not correctly use the WAKE button/pins
Severity Minor
Class Software bug
Affected TS-8160 AVR Rev 2
Status Workarounds available, fixed in Rev 3, shipping on June 12th 2012


Revision 2 of the AVR software did not correctly enable the interrupt for the IO port that the WAKE button/pins are on. Because of this sleep could not be interrupted without cutting power to the TS-8160. The only way to fix this is by updating to Rev 3. There are two ways to do this, see below for more information.

Workaround: The TS-8160 AVR software revision can be checked with:

ts8160ctl --info

If the Revision field shows "2" then this device cannot wake up from a sleep. The fix is as follows:

1) The Macrocontroller NEEDS to be a TS-4200. Currently none of our other Macrocontrollers can reprogram the AVR. If this is the case, an RMA can be submitted and we will reflash the AVR here. Submit an RMA request here.

2) Download this tarball, unzip it in the fastboot shell on the TS-4200 while booted with the TS-8160. Follow the instructions contained in the README file. Once this is completed, reboot, and the new AVR software will be running.

Due to space limitations, it is best to download and unpack in the /tmp folder of the fastboot shell

6 Product Notes

6.1 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.

6.2 Limited Warranty

Technologic Systems warrants this product to be free of defects in material and workmanship for a period of one year from date of purchase. During this warranty period Technologic Systems will repair or replace the defective unit in accordance with the following process:

A copy of the original invoice must be included when returning the defective unit to Technologic Systems, Inc. This limited warranty does not cover damages resulting from lightning or other power surges, misuse, abuse, abnormal conditions of operation, or attempts to alter or modify the function of the product.

This warranty is limited to the repair or replacement of the defective unit. In no event shall Technologic Systems be liable or responsible for any loss or damages, including but not limited to any lost profits, incidental or consequential damages, loss of business, or anticipatory profits arising from the use or inability to use this product.

Repairs made after the expiration of the warranty period are subject to a repair charge and the cost of return shipping. Please, contact Technologic Systems to arrange for any repair service and to obtain repair charge information.