HelloI'm trying to set up communication with AD7091R-8. In setup I send following SPI command: 0X0CFF, 0X08FF, 0XFFFF, 0XFFFF, 0X00FF. Then I periodically send 0X0020 and I'm trying to read channel 5. I'd like to read one channeland them sequential readings. I inserted pictures from the logic analyzer into the attachment. I guess I'm getting bad data. Could you help me.
On your application, please correct me if I understand it correctly, you wanted to read Ch5 only? The AD7091R-8 has channel register. This register determines what channel you want to include in the conversion. The sequence is from the lowest channel number to the highest. The conversion result then will be read by sending a read command. The SDO will clock out the results. The conversion result will include the Channel ID of the converted channel.
In your commands, it is okay to send write command to convert ch5 which will be 0x0820. Then a read command. The output should include if it is ch5 result in binary [101+alert+Conv result].
I still have a problem with readings of message. I have SPI mode 0 and I use MSBFIRST. Now I'm trying to read the data from the registers (address 0x00-0x09) and I have not success, because it does not go with the default values. My sending and receiving data: Send 0x03FF Read 0X01FE, Send 0x0BFF Read 0X0000, Send 0x13FF Read 0X0000, Send 0x1BFF Read 0X10C0, Send 0x23FF Read 0X0000, Send 0x2BFF Read 0X07F8, Send 0x33FF Read 0X0FFF,Send 0x3BFF Read 0X01FF, Send 0x43FF Read 0X0000,Send 0x4BFF Read 0X0FFF
Any idea what is wrong?
Here is what I suggest you can try. After power up, make sure that to initialize the AD7091R-8 properly. Please refer to the Power On Device Initialization section of the datasheet.
The AD7091R-8 default channel conversion is channel 0. a CONVST pulse initiate a conversion then followed by a /CS low after conversion time elapsed, to frame the conversion result of channel 0. If you want to convert another channel, channel 5 for example, you can write to the 0x0C20. This means you will write to the channel register to convert channel 5. There is latency of one conversion before the channel is updated. The channel 5 conversion result will be clocked out after two CONVST pulse.
I have little progress. I can set the MUX, but when sending 0x0C40 I would expect switching to channel 6 but A / D will switch to channel 5. This is verified by hardware (changing the voltage to Vin5 and this voltage is on MUXout) and the software response (sending 0x0800 command and reply I get 0xA278). Everything is seen in figures.
That is good to hear about the progress. Please take note that after writing to the channel sequencer, there is a latency. The channel conversion result will be clock out after two conversion. You can refer to the figure 55 and 56 of the datasheet for the timing details for channel sequencer. By the way what is 0x0800? Was it for reading the conversion result?