AnsweredAssumed Answered

AD7705 Dual Bipolar channel problem

Question asked by tombi on Sep 26, 2015
Latest reply on Sep 29, 2015 by tombi



I can get sensible readings from channel 0 but not channel 1 of this part.


I have an AD7705 configured with both channels in bipolar mode with buffering disabled. AIN1(-), and AIN2(-) are both tied to the REFIN(+). AIN1(+) and AIN2(+) are each connected to the output of opamps and the voltages can be between 0 and VDD. I am using a 2MHz crystal.


When I read channel 0 I get sensible values but when I read channel 1 it is mostly around 32678 regardless of the voltage on the AIN2(+) pin. If the voltage on AIN1 is low (close to zero) I find that channel1's value changes and goes lower. The voltages I measure with my DMM at AIN1(+) and AIN2(+) are what I would expect but this isn't reflected in the conversion output.


I thought it could be that I am not waiting for the data to be ready correctly. I tried both using the DRDY line and polling the DRDY bit of the comms register.


My initialization sequence is:

Write 0x20 to comms register (write clock register)

Write 0x8 to the clock register (So CLK=0, CLKDIV=1,FS1,2=0)

Write 0x10 to comms (write setup register)

Write 0x40 to setup (Self Cal,Gain1, not buffered, no fsync)

(Wait for data ready)

Write 0x11 to comms register (Channel 1)

Write 0x40 to setup register (as above)

(Wait for data ready)


When requesting a value I will:

Write 0x38 to the comms register

(Wait for data ready)

Read the value


When reading channel 1 it is 0x39 but the same.


I also tried using the data ready bit in which case I would

Write 0x8 (or 0x9 for channel 1)

Read the value. Is DRDY zero? If no go back to write 0x8 and so on.

Write 0x38 (or 0x39)

read the data.


I also tried doing a comms reset before reading (by writing 4 0xff bytes) but this didn't help.

I tried writing the setup register every time I read from a channel this also didn't help.


Also if I use the data ready line instead of the data ready bit technique, the first conversion after changing from channel 1 to 2 or vice versa is different.


I read the FAQ and I think I am following the sequence described for switching channels. Also the FAQ is a bit confusing on this point as it says "(channels AIN1-AIN2 and AIN3-AIN4 being used)" which doesn't make sense for a AD7705 or a AD7706 (7705 has AIN1(+), AIN1(-) and AIN2(+) and AIN2(-). 7706 has AIN1 - AIN3 and COMMON. But no AIN4).


Really stuck - any help appreciated.