W55RP20 dormant wakup example
This is an example of entering dormant mode and being woken up by WOL magic packet.
github link : https://github.com/WIZnet-ioNIC/WIZnet-PICO-C-EXTRAS/tree/main/examples/dormant_wakeup
Sleep mode vs Dormant mode?
Sleep mode
- Sleep Mode is a low-power state in the RP2040 where most of the system is disabled, but the main clock remains active.
- The CPU halts operation, but peripherals (e.g., UART, SPI, I2C) continue to function.
- The system can wake up from events like timer interrupts or GPIO signals.
- Suitable for low-power tasks that require quick wake-up.
Dormant mode
- Dormant Mode is a deeper low-power state compared to Sleep Mode, where all clock sources in the RP2040 are disabled.
- In this mode, most peripherals and the system are completely halted, and wake-up is only possible through specific external signals (e.g., GPIO changes) or events like the XOSC (external crystal oscillator).
- It is designed for minimal power consumption but requires more time to resume operation.
How to test Dormant Wakeup example
Setup board configuration
Setup board to W55RP20_EVB_PICO in CMakeLists.txt in WIZnet-PICO-C-EXTRAS/ directory.
# Set board
#set(BOARD_NAME WIZnet_Ethernet_HAT)
#set(BOARD_NAME W5100S_EVB_PICO)
#set(BOARD_NAME W5500_EVB_PICO)
set(BOARD_NAME W55RP20_EVB_PICO)
#set(BOARD_NAME W5100S_EVB_PICO2)
#set(BOARD_NAME W5500_EVB_PICO2)
Setup network settings
Setup network configuration such as IP in 'w5x00_dormant_wakeup.c' which is the Dormant_Wakup example in 'WIZnet-PICO--C-EXTRAS/examples/dormant_wakeup/' directory.
/* Network */
static wiz_NetInfo g_net_info =
{
.mac = {0x00, 0x08, 0xDC, 0x12, 0x34, 0x56}, // MAC address
.ip = {192, 168, 11, 2}, // IP address
.sn = {255, 255, 255, 0}, // Subnet Mask
.gw = {192, 168, 11, 1}, // Gateway
.dns = {8, 8, 8, 8}, // DNS server
.dhcp = NETINFO_STATIC // DHCP enable/disable
};
/* Port */
#define PORT_WOL 9000
Setup WOL program
1. Download WOL program
https://apps.microsoft.com/detail/9nblggh51pb3?hl=ko-KR&gl=KR
2. Open WOL program and add module.
Build & Run
If the Dormant_Wakeup example works normally, you can see network information and go to dormant mode. User LED will not blinking in dormant mode.
Send WOL magic packet in WOL program. (Click right button on mouse)
You can see module is wake up by WOL packet and running. User LED will blinking.
The power consumption when the wol is turned on in dormant mode and in activation mode was measured as follows.
Before send WOL packet(Dormant mode) | After send WOL packet(Idle mode) |