CYW43907 GPIO Wake from sleep

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
NiMc_1688136
Level 5
Level 5
10 sign-ins 50 questions asked 10 solutions authored

I am running the CYW43907 in sleep mode (not deep sleep).

How can i use a GPIO pin ( WICED_GPIO_6) as a wake source? I have the pin externally pulled high with a 47K resistor and attempting to pull low through a button but no luck.

    wiced_gpio_init(WICED_GPIO_6, INPUT_HIGH_IMPEDANCE );

    wiced_gpio_input_irq_enable(WICED_GPIO_6, IRQ_TRIGGER_FALLING_EDGE, gpio_callback, NULL); /* Setup interrupt */

Does not work in sleep mode, it works well in normal mode.

If i add

wiced_gpio_deepsleep_wakeup_enable( WICED_GPIO_6, IRQ_TRIGGER_FALLING_EDGE );

It still does not appear to wake up, but this also does not provide any callback mechanism to unblock a task if needed.

WICED SDK 6.2.1

0 Likes
1 Solution

Yes, thanks Priya.

For others, the following code is correct as a sleep wakeup.

    wiced_gpio_init(WICED_GPIO_6, INPUT_HIGH_IMPEDANCE );

    wiced_gpio_input_irq_enable(WICED_GPIO_6, IRQ_TRIGGER_FALLING_EDGE, gpio_callback, NULL); /* Setup interrupt */

My problem was that in my app code, i was changing the pin to an output while active for another use. What I did not know, inside of wiced_gpio_init, the ISR is disabled and the callback is cleared to NULL. This is why the input interrupt and wake was not working.

View solution in original post

3 Replies