Post Go back to editing

ADIS16488A Product ID Conflict

Category: Software
Product Number: ADIS16488A
Software Version: 1.10

ADIS16488A data sheet Revision F obtained here: https://www.analog.com/en/products/adis16488a.html indicates that the PROD_ID register should always indicate 0x4068 (16,488). I have found that the unit I have been prototyping with indicates 0x5150 (20,816).

I am using the Beaglebone Linux 5.4 kernel driver for the ADIS16480-series products as a baseline to communicate with the device. My logic analyzer output is consistent with what the software is commanding/interpreting: 

The driver reports this product ID mismatch in the kernel log on probe:

iio iio:device1: Device ID(16488) and product ID(20816) do not match.

Driver Source: https://github.com/beagleboard/linux/blob/5.4/drivers/iio/imu/adis16480.c

I am wondering if this is possibly an oversight in the data sheet or if I may have an issue with my device. I have also used the Linux 'spidev' driver to generate SPI traffic from user-space and observed the same value (0x5150) in the PROD_ID register.

Additional info from the IIO driver:

---------------------------------------------------------------------- IIO device: name = adis16488 id = iio:device1 label = (null). Device Debug attributes: 0: flash_count: 57 1: product_id: 20816 2: serial_number: 0x0170 3: firmware_date: 06-12-2015 4: firmware_revision: 1.10 5: direct_reg_access: 0x0 Device Standard attributes: 0: current_timestamp_clock: realtime 1: sampling_frequency: 2460.000000 Channel 0 (name = (null), id = anglvel_x) attributes: 0: calibbias: 0 1: calibscale: 0 2: filter_low_pass_3db_frequency: 0 3: raw: -599132 4: scale: 0.000000005 Channel 1 (name = (null), id = anglvel_y) attributes: 0: calibbias: 0 1: calibscale: 0 2: filter_low_pass_3db_frequency: 0 3: raw: -27748 4: scale: 0.000000005 Channel 2 (name = (null), id = anglvel_z) attributes: 0: calibbias: 0 1: calibscale: 0 2: filter_low_pass_3db_frequency: 0 3: raw: -555813 4: scale: 0.000000005 Channel 3 (name = (null), id = accel_x) attributes: 0: calibbias: 0 1: calibscale: 0 2: filter_low_pass_3db_frequency: 0 3: raw: 1873971 4: scale: 0.000000119 Channel 4 (name = (null), id = accel_y) attributes: 0: calibbias: 0 1: calibscale: 0 2: filter_low_pass_3db_frequency: 0 3: raw: -20421450 4: scale: 0.000000119 Channel 5 (name = (null), id = accel_z) attributes: 0: calibbias: 0 1: calibscale: 0 2: filter_low_pass_3db_frequency: 0 3: raw: -79390089 4: scale: 0.000000119 Channel 6 (name = (null), id = magn_x) attributes: 0: calibbias: 0 1: filter_low_pass_3db_frequency: 0 2: raw: -1701 3: scale: 0.000100 Channel 7 (name = (null), id = magn_y) attributes: 0: calibbias: 0 1: filter_low_pass_3db_frequency: 0 2: raw: 1146 3: scale: 0.000100 Channel 8 (name = (null), id = magn_z) attributes: 0: calibbias: 0 1: filter_low_pass_3db_frequency: 0 2: raw: -52 3: scale: 0.000100 Channel 9 (name = (null), id = pressure0) attributes: 0: calibbias: 0 1: raw: 1669634052 2: scale: 0.000000061 Channel 10 (name = (null), id = temp0) attributes: 0: offset: 4425 1: raw: 2622 2: scale: 5.650000 Channel 11 (name = (null), id = timestamp) attributes: ----------------------------------------------------------------------

  • My apologies, I'm not sure why the additional info formatting didn't show up as embedded code. Here's that formatted properly:

    IIO device: name = adis16488 id = iio:device1 label = (null).
    
      Device Debug attributes:
        0: flash_count: 57
        1: product_id: 20816
        2: serial_number: 0x0170
        3: firmware_date: 06-12-2015
        4: firmware_revision: 1.10
        5: direct_reg_access: 0x0
    
      Device Standard attributes:
        0: current_timestamp_clock: realtime
    
        1: sampling_frequency: 2460.000000
    
      Channel 0 (name = (null), id = anglvel_x) attributes:
        0: calibbias: 0
        1: calibscale: 0
        2: filter_low_pass_3db_frequency: 0
        3: raw: -1406558
        4: scale: 0.000000005
    
      Channel 1 (name = (null), id = anglvel_y) attributes:
        0: calibbias: 0
        1: calibscale: 0
        2: filter_low_pass_3db_frequency: 0
        3: raw: -573296
        4: scale: 0.000000005
    
      Channel 2 (name = (null), id = anglvel_z) attributes:
        0: calibbias: 0
        1: calibscale: 0
        2: filter_low_pass_3db_frequency: 0
        3: raw: 422865
        4: scale: 0.000000005
    
      Channel 3 (name = (null), id = accel_x) attributes:
        0: calibbias: 0
        1: calibscale: 0
        2: filter_low_pass_3db_frequency: 0
        3: raw: 1963968
        4: scale: 0.000000119
    
      Channel 4 (name = (null), id = accel_y) attributes:
        0: calibbias: 0
        1: calibscale: 0
        2: filter_low_pass_3db_frequency: 0
        3: raw: -20281534
        4: scale: 0.000000119
    
      Channel 5 (name = (null), id = accel_z) attributes:
        0: calibbias: 0
        1: calibscale: 0
        2: filter_low_pass_3db_frequency: 0
        3: raw: -79404108
        4: scale: 0.000000119
    
      Channel 6 (name = (null), id = magn_x) attributes:
        0: calibbias: 0
        1: filter_low_pass_3db_frequency: 0
        2: raw: -1697
        3: scale: 0.000100
    
      Channel 7 (name = (null), id = magn_y) attributes:
        0: calibbias: 0
        1: filter_low_pass_3db_frequency: 0
        2: raw: 1147
        3: scale: 0.000100
    
      Channel 8 (name = (null), id = magn_z) attributes:
        0: calibbias: 0
        1: filter_low_pass_3db_frequency: 0
        2: raw: -42
        3: scale: 0.000100
    
      Channel 9 (name = (null), id = pressure0) attributes:
        0: calibbias: 0
        1: raw: 1668557105
        2: scale: 0.000000061
    
      Channel 10 (name = (null), id = temp0) attributes:
        0: offset: 4425
        1: raw: 3563
        2: scale: 5.650000
    
      Channel 11 (name = (null), id = timestamp) attributes: