How to enable and use USB Sleep interrupt on a K64 using PE and sdk1.3

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to enable and use USB Sleep interrupt on a K64 using PE and sdk1.3

1,493 Views
inorman
Contributor III

Hi has anyone tried enabling and using the USB sleep interrupt?  This is on a usb cdc device application,

 

It looks like I should be calling   usb_hal_khci_enable_interrupts(INTR_SLEEP);

But how and where do I write the interrupt handler to deal with this event?   

 

Or can I use processor expert to generate the interrupt to go in events.c like other interrupts.

 

Thank you for you time.

Ian

Labels (1)
0 Kudos
Reply
2 Replies

1,076 Views
inorman
Contributor III

So far I've found Setting the parameter 

/* Advance suspend resume */
#define USBCFG_DEV_ADVANCED_SUSPEND_RESUME (1)

in usb_device_confih.h should enable the usb sleep interrupt.

Then I've put my usb interrupt handler in events.c  

void USB0_IRQHandler(void) 
{
      GPIO_DRV_TogglePinOutput(CPU_LED); //CPU_LED toggle

}

But I've not seen any sign if the interrupt being triggered.

Is there another enable I'm missing somewhere?

0 Kudos
Reply

1,076 Views
isaacavila
NXP Employee
NXP Employee

Hello Ian,

USB0_IRQHandler must be reserved for USB stack and should not be modified by user.

If you want to enable sleep interrupt, then, as you already saw, you need to enable suspend option on usb_device_config.h:

/* Advance suspend resume */
#define USBCFG_DEV_ADVANCED_SUSPEND_RESUME (1)

After that, all suspend events will be attend on USB_Device_callback (where other events such as bus reset, enumeration complete, among others are handled), for this basic example, I print on console that suspend event is received and increment a counter:

    case USB_DEV_EVENT_SUSPEND:
            suspend_times++;
            USB_PRINTF("SUSPEND MODE: %d\r\n", suspend_times);
        break;

    case USB_DEV_EVENT_ENUM_COMPLETE:   /* Device enumerated process complete */
      /* Write your code here ... */
      break;

This is all you need to do in order to enable sleep interrupt on USB stack from KSDK 1.3

I hope this helps!

Regards,

Isaac

0 Kudos
Reply