Post Go back to editing

ADIS16407 SPI Communication

I am not getting any data from the ADIS16407. What should I do?

  • There are a number of things that can cause this. The ADIS16407 units go through extensive testing in the manufacturing process, so we are likely starting with "good" unit. Here are the most common causes of zero or inconsistent communications:

    1. Incorrect hook-up. For reference, check Figure 9 (page 10) of the ADIS16407 datasheet.  For pin assignments and orientation, refer to  Figure 5 and 6 (page 8).
    2. Incorrect supply levelADIS16407 datasheet, Table 1 (page 4), specifies a supply range of +4.75V to +5.25V. When verifying this with a multimeter, the mating connector leads typically provides access for probing. For more information on the probe points, refer to Figure 5 and 6 (page 8) on the ADIS16407 datasheet.
    3. Broken or damaged flex cable. Inspect the cable to make sure that there are no cracks, breaks or kinks that could cause a discontinuity in the connection.  For more information on this, check out this discussion: https://ez.analog.com/message/44126.
    4. SPI configuration/operational issues. The can include the following issues:
      • Incorrect SPI Mode, which covers the SPI clock's phase (CPHA) and polarity (CPOL).  These devices use SPI Mode 3.  For most processors, SPI Mode 3 sets CPOL = 1 and CPHA = 1. See the ADIS16407 datasheet, Table 7 (Page 10).
      • Timing Violations. Check out the following reference for timing specifications: ADIS16407 datasheet, Table 2, Figures 2, 3 and 4 (page 6). Checking this may require a simple test pattern (provided below).
      • Incorrect Bit Order. All SPI data (input and output) start with the most significant bit and work their way down each sequential bit, ending with the least significant bit. See the ADIS16407 datasheet, Table 7 (Page 10).
      • Incorrect Bit Coding. See the ADIS16407 datasheet, Figure 13 (page 10), for the bit sequencing and coding. 
      • Signal Integrity. The SCLK line is often, the most sensitive to noise spikes, ringing and other signal integrity issues. Use a simple test pattern (see below) to check for these types of issues.

    SPI Test Pattern/Example

    All ADIS162xx/3xx/4xx devices offer a product identification register (PROD_ID), which contains the 16-bit binary representation of the product's part number.  In the case of the ADIS16407, the PROD_ID = 0x4017 (16,407) and is located at register address 0x56 and 0x57.  Set DIN = 0x5600 to read this register. Reading this register, in a repeating pattern, enables inspection for all of the listed SPI communication issues. Here is an example (psuedo code) for a test loop, which reads PROD_ID in a repeating pattern. Starting with the second loop, DOUT should be equal to 0x4017, every time. 

    Set CS = 1;  // Standard for no communication

    Delay > 10us  // Make sure that Tstall time is managed

    Start Loop

      Set CS = 0;  // select the device, good idea to trigger a scope on this edge

      DIN = 0x5600;

      Read DOUT  // Note that the ADIS16xxx devices support full duplex operation, so this may be combined with DIN = 0x5600 step

      Set CS = 1; // release the device

      Delay > 10us  // manage the Tstall time requirement

    End