ADSP-BF609 Deep Sleep to FULL ON

Hi all,

     I am working on adsp-bf609 and try to put the adsp in deep sleep mode using "adi_pwr_SetPowerMode(ADI_PWR_MODE_DEEP_SLEEP)"

     and called "adi_pwr_EnableWakeupSignal (ADI_PWR_WAKEUP1, ADI_PWR_WAKE_POL_HIGH, true);" to wakeup using  PB15 as the wakeup signal(PB15 is a button).

    I want to know how could I wakeup from the deepsleep mode and hibernate mode.

     Can you give me an example code to help me know how to wake up the dsp to full on from deep sleep and hibernate?


[edited by: Dart at 12:20 PM (GMT -4) on 25 Aug 2021]
  • 0
    •  Analog Employees 
    on Aug 27, 2021 10:22 AM


    For Deep sleep mode:

    Please find the attached working code of sleep mode for ADSP-BF609 EZKIT. Please boot the attached code from flash instead of running via emulator.

    In this project, core0 goes to Deep sleep mode and we can wakeup core0 from deepsleep by pressing SW10 pushbutton(Wakeup source, which is generating a CGU event. Upon CGU event, it raises a software interrupt).Before Core0 goes to deepsleep, it sets the LED1. After this, core0 goes to DeepSleep. We can confirm this by monitoring the state of LED1. LED1 will be remain set(Glow) until you press SW10. The moment you press SW10, it wakes up Core0 and LED1 gets clear(OFF) and LED2 sets(glows).
    In this project, we are not using core1 at all. Here core1 is just enabled. We are not monitoring the state of core1.

    For Hibernate mode:
    Please find the attached working code of Hibernate mode for ADSP-BF609 EZKIT.
    Please boot any led blinking code in flash (Boot mode-001 parallel flash boot) and after it done,ensure that Boot switch should be in 1 before connecting session in emulator, so it is blinking LED now as per your booted code.

    Now run the attached code in debug mode(booted Led blinking code will stop, because now it is in debug mode) and calling of adi_pwr_SetPowerMode( ADI_PWR_MODE_HIBERNATE); in code puts processor to hibernate mode.

    Please press SW10 in EZKIT to wakeup, now you can observe that processor goes to reset state and booted Led code will remain its function.


  • Hi ,

    Thanks for the reply, I have some doubt.

    Is it compulsory to boot the code from flash?

    Becoz as you said hibernate works in debug mode ryt?

    What happens if i try to run the DeepSleep code via emulator, it will work or not?


  • Hi,

    Is there any other way to wakeup the processor from deep sleep mode instead of push button (eg. timer, ethernet) ?

  • 0
    •  Analog Employees 
    on Sep 1, 2021 10:39 AM in reply to Dart


    Once the processor goes to hibernate mode, after the wakeup it won't return to debug mode. It will switch to reset state. For observation of entering reset state, already booted led blinking can be observed.

    When we run the deep sleep mode in debug mode, we can't observe the wakeup by pressing SW10. So to observe the wakeup scenario exactly, we recommend you to boot the deep sleep mode code.

    Regarding>>>>>>>>>>>>>Is there any other way to wakeup the processor from deep sleep mode instead of push button (eg. timer, ethernet)?
    We have attached sleep mode and hibernate mode codes where timer1(WS5- PG_04) is used as wakeup source. Once timer expires, it will wakeup the processor from deep sleep mode and switch from hibernate to reset state.

    Kindly boot the deep sleep mode to observe the wakeup scenario.