Suspend Mode on the CY3654-P05.

Version 1
    Question: How does the suspend function work on the CY3654-P05 development kit? How does the firmware suspend/resume work?



    We try to make the emulator as close to real silicon as possible. Unfortunately, there're still some differences. Operating in suspend mode is one of those differences. When the 3654 is in suspend mode, the registers and RAM cannot be read and the user cannot single step through his program. The emulator wakes up when it sees bus activity or GPIO interrupt. The emulator may not work properly if the wakeup timer interrupt is enabled while in suspend mode. Once suspended, any bus activity (D- = LOW), GPIO, or Wakeup Timer interrupts wake the part up. Developers need to make sure that interrupts that are intended to wake the part up are enabled prior to executing the suspend instruction (suspend the processor). For example, to use the GPIO interrupt to wake the chip up from suspend, developers need to have ALL of the followings: enable the Interrupt Polarity; enable the individual GPIO interrupts in the Port Interrupt Enable Register; enable the GPIO interrupt the Global Interrupt Register, and make sure the Interrupt Enable Sense Bit is set (bit 2, 0xFF register, set this bit by "EI" instruction).  The 1ms interrupt is usually where the processor checks for bus activity and suspends the micro if no bus activity is detected in 3ms. As soon as the SUSPEND bit in the 0xFF register is set, the part is suspended and waits for a wake up event. Once it sees a wakeup event, the clock starts and it executes the instruction that follows the one that put it into suspend. Therefore, a "nop" instruction should be the first instruction to be executed after the wake up event. For a sample code of the suspend/resume, see the 1ms_ISR in the framework or any of the reference examples.