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.

ADS131E08 gets stuck

Other Parts Discussed in Thread: ADS131E08

Hello Ti Team,

I am using ADS131E08 and Ti's LM3S ARM MCU for a new design. With the following initialization codes, the ADC works well except the ADC part gets stuck about 1 time after 10 times power up. For the stuck I mean after the MCU runs the following code, the ADC is no long able to send  DRDY\ signal any more.

By the way in between each initialization codes, there is a delay to follow the timing requirements.

For schematic, the START pin is connected to GND and I always use START command to activate the ADC into continuous mode.

This problem occurs on both my prototype board and Ti's ADS131E08 demo board with the ARM MCU demo board.

I noticed that once the ADC part is in stuck, any reset command from MCU is not helpful and the only way is the cycling the power.

Any suggestion?

Is hardware RESET/ pin or PWDN\ pin can deal with this issue?

Ming

          0x06);// reset opcode

          0x11);// SDATAC command

          0x41, //opcode1. Reg start addr :1
            11, //opcode2. 12 registers to write
            0x94,//CONFIG1 90:64K; 91: 32k; 92: 16k; 93: 8K; 94:4k; 95:2K; 96:1K
            0xE0,//CONFIG2
            0xE4,//CONFIG3 addr:3. 4Vref; opamp enable
            0, //Fault addr:4
            0x10,//CH1SET addr:5
            0x10,//CH2SET
            0x10,//CH3SET
            0x10,//CH4SET
            0x10,//CH5SET
            0x10,//CH6SET
            0x10,//CH7SET
            0x10};//CH8SET addr:12

           0x10); // 0x10 for cont mode

           0x08);//START command

  • Ming -

    Based on the setting show in the post, it looks like you have an incorrect write statement.  If you are writing 12 registers, the second byte should be x0B, not x11.  If it is x11, then the device will wait for the additional values (7 more values) to be written before continuing.  So the part may look like it isn't responding until it receives the additional 7 bytes.

  • Greg,

    Thank you for help. and quick response.

    Yes I need to write 12 registers. And that is why the 11 (or 0x0B) is for opcode2. There is no "x" before the 11.

    In my code, the 0x11 on the line 2 is the command for SDATAC command.

    Ming

  • Ming -

    I think you are confusing hex and decimal numbers.  I was using the 'x' to indicate a hex value; you are correct in that you don't write it.

    If you want to write to 12 registers, the second op-code of the write command should be the hex value '0B' (0x0B - which is equal to decimal 11).

    In you original post, you show that you are writing a hex value '11' (0x11), which is decimal 17.  Therefore, the write you are performing indicates that you want to write to 18 registers.  Since you don't write enough data for 18 registers, the device will wait until you have written enough data to interpret as 18 registers.

    This is most likely the reason that the part seems like it does not respond since it is still waiting for more register writes.

  • Greg,         

    Let me copy my original code in my post and list it below again. The red line is the concern you have. In the red line, the 11 is a decimal number which is equal to 0x0B for hex. And I need this 11 for the 12 registers to be written. Sorry to give your confusion that my code is mixed with both hex and decimal formats.

    I hope it is clear to you now.

    Thanks,

    Ming

              0x06);// reset opcode

              0x11);// SDATAC command

              0x41, //opcode1. Reg start addr :1
              11, //opcode2. 12 registers to write
                0x94,//CONFIG1 90:64K; 91: 32k; 92: 16k; 93: 8K; 94:4k; 95:2K; 96:1K
                0xE0,//CONFIG2
                0xE4,//CONFIG3 addr:3. 4Vref; opamp enable
                0, //Fault addr:4
                0x10,//CH1SET addr:5
                0x10,//CH2SET
                0x10,//CH3SET
                0x10,//CH4SET
                0x10,//CH5SET
                0x10,//CH6SET
                0x10,//CH7SET
                0x10};//CH8SET addr:12

               0x10); // 0x10 for cont mode

               0x08);//START command

  • Ming -

    So it sounds like clarification is needed.

    (referencing the WREG command, not SDATAC)

    Is the code actually writing '11' or '0B'?  The second byte should be a hex value also...so make sure you are writing 0x0B.  The code that you posted seems to indicate the you are writing '11', which the computer would interpret as 17 (decimal).

  • Greg,

    In computer '11' and '0x0B' will give you same value.  '11' is with decimal. You can not get decimal '17' with writing '11', you can get it with '0x11'.

    If there is no issue for the code, lets back to the original problem.

    For schematic, the START pin is connected to GND and I always use START command to activate the ADC into continuous mode.

    This problem occurs on both my prototype board and Ti's ADS131E08 demo board with the ARM MCU demo board.

    I noticed that once the ADC part is in stuck, any reset command from MCU is not helpful and the only way is the cycling the power.

    Any suggestion?

    Is hardware RESET/ pin or PWDN\ pin can deal with this issue?

    Thanks,

    Ming

  • Greg,

    Do you have any suggestion? Or any other information you need? The thing is this issue occurs on both my designed board and the combination of ADS131E08 and LM3S9D96 demo boards.

    Thanks,

    Ming