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.

ADS1258: ads1258 data read issue with the direct channel read (no command )

Part Number: ADS1258

Hello..

i am making a spi_master for the ads1258 to read the data in direct channel read(No command ) .

i have some questions..

1. if DRDY getting into low if i send sclk on first falling edge DRDY move high . Then how many sclk  clock should i send to slave for i need to read all 29 channel in direct data read (no command). Where sclk i am giving 12.5 mhz. 

2. the DRDY moves to low for every 1 channel  for all 29 channels .

3.then How the DRDY will signal works

  • Hi Naresh,

    I am a bit confused by your request here:

    1. Can you share your schematic and register settings?
    2. Have you followed the guidelines outlined in the Configuration Guide on page 42 of the ADS1258's datasheet?
    3. Are you following the instructions for "Channel Data Read Direct" mode on page 30?
    4. What do you mean by "read all 29 channels", since the ADS1258 only offers 16 channels?

    I am still not clear what challenge you are facing. It would be helpful to understand what you have tried so far, and what specifically is not working for you.

    -Bryan

  • Hello Bryan..

    for the point you asked 4.

    table 11 page number 35 in ADS1258 datasheet. there it showing the 29 channels of data . i should know adc as only 16 channel inputs . when it is in direct read (no command ) it provide the data for the 29 channels. 

    i would like to know how would i configure the sclk ,cs , mosi, for the direct read (no command). i did't understand when i go through the data sheet.

    1. what i am doing is now i am send sclk when ever DRDY get into low and i am stoping sclk after the 64 sclk clock pulses and i am making the cs as high after the 64 sclk pulses again i am waiting for the next DRDY getting into low .when ever DRDY getting into low on that time i am sending 64 sclk clock pulse. Is what ever i am doing now is correct formate for the direct data read are how would i do this.

  • Hi Naresh,

    Just to clarify, I think you are referring to the ADS1258-EP datasheet. In the standard grade device (ADS1258), Table 13 is the "Channel ID and Measurement Order (Auto-Scan Mode)" table, and this is on page 34. I just want to make sure we are referring to the same table and the same device.

    If this is correct, then yes I agree that there are 29 options to measure using auto-scan mode, but I assume you are only using a subset of them. I would not expect you to take both differential and single-ended measurements using the same channels. That is not really the intent of how auto-scan mode is defined, though it is possible to operate the device in this manner. If you provided your register settings, it would be more clear to me how you are operating the ADC.

    To begin conversions, ensure that the START pin is high. To read data, you need to clock out either 24 (STATUS byte disabled) or 32 (STATUS byte enabled) bits. If you are using Auto-Scan mode, then the device will loop through whichever channels you have selected in registers 03h through 06h (MUXDIF through SYSRED). You will know the next channel data is ready when DRDY goes low. Then you will need to issue 24 or 32 SCLKs to clock out the data for that channel. It is recommended to monitor DRDY with your controller to know when the next data is ready. When DRDY goes low again, the next channel's data is ready, so you must issue 24 or 32 SCLKs again.

    You must repeat this process as long as you want to read data. If you want to stop converting, you can take the START pin low.

    -Bryan

  • Hello Bryan..

    i want know one thing i am sending 32 sclk cycles and i am reading the data on this clock only after that 32 sclk i am making the cs as high i am sending this sclk on every DRDY low . 

    1. ON every DRDY indicates one channel start from 0 to 29 channels after 29 channel again it will start from 0 to 29 channels 

    2. How would i know which channel data it is

  • Hi Naresh,

    1. In Auto-Scan mode, the ADS1258 automatically scans and measures the selected channels, either in a continuous loop or pulse-step fashion, under the control of the START pin or start command software. The channels are selected for measurement in registers MUXDIF, MUXSG0, MUXSG1 and SYSRED.

    DRDY asserts low when the channel data is ready. At the same time, the converter indexes to the next selected channel and, if the START pin is high, starts a new channel conversion. Otherwise, if pulse converting, the device enters the idle mode.

    A direct data read requires the data to be read before the next occurrence of DRDY or the data for that channel are overwritten with the new data from the next channel. This type of data read requires synchronization with DRDY to avoid this conflict.

    2. You can identify the channel via bits 0 through 4 in the STATUS byte. See the image below. Note the STATUS byte can only be enabled using Auto-Scan mode.

    -Bryan

  • Hello..

    I am doing direct data read operation for the adc1258 what my issues is i am getting the same channel data for two times .

    1.i just sync with the DRDY when ever it went low i am sending spi SCK to that on first falling DRDY went to low it is happening properly .

    2. My issue is it giving only 16 channel data for the direct data read but in data sheet it mentioned as 29 channel.if it is 16 channel also the channels are shiftting.same channel for example 0x88 is comming two times like one first DRDY went low it comming 0x88, on second DRDY went low also i am getting 0x88 some time.i am not able to get the channel ID one by one. it is sending random channels for example 0x8d next it is sending 0x8f.

    Please help me with this how to read the ads1258 data in direct read.

  • Hi Naresh,

    Can you please post your register settings and your schematic? That might help diagnose the issue.

    I will reiterate that the ADC does not have 29 channels, it has 29 channel configuration options in auto-scan mode. As I have said before, I would not expect anyone to use all 29 options, since these will be both single-ended and differential measurements using some of the same channels.

    Is that what you intended to do? What is the actual goal of this project?

    -Bryan

  • Hello..

    i am able to get thee data from adc1258  without any issues but if i give input as 10 v out put digital value i am not able to get the 10 v . i am getting 9.1 v  as for all channels if i give 5 v as input output didital value i am getting 4.56 v 

  • Hi Naresh,

    It seems like you have a small gain error in your system. I would suggest reading back the OFFSET and GAIN values (ADC's offset and gain error, respectively) and manually correcting for this in your MCU to see if the issue gets better. There may be gain errors related to external components as well e.g. external amplifiers, which the GAIN and OFFSET values will not correct for however. You could then perform a system offset and gain calibration instead. This video explains how to perform a system offset and gain calibration in more detail.

    I will also point out that the ADC itself does not support a 10V input directly, so I hope you are using some sort of attenuation stage before the ADC. Applying >abs max voltage (AVDD + 0.3V) to the ADC can cause permanent damage.

    -Bryan