Analog Devices ADIS16209 High Accuracy, Dual-Axis Digital Inclinometer: SPI LabVIEW FPGA IP

Publish Date: Jan 14, 2010 | 5 Ratings | 3.00 out of 5 | 0 Customer Reviews | Submit your review

Overview

This document outlines how to use the Analog Device ADIS16209 High Accuracy, Dual-Axis Digital Inclinometer Evaluation Board with LabVIEW FPGA implementation of the SPI (Serial Peripheral Interface) digital communication protocol. This example reads and displays graphically the angular rate.

Table of Contents

  1. Device Overview
  2. Using NI RIO and LabVIEW FPGA with SPI devices
  3. Hardware Setup
  4. Driver Setup
  5. SubVIs
  6. Other Analog Digital Drivers
  7. Conclusion

1. Device Overview

The Analog Devices ADIS16209 Evaluation Board can output through an SPI serial interface the inclination along two axis.

Back to Top

2. Using NI RIO and LabVIEW FPGA with SPI devices

This example uses a LabVIEW FPGA implementation of the SPI bus to communicate with the ADIS16209 Evaluation Board. There are two LabVIEW elements to this example. The first is a LabVIEW FPGA interface that performs the SPI communication. The second is a LabVIEW host API that interacts with the FPGA from a host PC or real-time controller. We have chosen a CompactRIO system with an NI 9401 module to provide connection to the device.

For more information on the LabVIEW FPGA SPI implementation and the host API, refer to Implementing SPI Communication Protocol in LabVIEW FPGA and Understanding the SPI Bus with NI LabVIEW

Back to Top

3. Hardware Setup

An NI 9401 is used to connect the ADIS16250 Evaluation Board to the CompactRIO. The following wire diagram was implemented :

PIN label NI 9401 Digital I/O Module ADIS16209/PCB
SCLK 20 2
MOSI 22 6
MISO 14 4
CS1 23 3
CS2 25 5
Ground 12 7

Power: Connect pin 10 of ADIS16209 to +5V

Ground: Connect pin 12 of NI 9401 module to power source Ground

Back to Top

4. Driver Setup

There are three main steps to communication with the ADIS16209

  1. Interaction between host API and LabVIEW FPGA SPI engine
  2. Configure the SPI Bus to communicate with the device
  3. Read or write data to and from the device

Using the host API created for interacting with the LabVIEW FPGA SPI engine, it is relatively simple to communicate with the ADIS16209. With the provided example, most of the configuration is provided and moving the program to a different FPGA target is fairly straight forward. A reference to the top-level FPGA VI is open and waits for notification from the FPGA that it is ready for data transmission.

The SPI bus must first be configured to read or write data from the device. This is accomplished by setting the chip select to 0, the chip mode to 3 (CPOL=1, CPHA=1) and setting the appropriate clock rate.

By writing data to the appropriate control register, one can change the sensitivity and/or offset of the sensor. This is achieved by sending the write bit, the address of the control register you wish to write into and the data you want to write to the device.

To read data, two 16 bits write must be performed. The first write will specify wish data source to read from, while the second block of bits will simply return the data. Data polling can be achieved by two method, the first method consists of continuously writing 16 bits to the device, this increase throughput, however it is important to note that on any given iteration, the binary data received will be from the prior iteration call. The second method consist of two consecutive block of 16 bits, while this lowers throughput it insures that every read call will return data on the current iteration.  

 

Note: In this example we've created a Host VI which illustrates in 3D the motion of the inclinometer as pitch and roll.

Back to Top

5. SubVIs

  • ADIS16209_configuration.vi: Configures device
  • ADIS16209_convert_bin_to_real.vi: converts binary data to real numeric values without performing two's complement
  • ADIS16209_convert_temp_to_real_complement.vi: binary data to real numeric values by performing two's complement
  • ADIS16209_read_pipeline.vi: writes 1 block of 16 bits to the device 
  • ADIS16209_read_write_single_point.vi: write 2 sequential blocks of 16 bits to the device 

Back to Top

6. Other Analog Digital Drivers

Find more sensor drivers for Analog Device sensors here.

Back to Top

7. Conclusion

Using LabVIEW FPGA implementation of the SPI communication protocol, we can communicate with many distributed embedded sensors. The ADIS16209 is one of many sensors that use this common bus to return digitized data to as master for processing.

 

Back to Top

Customer Reviews

Bookmark & Share

Downloads

Ratings

Rate this document

Answered Your Question?
Yes No

Submit