LP Transmitter Wakeup

Dependencies:   max32630fthr USBDevice

Committer:
MI
Date:
Tue Jan 09 19:10:44 2018 +0000
Revision:
0:41ed595f83f5
Child:
1:8834bc22c2e7
Initial Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MI 0:41ed595f83f5 1 #include "mbed.h"
MI 0:41ed595f83f5 2 #include "max32630fthr.h"
MI 0:41ed595f83f5 3 #include "USBSerial.h"
MI 0:41ed595f83f5 4 #include "mxc_config.h"
MI 0:41ed595f83f5 5 #include "lp.h"
MI 0:41ed595f83f5 6 #include "gpio.h"
MI 0:41ed595f83f5 7
MI 0:41ed595f83f5 8 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
MI 0:41ed595f83f5 9
MI 0:41ed595f83f5 10 DigitalOut rLED(LED1);
MI 0:41ed595f83f5 11 DigitalOut gLED(LED2);
MI 0:41ed595f83f5 12 DigitalOut bLED(LED3);
MI 0:41ed595f83f5 13
MI 0:41ed595f83f5 14 DigitalIn sw1(SW1);
MI 0:41ed595f83f5 15
MI 0:41ed595f83f5 16 gpio_cfg_t gpioLP0;
MI 0:41ed595f83f5 17
MI 0:41ed595f83f5 18 #define LP0_WAKE_GPIO_PORT 2
MI 0:41ed595f83f5 19 #define LP0_WAKE_GPIO_PIN PIN_3
MI 0:41ed595f83f5 20
MI 0:41ed595f83f5 21 // *****************************************************************************
MI 0:41ed595f83f5 22 void Wakeup_blinks()
MI 0:41ed595f83f5 23 {
MI 0:41ed595f83f5 24 int numBlinks = 3;
MI 0:41ed595f83f5 25
MI 0:41ed595f83f5 26 bLED = LED_OFF;
MI 0:41ed595f83f5 27 gLED = LED_OFF;
MI 0:41ed595f83f5 28
MI 0:41ed595f83f5 29 while(numBlinks) {
MI 0:41ed595f83f5 30 rLED = LED_ON;
MI 0:41ed595f83f5 31 wait_ms(167);
MI 0:41ed595f83f5 32 rLED = LED_OFF;
MI 0:41ed595f83f5 33 wait_ms(167);
MI 0:41ed595f83f5 34
MI 0:41ed595f83f5 35 numBlinks--;
MI 0:41ed595f83f5 36 }
MI 0:41ed595f83f5 37
MI 0:41ed595f83f5 38 }
MI 0:41ed595f83f5 39
MI 0:41ed595f83f5 40 // *****************************************************************************
MI 0:41ed595f83f5 41 void Powerdown_blinks()
MI 0:41ed595f83f5 42 {
MI 0:41ed595f83f5 43 gLED = LED_OFF;
MI 0:41ed595f83f5 44
MI 0:41ed595f83f5 45 int numBlinks = 3;
MI 0:41ed595f83f5 46
MI 0:41ed595f83f5 47 while(numBlinks) {
MI 0:41ed595f83f5 48 bLED = LED_ON;
MI 0:41ed595f83f5 49 wait_ms(167);
MI 0:41ed595f83f5 50 bLED = LED_OFF;
MI 0:41ed595f83f5 51 wait_ms(167);
MI 0:41ed595f83f5 52
MI 0:41ed595f83f5 53 numBlinks--;
MI 0:41ed595f83f5 54 }
MI 0:41ed595f83f5 55
MI 0:41ed595f83f5 56 }
MI 0:41ed595f83f5 57
MI 0:41ed595f83f5 58 /******************************************************************************/
MI 0:41ed595f83f5 59 int main(void)
MI 0:41ed595f83f5 60 {
MI 0:41ed595f83f5 61 //check if starting at main because of LP0 wake-up
MI 0:41ed595f83f5 62 if(LP_IsLP0WakeUp())
MI 0:41ed595f83f5 63 Wakeup_blinks(); //blinks red LED 3 times
MI 0:41ed595f83f5 64 else {
MI 0:41ed595f83f5 65 //We did not wake up from sleep and this is first power-on
MI 0:41ed595f83f5 66
MI 0:41ed595f83f5 67 }
MI 0:41ed595f83f5 68
MI 0:41ed595f83f5 69 //initialize LEDs
MI 0:41ed595f83f5 70 gLED = LED_ON;
MI 0:41ed595f83f5 71 bLED = LED_OFF;
MI 0:41ed595f83f5 72 rLED = LED_OFF;
MI 0:41ed595f83f5 73
MI 0:41ed595f83f5 74 //use the gpio_cfg_t type to control GPIO operation with built-in Maxim library functions
MI 0:41ed595f83f5 75 gpioLP0.port = LP0_WAKE_GPIO_PORT;
MI 0:41ed595f83f5 76 gpioLP0.mask = LP0_WAKE_GPIO_PIN;
MI 0:41ed595f83f5 77 gpioLP0.func = GPIO_FUNC_GPIO;
MI 0:41ed595f83f5 78 gpioLP0.pad = GPIO_PAD_INPUT_PULLUP;
MI 0:41ed595f83f5 79 GPIO_Config(&gpioLP0);
MI 0:41ed595f83f5 80
MI 0:41ed595f83f5 81 while(1) {
MI 0:41ed595f83f5 82 //Wait for user to push sw1 to enter LP0
MI 0:41ed595f83f5 83 if(sw1 == 0)
MI 0:41ed595f83f5 84 {
MI 0:41ed595f83f5 85 Powerdown_blinks(); //blinks blue LED 3 times
MI 0:41ed595f83f5 86
MI 0:41ed595f83f5 87 //Clear existing wake-up config
MI 0:41ed595f83f5 88 LP_ClearWakeUpConfig();
MI 0:41ed595f83f5 89
MI 0:41ed595f83f5 90 //Clear any event flags
MI 0:41ed595f83f5 91 LP_ClearWakeUpFlags();
MI 0:41ed595f83f5 92
MI 0:41ed595f83f5 93 //configure wake-up on GPIO
MI 0:41ed595f83f5 94 LP_ConfigGPIOWakeUpDetect(&gpioLP0, 0, LP_WEAK_PULL_UP);
MI 0:41ed595f83f5 95
MI 0:41ed595f83f5 96 //interrupts are disabled in LP_EnterLP0
MI 0:41ed595f83f5 97 LP_EnterLP0();
MI 0:41ed595f83f5 98
MI 0:41ed595f83f5 99 //firmware will reset with no prior knowledge on wake-up
MI 0:41ed595f83f5 100 }
MI 0:41ed595f83f5 101 }
MI 0:41ed595f83f5 102 }