This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS8363 Unable to read back registers in Special Mode IV

Other Parts Discussed in Thread: ADS8363

Hello,

I've got the ADS8363 working in Mode II (pseudo-differential) such that I can manually sample each of the 8 channels using one SPI port. However, since I intend to always sample all 8 channels anyway and speed is crucial, I wanted to read all of them back to back with a single RD pulse. I'd like to keep using just one SPI port to read back the data.

If I'm understanding the datasheet correctly, I can accomplish this by using Special Mode IV with the sequencer and FIFO enabled. The datasheet states that if using pseudo-differential mode (PDE = 1), then CID will be forced to 1. However, when I try to configure the registers I am unable to properly read back their settings.

Both M0 and M1 are 1. I enter Special Mode IV by enabling the SR bit.

These are the register settings I'm using:

CONFIG 0x1160

REFDAC1 0x03FF

REFDAC2 0x03FF

SEQFIFO 0xF1B0 

REFCM 0xFF00

In essence, I'd like to know:

1. How should I format the information I send the ADS8363? I'm aware I will have to use one format prior to enabling SR (and consequently CID), and another afterwards. Should I send 20 bits with SR off, and 32 bits (16 bits x 2) with SR on?

2. When can I update register settings in Special Move IV w/ pseudo-dfifferential, when can I ask the ADS8363 to read them back, and when will the ADS8363 actually read them back?

  • Hello,

    Your understanding is correct, Special Mode IV with the sequencer and FIFO enabled is a way to accomplish your goal.

    Could you please post the sequence of SPI commands you are issuing in order to configure the ADS8363?

    Then, could you please send a summary of the algorithm you are using to control the CONVST, RD, CS, and SDI lines?

    Best regards,

    Jose

  • Hi Jose,

    I was able to solve the problem outlined in my original post, but I have an additional question.

    Currently I have both the sequencer and FIFO enabled, special read is enabled, and the sequencer length set to 4. I first send a CONVST pulse, which causes the ADS8363 to bring BUSY high for each conversion or for the entire sequence, depending on the value of S[1:0]. Then I send a single RD pulse to read back all 8 channels through SDOA. This works fine.

    However, I'd like to speed the process up by beginning the read process while the later channels are being converted. The datasheet warns against doing this on page 24:

    The FIFO can be used independently from the sequencer. When both are used, the complete sequence must be finished before reading the data out of the FIFO; otherwise, the data may be corrupted. [emphasis mine]

    I therefore tried disabling the FIFO so that I could read the sequence while conversion is ongoing without corrupting the data. First I tested what would happen if I do wait for the BUSY signal to fall before reading the results. Unfortunately, this results in only the first 2 channels being read back rather than 8, even though BUSY signal indicates that it's converting all 8. If I try sending multiple RD pulses in a row (without CONVST) the same first 2 channels are read back every time. Page 24 of the ADS8363 datasheet (Rev B) states:

    The ADS8363/7363/7223 feature a programmable sequencer that controls the switching of the ADC input multiplexer in pseudo-differential, automatic channel-selection mode only. When used, a single read pulse allows reading of all stored conversion data.


    Note that there's no mention of the FIFO yet, just the sequencer. I took this to mean that by setting Sequencer Mode S[1:0] to 0b11 and Sequencer Length SL[1:0] to 0b11 that I could convert all 8 channels with a single CONVST pulse and read all 8 channels with a single RD pulse. This does not seem to be true.

    Is it possible to send a single RD pulse to read all 8 channels before the last channels are finished being sampled? (timed such that those channels will have been sampled by the time the results are read out)

  • Hello,

    If you used both SDOA and SDOB, then setting Sequencer Mode S[1:0] to 0b11 and Sequencer Length SL[1:0] to 0b11 would allow you to convert all 8 channels with a single CONVST pulse and read all 8 channels with a single RD pulse.

    However, since you are using SDOA only, you will need to store the conversion data into the FIFO because there are not enough clock cycles to shift out two channels simultaneously onto the same SDOA line before proceeding to the next conversion.

    Probably the best setting to accomplish your goal is to use both the sequencer and FIFO simultaneously. As indicated in the datasheet, the complete sequence must be finished before reading the data out of the FIFO; otherwise, the data may be corrupted.

    Hope this helps.

    Best regards,

    Jose

  • Correct me if I've misunderstood:

    If I were to use Mode III to read from SDOA and SDOB simultaneously, I can set S[1:0] to 0b11 and SL[1:0] to 0b11 without enabling the FIFO. Therefore, I will be able to use a single CONVST pulse to convert all 8 channels, and then use a single RD pulse before the last channel has finished converting to read back all 8 channels. (I'm assuming this is now possible due to the FIFO being disabled)

    If this is true, would you recommend I set S[1:0] to 0b10 instead of 0b11 so that I send the RD pulse after the ADC momentarily brings BUSY low? Like so:

    1. Pulse CONVST while providing clock signal to ADC

    2. BUSY line will go high

    3. When BUSY line momentarily goes low, pulse RD. BUSY will go high again and continue to dip when each conversion finishes, but the MCU won't care

    4. Read 4 channels' worth of information in sequence per SDO line (8 combined).

  • Hello,

    The sequence you describe is correct. You can find more information on that setup and measured results on the following document:

    http://www.ti.com/lit/pdf/sbaa210

    Hope this helps.

    Best regards,

    Jose