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.

[urgent] LMP90100 multi-channel read data out

Other Parts Discussed in Thread: LMP90100

I am using the LMP90100 that needs to acquire two channels (CH0 and CH1).

I am running the LMP90100 in ScanMode2: Multiple-Channels Continuous Scan with first channel = 0 and last channel = 1.

I am reading out the  results and I see that sometimes both values are correct, sometimes I read twice channel 0, sometimes twcie the channel 1 and sometimes twice the channel 1.

I tried to sychronize the reading on drdyb, but still the same issue. I also tried to read twice 3 bytes without the streaming mode, it's the same.

When are the data copied from internal register to ADC_DOUT register? How to restart to read the first channel properly (if not all data are read)?

What should I do?

Best regards

  • Hello,

    The system is pipelined so that while the conversion of the other channel is going on the previous conversion is available. If you are reading the data and the conversion of the next channel becomes available during the read, the LMP90100 lets you finish the read and then puts the new data in to the ADC data registers.
    The easiest way to know when there is new data available is to set up the DRDYB line as a separate line and monitor it. This is shown in Case 3 in section 9.5.11 in the datasheet. When DRDYB is asserted read the ADC data bytes, along with SENDIAG_FLAGS register (0x19). Bits 2:0 will tell you the channel number of the sampled channel.

    Mike
  • Dear Mike,

    Thank you for your advises. I understand that the system is pipelined. The adc first makes the conversion for the first channel and strore the results. Start the conversion of the second channel. And now:

    • if you don't read the first channel in the mean time, the converter will start the third conversion?
    • It will wait until the first result is read, then place the second results in the output buffer and start the third conversion?

    . At present I am usîng only DO, DRDYB is bot mapped to an I/O pin. If I am right the only way to know if a conversion is finished is to monitor SENDIAG_FLAGS?

    Best regards

  • Hi Christian,

    As an example, suppose you have 3 channels. The LMP90100 will convert the first channel and put the result in the ADC_DOUT registers. It will then convert the second channel and then put the result in the ADC_DOUT register whether or not the first value has been read. As soon as it is done converting the second channel it will convert the third channel and put the result in the ADC_DOUT register whether or not the second value has been read. Then back to converting the first channel and so on. Section 9.5.8 shows how you can monitor the DRDYB signal to know when a new value has been put in the ADC_DOUT registers. You can either read it directly on the SDO or D6 pins or you can read the DT_AVAIL_B bit.

    Mike