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.

ADS8556 output data is different

Other Parts Discussed in Thread: ADS8556, THS4032

 I recently use ADS8556EVM in HW/SER mode. Six channel data output only from SDO_A. So I creat 96 clock to read the data. The output data A0, A1, B0, B1, and C0 are correct, only the C1 is wrong. What's happening?

  • Hi user4496395,

    Welcome to the e2e forum!  Can you tell us what is wrong with the data from the ADS8556 channel C1?  Is it off by some scale factor?  Is it 'garbage' data?  Shifted data?  Can you perhaps share the raw conversion data and provide details about the setup (input voltage, range, expected results, etc)?

  • Hi Tom,

    +VA : +12V  ,  -VA : -12V  ,  AVdd : +5V  ,  BVdd : +5V

    Vref : I use the internal reference voltage. It seems like 2.5V

    My SW1 set : WORD / 4x / HDW / SER / REFBUF ENA (0) / Chain ENA (0) /SERA ENA (1) / SERB ENA (0) /SERA ENA  (0) /REF en (1)

    case 1 : All channel connected to GND

    case 2 : A0 input voltage 5V , other channels are GND

    case 3 : A1 input voltage 5V , other channels are GND

    case 4 : B0 input voltage 5V , other channels are GND

    case 5 : B1 input voltage 5V , other channels are GND

    case 6 : C0 input voltage 5V , other channels are GND

    case 7 : C1 input voltage 5V , other channels are GND

    Only the C1 output Data is different.

    my code as follows:

    int main() {
    pc.baud(115200);
    
    convst = 0;
    reset = 0;
    
       // Chip must be deselected
       cs = 1;
    
       spi.format(16,2); // Setup the spi for 8 bit data, high steady state clock,
       spi.frequency(1000000); // second edge capture, with a 1MHz clock rate
       reset = 1;
       wait_ns(50);
       reset = 0;
    
       while(1)
       {
        convst = 1;
        wait_ns(20);
        while(busy != 0 );
    
    // Select the device by seting chip select low
       cs = 0;
    
       // Send 0x8f, the command to read the WHOAMI register
       wait_ns(5);
       int16_t CH_A0 = spi.write(0x0000); // CH_A0
       wait_ns(5);
       int16_t CH_A1 = spi.write(0x0000); // CH_A1
       wait_ns(5);
       int16_t CH_B0 = spi.write(0x0000); // CH_B0
       wait_ns(5);
       int16_t CH_B1 = spi.write(0x0000); // CH_B1
       wait_ns(5);
       int16_t CH_C0 = spi.write(0x0000); // CH_C0
       wait_ns(5);
       int16_t CH_C1 = spi.write(0x0000); // CH_C1
    
           // Deselect the device
           cs = 1;
           convst = 0;
           wait_ns(40);
           double CHA0, CHA1, CHB0, CHB1, CHC0, CHC1 ;
    
           CHA0 = (CH_A0 + 32768) * 20.232 / 65535 - 10.116 ;
           CHA1 = (CH_A1 + 32768) * 20.232 / 65535 - 10.116 ;
           CHB0 = (CH_B0 + 32768) * 20.232 / 65535 - 10.116 ;
           CHB1 = (CH_B1 + 32768) * 20.232 / 65535 - 10.116 ;
           CHC0 = (CH_C0 + 32768) * 20.232 / 65535 - 10.116 ;
           CHC1 = (CH_C1 + 32768) * 20.232 / 65535 - 10.116 ;
    
       pc.printf("CHA0 = %f, ", CHA0);
       pc.printf("CHA1 = %f, ", CHA1);
       pc.printf("CHB0 = %f, ", CHB0);
       pc.printf("CHB1 = %f, ", CHB1);
       pc.printf("CHC0 = %f, ", CHC0);
       pc.printf("CHC1 = %f,\r\n ", CHC1);
       }
    }

    If the code where need to be modified, please talk to me. thx

    Best regards.

  • Hello user4496395,

    It seems that there may be something going on with the input to channel C1. The data for channel C1 in case 1 and case 2, is significantly different than that for cases 3 to 6.

    My recommendation would be to verify the correct positioning of jumper JP8 and put an oscilloscope probe across C31 to ensure you read the proper voltage you expect (either ground or 5 V).

    Let me know if you obtain the expected value.

    Best regards,

    Jose

  • Hi Jose,
    My JP8 is at the same position like JP1, JP2, JP5, JP6, JP7.

    I input 5V to C0 and put an oscilloscope probe across C28. I read the voltage about 2.5~2.7 mV.
    When I input 5V to C1 and put an oscilloscope probe across C31. I read the voltage about 0.25~0.26 mV.
  • Hello user4496395,

    I can only conclude, from the measurement results you report, that there is something wrong with the connection of your input signal or with the THS4032 used to buffer channels C0 and C1.

    As you can see in the image below, either position of JP5 and JP8 should lead you to read on the oscilloscope the exact same voltage you put in on pins (10 to 9) and (12 to 11) of J2. If you put in 5 V and read only 2.5 mV then the signal is not getting through.

    I would recommend you to double check J2, JP5 and JP8.

    Also, I would JP5 and JP8 as shorting pins 2-3 and verify that the THS4032 is properly operating as a buffer amplifier.

    Out of curiosity, when you apply 5 V to J2-6 and GND to J2-5, how much do you read with the oscilloscope across C16?

    Best,

    Jose