This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS8688 problem

Other Parts Discussed in Thread: ADS8688

Hai Iam using ADS8688 in our Product.

i have prepared the schematic as per data sheet. After writing program registers iam reading back and also getting same data what i have wrote. But When Reading Conversion data getting two values for each channel irrespective of input applied in Auto mode and in Manual channel mode.


Iam using clock frequency as 4 MHZ, CPOL=0, CPHA=1. All analog
channels negative pins are grounded and applying voltage at Each channel positive pins. Daisy pin connected to ground. RST pin connected to 5V, Using internal voltage reference.
After power on I have configured in followeing way
1. Sending Reset command.
2.Sending No operation command.
3.Enabling all channel for Auto Scan mode.
4.All channels power up.
5.Feature select as 0x28.
6.Ch0-Ch7 reg as 0 to 1.25 Vr.
7.Sending Auto Reset command.
8.Reading data continuously 8 times for 8 channels.
If available kindly provide sample programs or program flow charts.

  • Hello Rajesh,

    Thanks for evaluating ADS8688.

    I will need some additional information before I could figure out the cause for problem at hand.

    Please help with following information.

    1. When you get two values for any channel being captured, are these two digital codes are same or they have variation?
    2. Please confirm if the digital code represents the input analog voltage according to the ADC transfer function for the range selected. Also does it change with analog voltage applied.
    3. How many SCLK are supplied in a typical frame?
    4. When in manual mode, is SDI held LOW for 1st 16 bits in any frame?
    5. If possible please share Oscilliscope capture for 1 or 2 frames with CS, SCLK, SDI & SDO.
    6. Please elaborate more on 0x28 setting. Which register you are referring here?

    Thanks & Regards,
    Shridhar.
  • Hai Sridhar,

    Following are comments

    1. When you get two values for any channel being captured, are these two digital codes are same or they have variation?__Two values are not corresponding to Input Applied.
    2. Please confirm if the digital code represents the input analog voltage according to the ADC transfer function for the range selected. Also does it change with analog voltage applied._Digital Code is not corresponding to Transfer function of the range selected.
    3. How many SCLK are supplied in a typical frame?__Minimum 32 clock cycles
    4. When in manual mode, is SDI held LOW for 1st 16 bits in any frame? _Yes
    5. If possible please share Oscilliscope capture for 1 or 2 frames with CS, SCLK, SDI & SDO._Presently not available
    6. Please elaborate more on 0x28 setting. Which register you are referring her_This corresponding to Feature select Register.

    Thanks & regards,

    M.N.V.Rajesh

  • Hello Rajesh,

    Please share the sequence of register values written from power up till 1st set of data capture for all 8 channel.

    Thanks & Regards,
    Shridhar.
  • Hai Sridhar,

      Following are the sequence of commands iam issuing\

    1.Sending RESET command.

    2.Sending NO OPERATION COMMAND.

    3.Enabling all channels for auto scan mode by configuring program register with 0xFF.

    4.Enabling all channels power up by writing 0x00 to power down register.

    5.writing 0x28 to feature select register.

    6.Selecting all channels input ranges as 0 to 1.25Vref range by writing 0x06 to channel input selection registers.

    7. Sending Auto reset Command.

    8. Reading the Results 32 byte bits by 32 bits.

    Thanks & regards,

    M.N.V.Rajesh

  • Hai Sridhar,
    Please share sample code or sequence of commands for working with ADS8688 .
  • Hello Rajesh,

    I do not have a sample code available with me now. I am working on the command value sequence you can try out and share to you.

    For the various steps you shared in previous post can you also provide the BYTE / WORD value you passed using the SPI protocol. I want to verify if we are not missing anything or the value is not correct.

    Thanks & Regards,
    Shridhar.
  • Hai Sridhar,

    Every time iam sending 4 bytes(32 bits).

    1.Sending Reset Command(0x85,0x00,0x00,0x00)

    2.Sending No operation command (0x00,0x00,0x00,0x00)

    4.Initialization is as follows

    Command

    Byte 0 and 1

    Byte 2

    Byte3

    Bits 15:9

    Bit 8

    Bits[7:0]

    Enabling all channels for auto scan

    0x01

    1

    0xff

    0x00

    0x00

    All channels power up

    0x02

    1

    0x00

    0x00

    0x00

    Feature select register

    0x03

    1

    0x28

    0x00

    0x00

    Channel 0 range

    0x05

    1

    0x06

    0x00

    0x00

    Channel 1 range

    0x06

    1

    0x06

    0x00

    0x00

    Channel 2 range

    0x07

    1

    0x06

    0x00

    0x00

    Channel 3 range

    0x08

    1

    0x06

    0x00

    0x00

    Channel 4 range

    0x09

    1

    0x06

    0x00

    0x00

    Channel 5 range

    0x0A

    1

    0x06

    0x00

    0x00

    Channel 6 range

    0x0B

    1

    0x06

    0x00

    0x00

    Channel 7 range

    0x0C

    1

    0x06

    0x00

    0x00

    5.Sending Auto reset command(0xA0,0x00,0x00,0x00).

    6.Reading data by sending 4 bytes of zeros.

    Sending sequence is Byte0,Byte1,Byte2,Byte3.


    Please provide is this sequence ok or need any changes.

    Thanks & Regards,

    M.N.V.Rajesh

  • Hello Rajesh,

    The sequence as such looks correct. You can get rid off stage 2 but this is optional.

    During the initialization part (Program register access), the register address is 7bit. Hence the address mentioned should be sent with 1 bit left shift to accommodate for 1 bit for Read/Write selection.
    i.e to write to address 0x01h with data 0xFFh, the word to be sent is 0x03FFh or
    write to address 0x02h with data 0x00h, the word to be sent is 0x0500h or
    write to address 0x0Ah with data 0x06h, the word to be sent is 0x1506h etc.

    During initialization, You can try reading the SDO data after the 16th SCLK to check if the data is programmed correctly. Or you can perform a single register read & check if the value programmed is read back.

    The feature register is trying to write "1" to the bits which are expected to be Read Only. These bits (bit 3 & bit 5) must be set LOW.

    Also, before entering AUTO Reset, you may try capturing the data in manual mode to verify one channel capture is working fine.

    I would like to know if there is a possibility of CS signal getting HIGH during 32 bit data transfer frame. Please share oscilloscope plot.

    Thanks & Regards,
    Shridhar.
  • Hai Sridhar,

    Thank You so much for your support.following are my comments


    During the initialization part (Program register access), the register address is 7bit. Hence the address mentioned should be sent with 1 bit left shift to accommodate for 1 bit for Read/Write selection.
    i.e to write to address 0x01h with data 0xFFh, the word to be sent is 0x03FFh or
    write to address 0x02h with data 0x00h, the word to be sent is 0x0500h or
    write to address 0x0Ah with data 0x06h, the word to be sent is 0x1506h etc._Already iam

    following

    During initialization, You can try reading the SDO data after the 16th SCLK to check if the data is programmed correctly. Or you can perform a single register read & check if the value programmed is read back._Reading back and getting same value what i wrote.

    The feature register is trying to write "1" to the bits which are expected to be Read Only. These bits (bit 3 & bit 5) must be set LOW._Writing Low Only

    Also, before entering AUTO Reset, you may try capturing the data in manual mode to verify one channel capture is working fine.__Tried in manual mode also and getting same values what i got in auto mode

    I would like to know if there is a possibility of CS signal getting HIGH during 32 bit data transfer frame. Please share oscilloscope plot._CS signal is controlling through direct port pin and this pin is dedicated for this only

    Thanks & Regards,

    M.N.V.Rajesh

  • Hello Rajesh,

    The register access seems to work fine as you could read back the programmed data. I would like you to verify following.
    I still have concern wrt 0x28H being programmed into the Feature Select register. We are programming two read only bits with value "1" whereas datasheet expects this to be "0". I am checking with design team if this could have issues. I will let you know their feedback.

    Below are some additional experiments you can try.
    1. Try programming 0x00H in feature select register.
    2. When you are reading data or all channel powered up, measure voltage on REFIO & REFCAP. This should be 4.096V.
    3. Program the device to operate in default input range i.e. program the channel range register with 0x00H. Leave all the inputs floating. Capture the ADC data & share the 16 bit code. When you are not converting, measure the input pin voltage using a multimeter & let me know.
    4. Share the ADC schematic.
    5. Please capture oscilloscope plot of SPI transaction & share the same.

    Thanks & Regards,
    Shridhar.
  • Hai Sridhar,

    Please find attached schematic as attachment.

    as per data sheet Bit 3 and Bit 5 of feature select register must always be high.Please confirm.

    I will update the required data asked by you soon

    Thanks & Regards,

    M.N.V.Rajesh

  • MAIP with ADS8688.pdf

    hai Sridhar,

    Please find schematic as attachment.

    As per data sheet bit 3 and bit 5 of feature select registers must be always high.Please confirm