Analog Devices ADIS16060 Digital Gyroscope: SPI LabVIEW FPGA IP

Publish Date: May 08, 2013 | 6 Ratings | 3.33 out of 5 |  PDF

Overview

This document outlines how to use the Analog Devices ADIS16060 Digital Gyroscope Evaluation Board with a LabVIEW FPGA implementation of the SPI (Serial Peripheral Interface) digital communication protocol. This example reads the yaw (angular change) of the sensor and plots it.

Table of Contents

  1. Device Overview
  2. Using NI RIO and LabVIEW FPGA with SPI Devices
  3. Implementing an SPI Example in LabVIEW FPGA
  4. Other ADI Sensor Drivers
  5. Conclusion

1. Device Overview

The Analog Devices ADIS16060 Digital Gyroscope Evaluation Board outputs digitized angular change data to a 4-wire SPI serial interface accessed through connector J1 on the board.  The SPI signals needed for this example are SCLK, MSEL1 (CS), MSEL2, DOUT (MISO), and DIN (MOSI).  For more information on the SPI bus, see Understanding the SPI Bus with NI LabVIEW.

Figure 1. J1 Connector for ADIS16060

Along with yaw, the ADIS16060 can also output the current temperature from an onboard sensor as well as two 12-bit ADC conversions.  To select which data to read, a command must be sent to the device with MSEL2 active low.  To read data, 20 bits must be sent to the device with MSEL1 active low.

Back to Top

2. Using NI RIO and LabVIEW FPGA with SPI Devices

This example uses a LabVIEW FPGA IP implementation of the SPI bus to communicate with the ADIS16060 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.

Back to Top

3. Implementing an SPI Example in LabVIEW FPGA

Using the host API created for interacting with the LabVIEW FPGA SPI engine, it is relatively simple to communicate with the ADIS16060.  With the provided example, most of the configuration is provided and moving the program to a different FPGA target is fairly straight forward.

To run the program, open Example_cRIO_Host.vi from cRIO_adis16060_Example.lvproj.  This is the host interface to the FPGA SPI core interacting with the gyroscope.  The program begins by opening a reference to the top-level FPGA VI and waiting for notification from the FPGA that it is ready for data.  Once the host VI receives notification, the SPI bus is configured for writing a command to the device.  This is done by setting the clock mode to 1 (CPOL = 0, CPHA = 1) and asserting CS 1 which is connected to MSEL2.  By default, the configuration command will be to read the angular rate of the gyroscope.  This command is then written to the FPGA VI, which sends the command to the sensor.

Figure 2. Example_cRIO_Host.vi Block Diagram

After the command has been written, the device is reconfigured to use clock mode 0 (CPOL = 0, CPHA = 0) and CS 0 is asserted (MSEL1).  Once this configuration has been completed, the host VI continuously sends the 20 bits needed for a sample to the device and reads back the data.  This raw data is converted into an angular rate of change and plotted.  When the program completes, the FPGA VI is reset and the reference is closed.

Figure 3. Example_cRIO_Host.vi Front Panel

To move the example to another target, create a new LabVIEW FPGA project and copy Example_cRIO_Host.vi, Example_cRIO_Top-Level FPGA.vi, and the two FIFOs from this example project.  Once the FPGA is recompiled and the correct connections are made, no further configuration is required.

Back to Top

4. Other ADI Sensor Drivers

Find more sensor drivers for Analog Devices sensors here.

 

Back to Top

5. Conclusion

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

 

Originally Authored By: Greg Crouch, National Instruments

Back to Top

Bookmark & Share

Downloads

Ratings

Rate this document

Answered Your Question?
Yes No

Submit