ViperBoard is built around a Cypress USB controller chip and FPGA. It accepts commands across the USB bus and then translates these into I2C, SPI and GPIO bus protocols as required.


ViperBoard





The SPI interface contains both SPI master and SPI slave capability with full duplex (simultaneous read/write) at line rates of 10kBit/s, 100kBit/s, 200kBit/s, 400kBit/s, 1MBit/s, 3MBit/s, 6MBit/s and 12MBit/s.


The interface has configurable clock polarity (CPOL) and clock phase (CPHA). The SPI interface can interface to 17 master or slave devices by using some of the GPIO pins as chip selects. Chip selects may be active low or active high.


ViperBoard





The I2C interface contains both master I2C and slave I2C capability with line rates of 10kBit/s, 100kBit/s, 200kBit/s, 400kBit/s, 1MBit/s, 3MBit/s and 6MBit/s.

The interface supports wait-stating through clock stretching by the slave.

Back to back I2C commands are supported using repeated start.

A jumper setting allows the interface to have no pull-up resistors, on-board 1.5kOhm pull-up resistors to 5V or on-board 1.5kOhm pull-up resistors to 3.3V.


ViperBoard





The GPIO interface is split across two ports.
Port A provides 16 advanced GPIO bits. Each bit can be individually configured as digital IO, PWM, continuous pulsed, single pulsed or interrupt input. Pulse widths, duty cycle and pulse sense are also programmable.

The lower 2 bits of the Port A GPIOs have a low-pass filter which can be selected via a jumper and can be used with PWM to turn the GPIO into an analogue output.

Port B provides a further 16 digital IOs.


ViperBoard





The analogue interface provides 4 analogue inputs which can be sampled with 8 bit resolution.


ViperBoard





The API (Application Programming Interface) is designed for easy use in creating custom applications incorporating simple high level commands. Some examples of functions which can be called are shown over.


For the complete API specification refer to the following link:

API Specification

Nano_GetEvents() Nano_SPIMasterSetFrequency()
  Nano_SPIMasterReadWrite()
Nano_GPIOASetContinuousMode() Nano_SPIMasterWrite()
Nano_GPIOASetPulseMode() Nano_SPIMasterRead()
Nano_GPIOASetPWMMode() Nano_SPISlaveBufferWrite()
Nano_GPIOASetDigitalOutputMode() Nano_SPISlaveBufferRead()
Nano_GPIOAGetDigitalInput() Nano_SPISlaveArm()
Nano_GPIOAGetInterruptInput()  
Nano_GPIOBWrite() Nano_I2CMasterSetFrequency()
Nano_GPIOBRead() Nano_I2CMasterScanConnectedDevices()
Nano_GPIOBSingleBitWrite() Nano_I2CMasterWrite()
Nano_GPIOBSingleBitRead() Nano_I2CMasterRead()
  Nano_I2CMasterWriteRead()
Nano_ADCRead() Nano_I2CSlaveArm()

In order to help the user develop custom applications, a collection of GUI and non-Windows style applications have been developed to show how to link to the API. The application examples are written in C/C++ and Visual C++ on Windows 2000/XP/Vista, Linux or Mac OS X. The example applications can be run before you purchase the product to get a feel for what ViperBoard can do for you. Click the following link to run the application examples.

Application Examples


The application examples are well documented. Click the following link to see the application example documentation.

Application Example Documentation

Applications

ViperBoard is an interface adapter designed for controlling any test system incorporating I2C, SPI or general purpose IOs (GPIO). Today, usage of these protocols is extremely widespread including electronics for telecommunications, portable electronics and medical electronics to give some examples.

ViperBoard is simply connected to the system under test using one or more of the available interfaces. ViperBoard accepts USB commands from the host PC and then implements the necessary bus protocol for I2C, SPI or GPIO as required. The connection back to the host PC is via a standard USB cable and provides all power requirements of the ViperBoard.

The host PC includes the necessary driver and DLL to implement the high level commands so that the user can rapidly develop his/her own custom applications.

Typical applications are written in C/C++ or Visual C++. Users have therefore the choice of developing GUI style control applications or non-Windows batch style control - depending on what is required.

ViperBoard comes with a rich set of example applications and documentation making custom applications an extremely simple process even for those with little programming knowledge.