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.

It is possible to put the complete eZdsp 5535 USB stick in sleep mode?

Hello,

I am developing a standalone system based on the eZdsp 5535 USB stick DSP and I would like to put the entire board in sleep mode when it is not in use to save batteries. It is possible to do that? If so, How can be done? I have been trying to put the DSP in low power mode turning off some peripherals but this does not seem to affect very much the power consumption of the whole USB stick board. 

Thanks,

Ramon

  • Hi Ramon,

    Please take a look at Table 1-34 in the C5535 Technical Reference Guide: http://www.ti.com/lit/ug/spruh87c/spruh87c.pdf

    You'll see a list of all power configuration modes; RTC only mode is the closest to what you are looking for.

    Hope this helps.

  • Hello Jon M,

    I have tried to put the C5535 in RTC only mode using then code attached below (last two lines of code). Unfortunately this makes the algorithm stop working and even if I use an RTC interrupt I can not manage my algorithm to keep on running. I would appreciate if you could give me any clue to what I am doing wrong.

    Thanks,

    Ramon

    *((volatile ioport unsigned *)(0x0001)) = 0x000E; // Enable periph clocks in idle control register
    asm("\tnop_16"); // flush the pipeline
    asm("\tnop_16");
    asm("\tnop_16");
    asm("\tnop_16");
    asm("\tnop_16");
    asm("\tnop_16");
    asm("\tidle"); // execute IDLE instr to apply changes

    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_TMR2CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_TMR1CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_I2S1CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_I2S0CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_EMIFCG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_TMR0CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_MMCSD1CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_I2CCG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_MMCSD0CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_DMA0CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_UARTCG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_SPICG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR1, SYS_PCGCR1_I2S3CG, DISABLED);

    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR2, SYS_PCGCR2_ANAREGCG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR2, SYS_PCGCR2_DMA3CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR2, SYS_PCGCR2_DMA2CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR2, SYS_PCGCR2_DMA1CG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR2, SYS_PCGCR2_USBCG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR2, SYS_PCGCR2_SARCG, DISABLED);
    CSL_FINST(CSL_SYSCTRL_REGS->PCGCR2, SYS_PCGCR2_LCDCG, DISABLED);

    rtcConfig.rtcyear = 0;
    rtcConfig.rtcmonth = 0;
    rtcConfig.rtcday = 0;
    rtcConfig.rtchour = 0;
    rtcConfig.rtcmin = 0;
    rtcConfig.rtcsec = 0;
    rtcConfig.rtcmSec = 0;

    rtcConfig.rtcyeara = 0;
    rtcConfig.rtcmontha = 0;
    rtcConfig.rtcdaya = 0;
    rtcConfig.rtchoura = 0;
    rtcConfig.rtcmina = 0;
    rtcConfig.rtcseca = 0;
    rtcConfig.rtcmSeca = 0;

    rtcConfig.rtcintcr = 0x0002;

    /* Set the RTC init structure */
    InitDate.year = 0;
    InitDate.month = 0;
    InitDate.day = 0;

    InitTime.hours = 0;
    InitTime.mins = 0;
    InitTime.secs = 0;
    InitTime.mSecs = 0;


    /* Register the ISR function */

    isrAddr.SecEvtAddr = rtc_secIntc;


    status1 = RTC_setCallback(&rtcDispatchTable, &isrAddr);
    IRQ_globalDisable();
    IRQ_clearAll();
    IRQ_disableAll();
    IRQ_setVecs((Uint32)&VECSTART);
    IRQ_clear(RTC_EVENT);
    IRQ_plug (RTC_EVENT, &rtc_isr);
    IRQ_enable(RTC_EVENT);
    IRQ_globalEnable();

    /* Reset the RTC */
    RTC_reset();

    CSL_FINST(CSL_RTC_REGS->RTCPMGT, RTC_RTCPMGT_BG_PD,SET);
    CSL_FINST(CSL_RTC_REGS->RTCPMGT, RTC_RTCPMGT_LDO_PD,SET);