# USB-1616FS and USB-1616FS-Plus

These devices support the following features.

## Analog input

Functions

UL: cbAIn(), cbAInScan(), cbALoadQueue()*, cbFileAInScan(), cbATrig()

UL for .NET: AIn(), AInScan(), ALoadQueue()*, FileAInScan(), ATrig()

Python for Windows: a_in(), a_in_scan(), a_load_queue(), a_trig()

*The channel-gain queue is limited to 16 elements. Elements must contain unique contiguous channels, but the gains may be any valid value.

Options

BACKGROUND, BLOCKIO*, BURSTIO**, HIGHRESRATE***, EXTCLOCK, EXTTRIGGER, CONTINUOUS, NOCALIBRATEDATA, RETRIGMODE***, SCALEDATA***, SINGLEIO*

* The packet size is based on the Options setting. When set to BLOCKIO, the packet size is 62 samples. When set to SINGLEIO, the packet size equals the number of channels being sampled.

**BURSTIO can only be used with the number of samples (Count) set equal to the size of the FIFO or less. The FIFO holds 32,768 samples. Also, BURSTIO cannot be used with the CONTINUOUS option.

*** USB-1616FS-Plus only

HighChan

0 to 15 in single-ended mode

Count

In BURSTIO mode, Count needs to be an integer multiple of the number of channels in the scan.

- For one-, two- , four-, eight-, and 16-channel scans, the maximum Count is 32,768 samples.
- For three- and six-channel scans, the maximum Count is 32,766 samples.
- For five-channel scans, the maximum Count is 32,765 samples.
- For seven-channel scans, the maximum Count is 32,767 samples.
- For 9-, 10-, 12-, 13-, 14-, and 15-channel scans, the maximum Count is 32,760 samples.
- For 11-channel scans, the maximum Count is 32,758 samples.

Count must be an integer multiple of the number of channels in the scan.

Rate

USB-1616FS:

200 kHz maximum for BURSTIO mode (50 kHz/s for any one channel).

For all other modes, the maximum rate per channel depends on the number of channels being scanned.

No. of channels in the scan | Maximum rate
1 or 2 | 50 kHz
3 | 36 kHz
4 | 30 kHz
5 | 25 kHz
6 | 22 kHz
7 | 19 kHz
8 | 17 kHz
9 | 15 kHz
10 | 14 kHz
11 | 12.5 kHz
12 | 12 kHz
13 | 11.25 kHz
14 | 10.5 kHz
15 | 10 kHz
16 | 9.5 kHz

When using cbAInScan() or AInScan(), the minimum sample rate is 1 Hz. In BURSTIO mode, the minimum sample rate is 20 Hz/channel.

USB-1616FS-Plus:

1.6 MS/s maximum for BURSTIO mode (100 kS/s for any one channel).

For all other modes the rate is 400 kS/s nominal (100 kS/s for any one channel). Sampling at rates >400 kS/s may result in a data overrun on some systems. If errors occur, and the application requires fewer than 32,768 samples, consider a finite scan with BURSTIO mode enabled.

When using cbAInScan() or AInScan(), the minimum sample rate is 0.018 S/s (using HIGHRESRATE with Rate set to 18.)

Range

Single-ended:

BIP10VOLTS (±10 volts) | BIP2VOLTS (±2 volts)
BIP5VOLTS (±5 volts) | BIP1VOLTS (±1 volts)

USB-1616FS-Plus:

BIP10VOLTS (±10 volts) | BIP1PT25VOLTS (±1.25 volts)
BIP5VOLTS (±5 volts) | BIP1VOLTS (±1 volts)
BIP2PT5VOLTS (±2.5 volts) | BIPPT625VOLTS (±0.625 volts)
BIP2VOLTS (±2 volts) | BIPPT312VOLTS (±0.3125 volts)

Pacing

Hardware pacing, internal clock supported.

External clock supported via the SYNC terminal.

## Triggering

Functions

UL: cbSetTrigger()

UL for .NET: SetTrigger()

Python for Windows: set_trigger()

TrigType

TRIGPOSEDGE

TRIGNEGEDGE

External digital (TTL) hardware triggering supported. The hardware trigger source is TRIG_IN input terminal.

The USB-1616FS-Plus also supports the RETRIGMODE option in CONTINUOUS mode.

## Digital I/O

Configuration

UL: cbDConfigBit(), cbDConfigPort()

UL for .NET: DConfigBit(), DConfigPort()

Python for Windows: d_config_bit(), d_config_port()

PortNum

AUXPORT

PortType

AUXPORT

Port I/O

UL: cbDOut(), cbDIn()

UL for .NET: DOut(), DIn()

Python for Windows: d_in(), d_out()

PortNum

AUXPORT

DataValue

0 to 255 for AUXPORT

Bit I/O

UL: cbDBitIn(), cbDBitOut()

UL for .NET: DBitIn(), DBitOut()

Python for Windows: d_bit_in(), d_bit_out()

PortType

AUXPORT

BitNum

0 to 7 on AUXPORT

## Counter I/O

Functions

UL: cbCClear(), cbCIn()*, cbCIn32(), cbCLoad()**, cbCLoad32()**

UL for .NET: CClear(), CIn()*, CIn32(), CLoad()**, CLoad32()**

Python for Windows: c_clear(), c_in()*, c_in_32(), c_load()**, c_load_32()**

*Although cbCIn()/CIn()/c_in() are valid for use with this counter, cbCIn32()/CIn32()/c_in_32() may be more appropriate, since the values returned may be greater than the data types used by cbCIn() and CIn() can handle.

**cbCLoad()/cbCLoad32(), CLoad()/CLoad32(), and c_load()/c_load32() only accept Count=0. These functions are used to reset the counter.

CounterNum

1

Count

232-1 when reading the counter.

0 when loading the counter.

cbCLoad() and cbCLoad32() / CLoad() and CLoad32() are only used to reset the counter for this board to 0. No other values are valid.

The Basic signed integers guidelines apply when using cbCIn() or CIn() for values greater than 32,767 and when using cbCIn32() or CIn32() for values greater than 2,147,483,647.

## Event Notification

Functions

UL: cbEnableEvent(), cbDisableEvent()

UL for .NET: EnableEvent(), DisableEvent()

Python for Windows: enable_event(), disable_event()

Event Types

ON_SCAN_ERROR (analog input), ON_DATA_AVAILABLE, ON_END_OF_INPUT_SCAN

## Miscellaneous

Functions

UL: cbFlashLED()

UL for .NET: FlashLED()

Python for Windows: flash_led()

Causes the USB LED on a USB device to blink. When you have several devices connected, use this function to identify a particular device.

## Configuration

This hardware supports device detection with the API. Refer to the InstaCal, API Detection, or Both? section for information about whether to use InstaCal or the API to detect and configure hardware.

#### InstaCal

Factory serial number

Listed as Factory Serial No. (read only)

Identifier

Identifier text box

Enable SYNC output

Enable SYNC output checkbox

Hardware version

Listed as Firmware Version (read only)

#### Programmable API Functions

Factory serial number

UL: cbGetConfigString()

ConfigItem = BIDEVSERIALNUM

UL for .NET: GetDeviceSerialNum()

Python for Windows: get_config_string()

config_item = DEVSERIALNUM

Identifier

UL: cbGetConfig()

ConfigItem = BIUSERDEVIDNUM

UL for .Net: GetUserDeviceIdNum()

Python for Windows: get_config()

config_item = USERDEVIDNUM

Enable SYNC output

UL: cbGetConfig(), cbSetConfig()

ConfigItem = BIINPUTPACEROUT

ConfigVal = ENABLED, DISABLED

UL for .NET: GetInputPacerOut(), SetInputPacerOut()

Python for Windows: get_config(), set_config()

config_item = INPUTPACEROUT

config_val = State enum. When enabled, the input clock is set for output.

Hardware version

UL: cbGetConfigString()

ConfigItem = BIDEVVERSION

DevNum = VER_FW_MAIN

UL for .NET: GetDeviceVersion()

Type = VersionType.FW_MAIN

Python for Windows: get_config_string()

config_item = DEVVERSION

dev_num = MAIN

## Hardware considerations

##### Channel-gain queue

The channel-gain queue is limited to 16 elements. The channel gains may be any valid value. The channels must be unique and listed in contiguous order.

##### Acquisition Rate

Since the maximum data acquisition rate depends on the system connected to the USB-1616FS, it is possible to "lose" data points when scanning at higher rates. The Universal Library cannot always detect this data loss.

Most systems can sustain rates of 80 kS/s aggregate for the USB-1616FS, and 400 kS/s for the USB-1616FS-Plus. If you need to sample at higher rates than this, use the BURSTIO option explained below.

##### EXTCLOCK

You can set the SYNC terminal as a pacer input or a pacer output from InstaCal. By default, this terminal is set for pacer input. If set for output, using the cbAInScan()/AInScan() option EXTCLOCK results in a BADOPTION error.

##### BURSTIO

Allows higher sampling rates up to the size of the FIFO. The FIFO holds 32,768 samples. Data is collected into the USB device's local FIFO. Data transfers to the PC don't occur until the scan completes. For BACKGROUND scans, the Count and Index returned by cbGetStatus()/ GetStatus()/get_status() remain 0, and STATUS=RUNNING until the scan finishes. The Count and Index are not updated until the scan is completed. When the scan is complete and the data is retrieved, cbGetStatus() and GetStatus() are updated to the current Count and Index, and STATUS=IDLE.

USB-1616FS: BURSTIO is required for aggregate Rate settings above 100 kHz for the USB-1616FS, and 400 kS/s for the USB-1616FS-Plus, but Count is limited to sample counts up to the size of the FIFO (32,768 samples). Count settings must be an integer multiple of the number of channels in the scan (see Count above).

##### Continuous scans

When running an analog input scan with the CONTINUOUS option, consider the packet size and the number of channels being scanned. To keep the data aligned properly in the array, you must configure the total number of samples to be an integer multiple of the packet size (62) and the number of channels in the scan.

##### RETRIGMODE

USB-1616FS-Plus supports the RETRIGMODE option, but only in CONTINUOUS mode. Using this option with AInScan() immediately re-arms the trigger after a scan of TotalSamples completes, and the scan resumes on the next trigger.