I am connecting to an AD7994 from an NXP LPC17xx processor. My code is written in C using the Keil compiler. I am able to read data from the AD7994, but it always only returns one 16 bit value. I believe this is from channel 1. I have sent the 0x30 to the address register, but when I read more than 2 bytes, I get the first two repeated, rather than that from channel 2.
I have read the data sheet, but am having difficulty translating it into actual I2C routines.
Does any one have a worked example of the protocol to get the AD7994 to return data from more than one channel?
Can you share scope shots of the digital signals. You may also check ADI wiki page, for example of the AD799x family Linux driver for your reference. Please refer to the link AD7998 IIO ADC Linux Driver [Analog Devices Wiki]
I have just got the project to work. I spotted an earlier thread in this site for AD7992. The reply to it was that there should not be a i2c stop between the channel setup and the reads from the channel.
I was using the 'I2Cengine' method for communicating i2c which does not allow you control over this. I have now implemented a lower level method where I can make sure there is no unwanted i2c stop and it works.
Thanks for your response