I used to work with AD7705. Now I need to configure 10 boards with AD770test AD7707.RAR7. I am getting wrong data from the chip. What am I doing wrong?
AD7707
Production
The AD7707 is a complete analog front end for low frequency
measurement applications. This 3-channel device can accept either low level input signals directly...
Datasheet
AD7707 on Analog.com
AD7705
Production
The AD7705 / AD7706 are complete analog front ends for low frequency measurement applications. These 2-/3-channel devices can accept low level input signals...
Datasheet
AD7705 on Analog.com
I used to work with AD7705. Now I need to configure 10 boards with AD770test AD7707.RAR7. I am getting wrong data from the chip. What am I doing wrong?
I am waiting for an answer.
Hi,
Sorry for the late response. I would like to clarify if your voltage reference is 2.5V? And whether you used a probe to measure your 100mV and 141mV AIN?
Also, can you provide a digital interface (scope shot) of your setup and a read back register values? Thank you.
Regards,
Rod
This archive contains the necessary information.
Oscilloscope: 1V/div, 1mS/div
I don't understand why there is only the low byte (high byte=0) in the data register. When reading, it should be approximate:
AIN1 - 139 mv (gain=16) = E1 XX
AIN3 - 2 V = (gain=1) = CC XX
Hi,
Can you provide your read back register values in table?
Also, I am hoping for a scope shot that shows your DIN, DOUT, DRDY, and SCLK simultaneously so that we can analyze their timing. Thank you.
Best regards,
Rod
Here is the table.
I have a 1-channel oscilloscope. I will try to use a logic analyzer. But there should be no problems with the timings. I used to work with AD7705 and everything works there. There is the same interface. I used those routines here. In addition, the SETUP and CLOCKXLS registers are written and read normally. And this means that the timings are correct.
Hi,
Can you share what's the difference between your AD7705 design and this new AD7707 design?
The two devices have different input channels. The AD7707 has a high level analog input voltage referenced to HICOM with a VBIAS voltage.
Looking at your AD7707 schematic, the VBIAS was also generated from the VREF but I am not sure what's the purpose of this bias if the HICOM is unused?
Have you tried to probe your REFIN pins? Is it exactly 5V?
Thanks,
Rod
I connected a logic analyzer and saw how AD7707 works. Everything was fine there, the AD7707 transmitted 2 bytes of data. And I received only one byte (low), and the high one was lost. Then I took a closer look at the program and saw an error. In the previous program with AD7705 it was as follows:
unsigned int RD_AD7705( unsigned char channel)
{ unsigned int data;
while(RDY_AD7705); // wait DRDY=0
WR_AD7705(0x38 | (channel-1)); // read DATA r-r
.....
data = SPDR; // read value in SPI data reg. (high)
data <<= 8;
And I did the following when copying to AD7707:
uint16_t Rd_7707(uint8_t channel)
{ uint8_t data; - ?????
while(RDY_AD7707); // wait DRDY=0
Wr_7707(0x38 | (channel-1));
.....
data = SPDR; // read value in SPI data reg. (high)
data <<= 8;
Therefore, the high byte was lost during processing. Everything is working fine now. I will check further.
I plan to work with channels AIN1 (PT100) and AIN3 (0 - 10V). Here is the schematic, and also screenshots of the data transfer from the logic analyzer.
I connected a logic analyzer and saw how AD7707 works. Everything was fine there, the AD7707 transmitted 2 bytes of data. And I received only one byte (low), and the high one was lost. Then I took a closer look at the program and saw an error. In the previous program with AD7705 it was as follows:
unsigned int RD_AD7705( unsigned char channel)
{ unsigned int data;
while(RDY_AD7705); // wait DRDY=0
WR_AD7705(0x38 | (channel-1)); // read DATA r-r
.....
data = SPDR; // read value in SPI data reg. (high)
data <<= 8;
And I did the following when copying to AD7707:
uint16_t Rd_7707(uint8_t channel)
{ uint8_t data; - ?????
while(RDY_AD7707); // wait DRDY=0
Wr_7707(0x38 | (channel-1));
.....
data = SPDR; // read value in SPI data reg. (high)
data <<= 8;
Therefore, the high byte was lost during processing. Everything is working fine now. I will check further.
I plan to work with channels AIN1 (PT100) and AIN3 (0 - 10V). Here is the schematic, and also screenshots of the data transfer from the logic analyzer.
Hi,
It's good to know that you have resolved your issue. If you need any help, feel free to contact us again. Thank you.
Regards,
Rod