AD7995 reading problem

I'm having trouble getting the data I'm expecting to see back from the ADC7995. Reference voltage is set to 5V, channel 0 is connected to the signal whose level I'm interested, and the other channels are tied to 5V. My I2C interface is running at 400kHz. I'm activating channel 0 only, but leaving the other configuration bits pretty much untouched.

Using a scope, I can see that the input signal is going to various voltage levels, as expected. But when I read the data back, I always get a value of around 0x190, regardless of the actual input signal value.

The ADC appears to be responding correctly to the I2C transaction (sending ack's back as needed), and the data is not all 1's or all 0's, so I'm assuming I'm at least communicating with the chip.

Any suggestions as to what might be going on here?

Joe

Parents
  • Jimmy,

    I'm afraid I can't do much right now; they're doing some construction work back in our lab and I can't get in there.

    I do have a simulation waveform I can share that shows my FPGA setting the configuration register to 0x10; this transfer looks exactly the same in the lab. (I have a generic I2C slave model in place of the ADC in my simulation.) In the screen capture, the transfer occurs between the yellow cursors; the ADC I2C slave signals are at the bottom of the window, and the I2C master signals are above them.

    I can also get a waveform that shows an I2C read from that slave model. While it isn't a read from the actual chip, it would at least show how the transfer occurs under the control of my FPGA. If that would be helpful, let me know and I'll set up a simulation to generate that.

    Due to the design of our board, we can't directly control the voltage levels on channel 0. The device driving the input to channel 0 has several sources for that signal that we can choose from, but the levels it puts out are controlled by conditions within that device that we have no control over. I have measured the voltage levels on the channel 0 input for each of the possible sources, and they are at reasonable values and are different for each source.

    If I could get into the lab, I could set the ADC up to disable channel 0 and enable one of the other channels, and then read that back. I think I tried that at some point already, and got the same results as with channel 0, but I can't swear to that.

    Joe

Reply
  • Jimmy,

    I'm afraid I can't do much right now; they're doing some construction work back in our lab and I can't get in there.

    I do have a simulation waveform I can share that shows my FPGA setting the configuration register to 0x10; this transfer looks exactly the same in the lab. (I have a generic I2C slave model in place of the ADC in my simulation.) In the screen capture, the transfer occurs between the yellow cursors; the ADC I2C slave signals are at the bottom of the window, and the I2C master signals are above them.

    I can also get a waveform that shows an I2C read from that slave model. While it isn't a read from the actual chip, it would at least show how the transfer occurs under the control of my FPGA. If that would be helpful, let me know and I'll set up a simulation to generate that.

    Due to the design of our board, we can't directly control the voltage levels on channel 0. The device driving the input to channel 0 has several sources for that signal that we can choose from, but the levels it puts out are controlled by conditions within that device that we have no control over. I have measured the voltage levels on the channel 0 input for each of the possible sources, and they are at reasonable values and are different for each source.

    If I could get into the lab, I could set the ADC up to disable channel 0 and enable one of the other channels, and then read that back. I think I tried that at some point already, and got the same results as with channel 0, but I can't swear to that.

    Joe

Children
No Data