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 Idle Mode Question on How to Enter Sleep Mode

Other Parts Discussed in Thread: ADS1258, CC2540, ADS1248, ADS1220

Due to higher than expected current draw, I am suspecting that my ADS1258 is not entering sleep mode when I want it to.  There are two idle modes, standby and sleep.  The datasheet says standby is nominally 5 or 6 mAmp and sleep is nominally 2.1 mA.  My system is showing continuous draw of about 6 to 7 mA and this appears to cut my battery life.

 

I am running in autoscan mode with the start pin tied low and triggering conversions with the pulsed convert method.  I want to read one sample from each of 4 channels then sleep for ~200 ms.  This leaves lots of time for sleeping but I wonder if I am truly sleeping or just stuck in standby mode.

I set CONFIG1 bit 7 to 1 (this selects idle mode sleep) and I have the START pin tied low.  According to my reading of the datasheet, this should be sufficient to cause the device to sleep after each conversion until the next pulsed convert command is sent.  Somewhat ambiguously the datasheet also implies that a transition from high to low on the START pin is required to trigger the IDLE mode entry.

Question: in autoscan, using pulsed convert mode, is it necessary to toggle the start pin to enter sleep mode?  Or should that idle mode transition occur automatically following each conversion (assuming Start is tied low)?

 

  • Hi Eric,

    To answer your question:

    When using pulse convert mode and auto-scan mode the ADS1258 should go into an idle mode (automatically) after completing a conversion.

    Toggling START is just one way to use the pulse convert mode. It sounds like you are using the other option - the pulse convert command (0x9X).

    I would suggest reading back the CONFIG1 register to make sure IDLMOD is set correctly - but by default it should be set to 1 (sleep mode).

    Is the ADS1258 operating in pulse convert mode?...by that I mean, do you observe the ADS1258 behaving as it should: you should only see one conversion result or one /drdy pulse after starting a new conversion.

    Another alternative would be to use power-down mode, instead of the idle mode. This would further reduce the overall power consumption. You sleep for 200ms so you have plenty of time to wake the device up again.


    Best Regards,
    Chris

  • Hi Chris,

    Thanks!  Great Answer.  Yes, I am using the pulse convert command.  As part of my initialization process I send the CONFIG registers and then read them all back to make sure they match.  If they don't match what I sent, then I set an error flag and abort.  So I am pretty sure the CONFIG1 took.

    It's been a while since I had the SPI interface up on a scope, but from what I recall everything looked normal.  I don't remember if I specifically looked at the DRDY pin though.  Mostly I was looking at the send/receive data. If I get a chance I will check the DRDY pulses.

    Thanks for the suggestion on the Power Down.  I was going to try that but was afraid on power up my registers would be lost and would have to reconfigure the ADS1258 all over again.  Is it true that I can just go to power down and then on wake up just start conversion again (after appropriate delay of course)?  Or would I need to resend the ADC registers?

    Thanks again!

    Eric

  • Hi Eric,

    Sorry for the delayed response. Have you made progress on this?

    Yes, the ADS1258 should retain the register settings in power-down mode.

    The only other thing that comes to mind as a possible reason for the higher current would be if you were the ADS1258 GPIOs to drive something else in your system. I'd be glad to review your schematic if you like. (You can send it to pa_deltasigma_apps@ti.com instead of posting it on the forum).

    Best Regards,
    Chris

  • Thanks Chris.  I think we have a solid theory on where the power is going.  We are gearing up to try it out and will let you know how it goes.  Basically we have a CC2540 BLE chip in the circuit that is driving the ADS1258 via the SPI interface.  We have based our CC2540 application on the pre-canned "Heart Rate Monitor" bluetooth low energy profile and the demo App downloaded from TI.  The amount of current draw is consistent with a CC2540 which is not going into sleep mode.  I think we just assumed that the CC2540 would go to sleep between sampling cycles.  I think we need to actually modify the code to put it into PM2 (Power Mode 2) which will power down everything but the sleep timer.  With that and the power down of the ADS1258 we should be good to go for about 100 hours on a couple of coin cell batteries.

    Thanks again for the help.  That's great to know I don't have to reconfigure the ADS1258 on wakeup.

    Eric

  • Hi Chris, just to close the loop on this thread, It's all working great now.  After each sampling cycle I set the PWDN pin to power off the ADS1258 and then power it up shortly before the next sampling cycle (generally 200 mSec for our application).  It does take about 15 or 20 milliseconds for the ADC to be Data Ready, so I wake the sampling thread up a bit early and start the ADC then set a timer for 20 milliseconds and release the thread so the processor can do it's other tasks while the ADC is spinning up.  I could do this with an interrupt but this way works fine and is easier for me.  Also the 15 or 20 second wakeup is presumably to get the crystal oscillator stabilized and our theory is that instead of using a crystal oscillator, if we piped in a 16Mhz clock from the processor then we could wake it up even faster.

    With this improvement in the software our battery life is now 3 times longer than it was when operating in Idle mode instead of full power down between samples.  We're looking elsewhere now in order to get another 3x longer battery life, but also swapping in an ADS1248 instead of the 1258 (recommended by our hardware expert but seems like a good choice and has some extra features like programmable gain).

    Thanks again for all your help.

    Eric

  • Hi Eric,

    Good to hear from you and thanks for the update! Sounds like you're making great progress!

    The ADS1248 is a great option and would bring your power consumption down significantly! One thing to be aware of is the required external capacitive load needed with the internal reference. This reference capacitor increases the reference settling time.

    Another great option may be the ADS1220. It's power consumption is comparable to the ADS1248, but would allow you to turn it off and wake it up quickly. It's internal reference does not require an external capacitive load. Therefore, the internal reference settles within the 50us that is also needed for the internal oscillator to settle. The ADS1220 also holds the register settings in power-down mode.

    Best Regards,
    Chris