Post Go back to editing


There is a AD7386 in our custom board, 4 analog input  channels, so seuqencer mode is used. But the sampled data tell us channel sequece is uncertainty, sometimes AinA0 and AinB0 are at the front, and somrtimes  AinA1 and AinB1 are at the front. The registers are written at the following sequence:

0xa0ff  0x9400 0x0000 0x0000 0x0000  . . .

Could somebody tell me how to solve this question?

  • Hi TRolan721,

            The AD7386 has two ADCs(ADC A and ADC B) that samples data simultaneously. It also has a multiplexer that switches each ADC input (ADC A and ADCB) from its own channel 0 and channel 1. The AD7386 has two mode to switch the multiplexer either channel mode (CH bit) or sequencer mode (SEQ bit). The channel mode (CH bit) selects either channel 0 or 1 is selected on the respective ADC. The sequencer mode (SEQ bit) will have an alternate sequence of channel 0 and channel 1, that means it samples on the falling edge of CS on channel 0 and on the next falling edge of CS, it will then sample channel 1. Then the sequence continues until it is disabled.

         In your register write sequence, I can see that you perform reset, followed by a write to configure register 1 enabling the sequencer mode then this is followed by suppose to be a read but an invalid register address (0x0000). The last write you made to the register which is enabling the sequencer mode, would give an alternating result of channel 0 and channel 1 of each ADC (ADCA and ADC B).



  • Hi Jonathan,

        Thank you for your reply !

        The question is which channel of channel 0 and channel 1 is the 1st given chennel after sequncer bit is set at sequencer mode? I found sometimes channel 0 first, and some times channle 1 first. By the way ,the channle mode can work well.



  • Hi Rolan,

          Apologies for the confusion there. To answer your question, after the SEQ=1 is enabled, the channel that are converted should be channel 0s. When did you start reading the result? Did that happen on the next CS falling edge after the SEQ=1 is enabled? From the sequence that you have given, I can see that there are no further write activity happened after SEQ=1 is enabled. Do you know of a particular event when channel 0 first or channel1 first, or this happen in random.