RB8905 12-bit ADC
[Reference Manual]


Detailed Description

Purpose

Measure a voltage trace.

Description

Module RB8905 is a 1 Mega-sample per second 12-bit analog to digital converter with a 32 kByte on-board data buffer.

The module has a single analog input and a clock input to do a series of data acquisitions. The number of samples to store on-board is programmable.

Module RB8905 contains the following parts:

The ADC can be programmed for bipolar or unipolar use. The input voltage span of the ADC is configured at production time for 10 V or 20 V.

The analog to digital converter IC is an ADC601 manufactured by Burr-Brown. This 12-bit ADC normally converts samples at a rate of 1 Ms/s (900 ns), but it also can convert at a rate of 2 Ms/s (400 ns). In the latter case, only eight bits are determined and this mode of operation is called short-cycle mode (fast mode, 8-bit result).

The number of samples to store on-board can be specified in one of two ways (normal conversion mode assumed):

  1. 1--128 samples: specified by JMP3 on the module's board
  2. 256--16384 samples: specified programmatically

The number of samples to store on-board can be specified with function rb8905_adc12_setBufferCapacity(). Specifiying zero for the number of samples, or capacity, selects the JMP3 setting. For 256 and more samples, the number of samples is a power of two: 256, 512, 1024 etc.

The module's front-panels look as follows.

  +-----------+                +-----------+
  |   ADC12HS |                |   ADC12HS |
  |           |                |           |
  |     clock |                |     clock |
  |      (o)  |                |      (o)  |
  |           |                |           |
  |           |                |           |
  |           |                |     bit07 |
  |           |                |      (o)  |
  |           |                |           |
  |           |                |           |
  |     input |                |     input |
  |      (o)  |                |      (o)  |
  |           |                |           |
  |    RULBUS |                |    RULBUS |
  +-----------+                +-----------+

Note that bit07 on the right front-panel provides the signal that indicates the end of a series of data acquisitions, or that indicates that all samples have been read, when reading.

Configuration

At production time, the ADC is configured for an input voltage range of 10 V or 20 V.

The following table shows the volt-per-bit values for the various input voltage spans.

    Voltage span  | volt-per-bit   bipolar
   ---------------+--------------------------
       0 .. 10 V  |  2.442002 mV   no
      -5 ..  5 V  |  2.442002 mV   yes
     -10 .. 10 V  |  4.884004 mV   yes

Note that when the ADC's fast conversion mode (8-bit result) is used, the input voltage span is reduced with a factor of 16 (2^4). See rb8905_adc12_getMinInputVoltage() and rb8905_adc12_getMaxInputVoltage().

Default configuration

rb8905_adc12 "name"
{
   address = 0xBC
   volt_per_bit = 2.442002 m
}

When the Rulbus configuration file is read, an ADC is configured as follows:

Usage

There are functions to set the conversion mode, to set the input voltage polarity, to set the number of samples to acquire and to read the input as ADC- value or as voltage at the ADC's input.

#define N 512

int32 handle;
int32 nread;
float32 trace[ N ];

rb8905_adc12_open( &handle, "adc" );

rb8905_adc12_setBufferCapacity( handle, N );
rb8905_adc12_arm();

while ( !rb8905_adc12_isReady( handle ) )
   wait();

rb8905_adc12_readVoltage( handle, trace, N, &nread );

rb8905_adc12_close( handle );


Open and close

EXPORT int32 RDL_API rb8905_adc12_open (int32 *pHandle, CCstr name)
 open an ADC.
EXPORT int32 RDL_API rb8905_adc12_close (int32 handle)
 close an ADC.

Data acquisition

EXPORT int32 RDL_API rb8905_adc12_arm (int32 handle)
 arm ADC for data-acquisition; a sample is taken each clock-pulse.
EXPORT int32 RDL_API rb8905_adc12_isReady (int32 handle, int32 *pFlag)
 true if all samples have been measured or if all samples have been read-out.
EXPORT int32 RDL_API rb8905_adc12_readVoltage (int32 handle, float32 *pVoltage, int32 nelem, int32 *nread)
 read nelem elements as voltage from the on-board data buffer, pass number of elements actually read in nread; note that the voltage datatype is float32.
EXPORT int32 RDL_API rb8905_adc12_readValue (int32 handle, int16 *pValue, int32 nelem, int32 *nread)
 read nelem elements as value from the on-board data buffer, pass number of elements actually read in nread; the 8-bit/12-bit unipolar samples are presented as (unsigned) magnitude codes, bipolar values are presented as offset binary codes; note that the value datatype is int16.

On-board buffer

EXPORT int32 RDL_API rb8905_adc12_getBufferCapacity (int32 handle, int32 *pCapacity)
 get the number of samples to acquire in the on-board buffer.
EXPORT int32 RDL_API rb8905_adc12_getJmp3BufferCapacity (int32 handle, int32 *pCapacity)
 get the JMP3 setting for the number of samples to store on-board.
EXPORT int32 RDL_API rb8905_adc12_setBufferCapacity (int32 handle, int32 capacity)
 set the number of samples to acquire in the buffer; use JMP3 setting when zero is specified.

Configuration

EXPORT int32 RDL_API rb8905_adc12_isFastMode (int32 handle, int32 *pFlag)
 true if fast (short-cycle) mode is selected (8-bit data).
EXPORT int32 RDL_API rb8905_adc12_setFastMode (int32 handle, int32 isfast)
 set converter to fast or short-cycle mode (8-bit data, isfast is true), or set converter to normal mode (12-bit data, isfast is false).
EXPORT int32 RDL_API rb8905_adc12_isUnipolarMode (int32 handle, int32 *pFlag)
 true if unipolar mode is selected.
EXPORT int32 RDL_API rb8905_adc12_setUnipolarMode (int32 handle, int32 isunipolar)
 set converter to unipolar mode (isunipolar is true), or set converter to bipolar mode (isunipolar is false).
EXPORT int32 RDL_API rb8905_adc12_getVoltperbit (int32 handle, float32 *pVpb)
 get the ADC input sensitivity configuration.
EXPORT int32 RDL_API rb8905_adc12_getVoltageSpan (int32 handle, float32 *pSpan)
 get the ADC input voltage span.
EXPORT int32 RDL_API rb8905_adc12_getOffsetVoltage (int32 handle, float32 *pVoltage)
 get the ADC offset voltage.
EXPORT int32 RDL_API rb8905_adc12_getMinInputVoltage (int32 handle, float32 *pVoltage)
 get the lowest acceptable ADC input voltage; takes mode settings into account.
EXPORT int32 RDL_API rb8905_adc12_getMaxInputVoltage (int32 handle, float32 *pVoltage)
 get the highest acceptable ADC input voltage; takes mode settings into account.


Generated on Wed Apr 6 08:59:22 2005 for Rulbus Device Library for Microsoft Windows by doxygen 1.4.0