Post Go back to editing

AD7731 via Arduino SPI

We're using an Arduino to control an AD7731.  We think the SPI interface is working in that we can 1) trigger a reset by writing four 0xFF bytes and see the RESET pin go low via our logic analyzer and 2) After the reset, we read the Mode register and get back 0x174 as per the data sheet.  Our problem is that when we try to do a continuous conversion read operation, fully differential, AIN1(+) and AIN2(-), 0 - 1.28 V, Mode bytes as follows (MSB first)   00110001  01110100, we can't ever get the RDY pin to go low.  Is there a way to check the operation of the chip so see if conversions are being made and put in the data register at all?  I don't think we fried the chip, but we don't have a way to check.  Also, we are using the AD780 2.5V reference.  We could send you code if that would help.

Thanks,

George

Parents
  • Brendan,

         I've attached a diagram showing our connections to the AD7731.  We are pretty much following Figure 21 on p. 39 of the datasheet.  We're using the AD780 to supply the VREF and a 4.9152 MHz crystal across the MCLK pins, with 33 pF caps to ground from each.  On a scope, the MCLK out signal (wrt ground) is a quasi-sine wave with 1 V amplitude with a +2V offset from ground (goes between 1 V and 3 V).  We don't use optoisolators between the Arduino and the AD7731.  The filter register is unchanged from its power up values, which the data sheet says should give an update rate of 600 Hz if my calculations are correct (I haven't yet had the code do a read of the filter register).  I see nothing on the scope or on the logic analyzer to indicate that the /RDY pin is going low at any time in the process.  If I use a DMM to monitor /RDY, I do see a quick few mV drop that seems to be cyclical (remember, the Arduino code continuously loops), but that could be crosstalk from some other line (like the /CS).

    We are using a powered breadboard, which isn't the most quiet of electronic environments, but I hesitate to solder up a board with ground planes and everything if we can't make it work at all under these conditions.

    2441fa37fe78dfa939b5c82be308f798.tiff

    Thanks,

    George

Reply
  • Brendan,

         I've attached a diagram showing our connections to the AD7731.  We are pretty much following Figure 21 on p. 39 of the datasheet.  We're using the AD780 to supply the VREF and a 4.9152 MHz crystal across the MCLK pins, with 33 pF caps to ground from each.  On a scope, the MCLK out signal (wrt ground) is a quasi-sine wave with 1 V amplitude with a +2V offset from ground (goes between 1 V and 3 V).  We don't use optoisolators between the Arduino and the AD7731.  The filter register is unchanged from its power up values, which the data sheet says should give an update rate of 600 Hz if my calculations are correct (I haven't yet had the code do a read of the filter register).  I see nothing on the scope or on the logic analyzer to indicate that the /RDY pin is going low at any time in the process.  If I use a DMM to monitor /RDY, I do see a quick few mV drop that seems to be cyclical (remember, the Arduino code continuously loops), but that could be crosstalk from some other line (like the /CS).

    We are using a powered breadboard, which isn't the most quiet of electronic environments, but I hesitate to solder up a board with ground planes and everything if we can't make it work at all under these conditions.

    2441fa37fe78dfa939b5c82be308f798.tiff

    Thanks,

    George

Children
No Data