32 #if defined(__LPC18XX__) || defined(__LPC43XX__)
34 #include "../HAL_LPC.h"
35 #include "../../../USBTask.h"
37 #if defined(USB_CAN_BE_DEVICE)
38 #include "../../../Device.h"
42 #if defined(USB_DEVICE_ROM_DRIVER)
51 USB_REG(corenum)->USBCMD_D |= (1 << 0);
54 USB_REG(corenum)->USBCMD_D &= ~(1 << 0);
62 #define XTAL_FREQ 12000000
63 #define USB1_FREQ 60000000
69 #if defined(__LPC43XX__)
74 LPC_CGU->IDIV_CTRL[
CLK_IDIV_D] = (9 << 24) | (1 << 11) | ((core_freq / USB1_FREQ - 1) << 2);
80 #if defined(USB_CAN_BE_HOST)
84 #if defined(USB_CAN_BE_DEVICE)
95 if (XTAL_FREQ == 12000000) {
96 LPC_CGU->PLL0USB_MDIV = 0x06167FFA;
98 else if (XTAL_FREQ == 24000000) {
99 LPC_CGU->PLL0USB_MDIV = 0x030C00FF;
101 else if (XTAL_FREQ == 48000000) {
102 LPC_CGU->PLL0USB_MDIV = 0x02060007;
104 else {
LPC_CGU->PLL0USB_MDIV = 0x06167FFA; }
106 LPC_CGU->PLL0USB_CTRL = 0x601C;
107 LPC_CGU->PLL0USB_CTRL |= ((6 << 24) | (1 << 11));
110 while ((
LPC_CGU->PLL0USB_STAT & 1) == 0x0) ;
115 #if defined(USB_CAN_BE_DEVICE) && (!defined(USB_DEVICE_ROM_DRIVER))
117 USB_REG(corenum)->USBCMD_D = USBCMD_D_Reset;
119 while (
USB_REG(corenum)->USBCMD_D & USBCMD_D_Reset) ;
122 USB_REG(corenum)->USBMODE_D = (0x2 << 0) ;
126 LPC_USB0->OTGSC = (1 << 3) | (1 << 0) ;
127 #if (USB_FORCED_FULLSPEED)
139 #if defined(USB_CAN_BE_HOST)
140 USB_REG(corenum)->USBSTS_H = 0xFFFFFFFF;
141 USB_REG(corenum)->PORTSC1_H &= ~(1 << 12);
142 USB_REG(corenum)->USBMODE_H = (1 << 0);
146 #if defined(USB_CAN_BE_DEVICE)
148 USB_REG(corenum)->USBSTS_D = 0xFFFFFFFF;
149 USB_REG(corenum)->ENDPTNAK = 0xFFFFFFFF;
150 USB_REG(corenum)->ENDPTNAKEN = 0;
151 USB_REG(corenum)->ENDPTSETUPSTAT =
USB_REG(corenum)->ENDPTSETUPSTAT;
152 USB_REG(corenum)->ENDPTCOMPLETE =
USB_REG(corenum)->ENDPTCOMPLETE;
153 while (
USB_REG(corenum)->ENDPTPRIME) ;
154 USB_REG(corenum)->ENDPTFLUSH = 0xFFFFFFFF;
155 while (
USB_REG(corenum)->ENDPTFLUSH) ;
162 NVIC_EnableIRQ((corenum) ? USB1_IRQn : USB0_IRQn);
167 NVIC_DisableIRQ((corenum) ? USB1_IRQn : USB0_IRQn);
170 void USB0_IRQHandler(
void)
173 #ifdef USB_CAN_BE_HOST
178 #ifdef USB_CAN_BE_DEVICE
179 #ifdef USB_DEVICE_ROM_DRIVER
188 void USB1_IRQHandler(
void)
191 #ifdef USB_CAN_BE_HOST
196 #ifdef USB_CAN_BE_DEVICE
197 #ifdef USB_DEVICE_ROM_DRIVER