Post Go back to editing

AD7124 Always reads zero. RDY/IDLE bit is always 1

Hello,

I am trying to bring up an AD7124-8 to measure a 3-Write RTD. I have tried many configurations, but have not managed to read any values from the data register, nor banish all errors from the error register. 

All reads from the DATA register always return 0. All reads from the STATUS register always show the IDLE/RDY bit as high, and the error bit is high if I enable enough errors. 

Schematic

I have 1 PT100 RTD connected to the RTD1 input as pictured. All other RTDs connections are left floating. 

Voltage Measurements

REGCAPA = 1.92V

REGCAPD = 1.795V

REFIN+ - REFIN- = 1.21V

AIN2 - AIN1 = 398 mV

Register Dump

0x00,0x000000c0
0x01,0x00000081
0x02,0x00000000
0x03,0x00003505
0x04,0x00000000
0x05,0x00000014
0x06,0x00000080
0x07,0x0007fbda
0x08,0x00000000
0x09,0x00008022
0x0a,0x00000001
0x0b,0x00000001
0x0c,0x00000001
0x0d,0x00000001
0x0e,0x00000001
0x0f,0x00000001
0x10,0x00000001
0x11,0x00000001
0x12,0x00000001
0x13,0x00000001
0x14,0x00000001
0x15,0x00000001
0x16,0x00000001
0x17,0x00000001
0x18,0x00000001
0x19,0x000009e4
0x1a,0x00000860
0x1b,0x00000860
0x1c,0x00000860
0x1d,0x00000860
0x1e,0x00000860
0x1f,0x00000860
0x20,0x00000860
0x21,0x00060180
0x22,0x00060180
0x23,0x00060180
0x24,0x00060180
0x25,0x00060180
0x26,0x00060180
0x27,0x00060180
0x28,0x00060180
0x29,0x00800000
0x2a,0x00800000
0x2b,0x00800000
0x2c,0x00800000
0x2d,0x00800000
0x2e,0x00800000
0x2f,0x00800000
0x30,0x00800000
0x31,0x00554f25
0x32,0x00554f25
0x33,0x00554f25
0x34,0x00554f25
0x35,0x00554f25
0x36,0x00554f25
0x37,0x00554f25
0x38,0x00554f25

Any support is appreciated!

Parents
  • Hi, 

    Apologies. This is just a common steps I prefer to check if the ADC is converting and communicating properly with the MCU. Upon power up, can you pull /CS low and just monitor the DRDY pin if it is pulsing at correct ODR? 

    Once you see it is pulsing, can you try to change the ODR settings and then see again if it is now pulsing at the new ODR? Then you can also check if you configure the ADC correctly by writing and reading to the same register. Once you confirm that the ADC is converting and that the SPI interface is good. Then we can go to the hardware debugging.

    I'm sorry I'm kinda loaded now, but I will review this and come back to you if I find anything else. 

    Thanks,

    Jellenie

  • Hi Jellenie,

    I have powered on the ADC, pulled /CS low, and DOUT/RDY remains high. 

    I'm pretty sure something else is the issue. Maybe even the ADC is broken? I'd be surprised though.

    My reasoning is that when I communicate with the device, it appears to be functioning correctly.

    For example, the ID register reads back correctly. If I enable the MCLK_COUNT_EN bit in the ERROR_EN_REGISTER, the MCLK_COUNT register begins to update as expected. 

  • Hi 

    If it remains high then it seems the ADC is not converting. Just to confirm the above suggestion is upon power up when ADC is at default config is that correct? 

    Because I reviewed your register settings. It appears that your gain is set to 16. So if you have an input of 398mV then multiplying it with 16 will exceed and saturate the ADC. May I know why you used 1000uA? I am assuming you are using PT100 right? Have you seen this tool? This would help you check if the config is acceptable for ADC. Please have a look and let me know your feedback. 

    https://www.analog.com/media/en/designtools/calculators/rtd_configurator_and_error_budget_calculator-rel1.0.0.exe 

    Thanks,

    Jellenie

  • Hi

    >Just to confirm the above suggestion is upon power up when ADC is at default config is that correct? 

    I've tried both in default config, and after configuration the current source. 

    Right after boot, using the default values, and enabling all the errors, I see that the error register is 0xA880, showing that reference is not detected, and and both inputs are over voltage, and the analog LDO is not happy.

    If I enable the current sources, all errors go away except the Analog LDO error (ALDO_PSM_ERR).

     I've looked at the tool. Thanks! I believe I should change my reference and headroom resistor 2K and 330 ohm respectively.

    I also believe setting a gain of 8 and a current of 500uA is better.

  • Hi, 

    Yes because I think the default config uses external reference and if your REFIN pins has no voltage because of the absence of IOUT then the ADC won’t convert which is the reason why DRDY remains high or low. 

    We have here our recent released article regarding RTD application including the tool. Hope you find this helpful.

    https://www.analog.com/media/en/analog-dialogue/volume-55/number-2/how-to-select-and-design-the-best-rtd-temperature-sensing-system.pdf 

    Thanks,

    Jellenie

  • Hi,

    Thanks, that's a helpful guide. From reading it, my circuit is correct, with the exception that the reference resistor and headroom resistor need to be changed.

    The error bit that is still set is ALDO_PSM_ERR. This won't go away no matter what I do. If I measure the analog LDO output, it's around 1.9V. Is this okay? This is what I'm the most stuck on, since even with correct reference voltages greater than 0.7V, or using an internal reference, this bit remains high. 

    If I disable the monitoring, then the bit goes away, but I believe the error condition is still present, just hidden.

     

  • Hi, 

    That is weird. Do you read the error registers consecutively and does the error flag remains as always or is it only appeared once? 

    It is curious as you've mentioned that the LDO output is around 1.9V so that should be okay. I am wondering what might have causing this issue as the LDO output appears to be fine. Are you using Eval+ software or your own code? 

    Thanks,

    Jellenie

  • If I read it repeatedly, it remains. 

    I am using my own software.

    I've considered soldering the SPI pins from EVAL-SDP-CB1Z and using the Eval+ to talk to the device on my circuit board. 

  • Hi, 

    I was thinking if this is just a bug somewhere. Are you having issues with your measurements? or everything appears to be normal? 

    Let me see if I can double check this. I am currently wfh but when I get a chance this week I'll try if I can replicate the issue. 

    Thanks,

    Jellenie

  • Hi,

    I'm wondering if the usage of the analog pins matters. In the app note CN0383, the "Multiple 3-wire RTD Configuration" shows the following:

    My design on the other hand is using AIN0 and AIN3 for IOUT. Maybe this causes a problem. 

    I'm going to be ordering a new board within a week or so, and I'll also pick a new Rref and RHeadroom.

    Here's a screenshot of the Excel tool:

    • Hi, 

    No. The selection of AIN or IOUT pins is flexible. The above configuration is the configuration we used on our circuit note. It is also the default configuration we have used with our firmware example codes that will be also release soon. There’s no harm in changing these but I think using exactly the same config or external components we have used will just make your life easy. 

    Thanks,

    Jellenie

  • I've just received my new board which in theory is exactly the same as the eval board. However, I'm still seeing ALDO_PSM_ERR set, even though the voltages look good, and similar to what I reported earlier.

    Any luck on replicated the issue on your end?

Reply Children
  • Hi, 

    Yes, we have tested this on our side and we do not see this issue. The ALDO_PSM_ERR or DLDO_PSM_ERR does not flag since we have a valid LDO output of 1.9V and 1.8V respectively. Just a quick question, can you check if you also enabled the ALDO_PSM_TRIP_TEST_EN? Because if you do this will automatically set the ALDO_PSM_ERR bit as this is intended to check the power supply monitoring, so the input to the test circuitry is GND rather than the actual LDO output which makes the error bit flag. 

    Thanks,

    Jellenie

  • I checked my ERROR_EN bits, and was in fact setting the ALDO_PSM_TRIP_TEST_EN bit.

    I cleared that, and the error goes away.

    Now what I see is the !DRDY bit stay high, and DATA is always zero.  I

    VREF is 2.6V

    AIN1-AIN0 is 0.115 V

    LDO outputs are 1.9 and 1.8.

    I'll poke around and see if I can find out any other issues. 

  • Good to hear that it solved the issue. 

    As for the other concern. When Data is always 0 do you see any other errors flag? 

    May I know what's your gain setting for an input of 0.115V?

    It is interesting that the pin stays high but the Data is always 0. 

    Usually, when DOUT/RDY stops pulsing at any time and it stays high or low (even though the ADC is configured for continuous conversion mode), this indicates that the serial interface has become asynchronous (incorrect number of SCLK pulses, glitches on the SCLK line). 

    And when Data remains high or low is usually cause by invalid reference, overrange or underrange input voltage. 

    So again upon power up, with CS low, when you monitor the DRDY pin does it stay high or pulsing at correct ODR? Then again try to change the ODR by writing to the filter register then with /CS low monitor again the DRDY pin if it is pulsing at a new selected ODR. When you do this check please confirm that you have a valin reference and input voltage range. 

    Thanks,

    Thanks,

    Jellenie