Norimasa Okamoto
/
lpc1549-USBROM_msc_example
USB Device ROM Stack API example program
Embed:
(wiki syntax)
Show/hide line numbers
usbd_LPC1549.c
00001 #include <rl_usb.h> 00002 #include <LPC15xx.h> 00003 00004 /* 00005 * USB Device Initialize Function 00006 * Called by the User to initialize USB Device 00007 * Return Value: None 00008 */ 00009 00010 void USBD_Init (void) 00011 { 00012 /* Set USB PLL input to main oscillator */ 00013 LPC_SYSCON->USBPLLCLKSEL = 0x01; 00014 /* Setup USB PLL (FCLKIN = 12MHz) * 4 = 48MHz 00015 MSEL = 3 (this is pre-decremented), PSEL = 1 (for P = 2) 00016 FCLKOUT = FCLKIN * (MSEL + 1) = 12MHz * 4 = 48MHz 00017 FCCO = FCLKOUT * 2 * P = 48MHz * 2 * 2 = 192MHz (within FCCO range) */ 00018 LPC_SYSCON->USBPLLCTRL = 3|(1<<6); 00019 00020 /* Powerup USB PLL */ 00021 LPC_SYSCON->PDRUNCFG &= ~(1<<23); 00022 00023 /* Wait for PLL to lock */ 00024 while(!(LPC_SYSCON->USBPLLSTAT&0x01)); 00025 00026 /* enable USB main clock */ 00027 LPC_SYSCON->USBCLKSEL = 0x02; 00028 LPC_SYSCON->USBCLKDIV = 1; 00029 /* Enable AHB clock to the USB block. */ 00030 LPC_SYSCON->SYSAHBCLKCTRL1 |= (1<<23); 00031 /* power UP USB Phy */ 00032 LPC_SYSCON->PDRUNCFG &= ~(1<<9); 00033 /* Reset USB block */ 00034 LPC_SYSCON->PRESETCTRL1 |= (1<23); 00035 } 00036 00037 /* 00038 * USB Device Connect Function 00039 * Called by the User to Connect/Disconnect USB Device 00040 * Parameters: con: Connect/Disconnect 00041 * Return Value: None 00042 */ 00043 00044 void USBD_Connect(uint8_t con) 00045 { 00046 if (con) { 00047 NVIC_EnableIRQ(USB_IRQ_IRQn); 00048 } else { 00049 NVIC_DisableIRQ(USB_IRQ_IRQn); 00050 } 00051 } 00052 00053 /* 00054 * USB Device Interrupt Service Routine 00055 */ 00056 00057 void USB_IRQ_IRQHandler(void) { 00058 pUsbApi->hw->ISR(hUsb); 00059 }
Generated on Wed Jul 13 2022 18:15:15 by 1.7.2