ADS8166: Driver Development

Prodigy 430 points

Replies: 1

Views: 12

Part Number: ADS8166

Hi Team,

We are developing with ADS8166 and are writing firmware as there is no sample code/drivers to support this. A few questions listed below. Thanks for your help!

  1. We want to operate the device in standard manual mode, with 8 separate ADC's single ended. As depicted in Figures 42 and 43 of the ads8166 datasheet, there is an operation to "switch to AINy" ie switch to channel AIN#. I recognize this operation needs to be done with the CHANNEL_ID register, 0x1D, since that also specifies 3 bits for selecting the analog input channel. Is this switch operation on channel "AINy" a write operation, or a read operation? (The write and read operations are specified by the upper 5 bits in a 24 bit packet).
  2. I suspect the operation to switch to a specific channel is meant to be a "write" command, since the read has a specified lower 8 bits of 0x00. If we are suppose to write that to the register, do I need to set REG_ACCESS_BITS in the 0x00 REG_ACCESS register, to complete this properly?
  3.  How strict is the 24 clock pulse packet to the ads module? On our embedded linux platform, the default spi driver doesn't accept a 24 bit packet size, as in the chip select is low for those 24 clock pulses. It will take 8bit, 16, and 32 though, and I've set it up as size 32bit with 0's for the extra 8 bits at the end



1 Reply

  • Hello Garret,

    1.  Changing channels is a WRITE operation.  The command to change to channel AIN1 would be:

    00001 00000011101 00000001

    2.  No, the REG_ACCESS_BITS only applies to the registers in Table 10.  You do not need to write to this register to change channels.

    3.  You can clock 32 bits for a frame.  On the SDO line, the first 16b will be the conversion result, followed by 16 zeros.  If you are sending the WRITE command to change channels, then you would need to add 8 zeros to the beginning of the frame, followed by the above 24b command.

    If using 32b frame, to change to channel AIN1, you would send the following bits:

    00000000 00001 00000011101 00000001

    Keith Nicholas
    Precision ADC Applications