/** Initialises the USB hardware and sets up the USB stack by installing default callbacks. @return TRUE if initialisation was successful */ BOOL USBInit(void) { // init hardware USBHwInit(); // Manual reset to workaround silicon bug USBHwReset(); // Reset USB address USBHwSetAddress(0); // register device status interrupt handler USBHwRegisterDevIntHandler(HandleUsbDevStatus); // register control transfer handler on EP0 USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); // setup control endpoints USBHwEPConfig(0x00, MAX_PACKET_SIZE0); USBHwEPConfig(0x80, MAX_PACKET_SIZE0); // register standard request handler USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); return TRUE; }
/* * main */ int main(void) { FIO_ENABLE; pllstart_seventytwomhz() ; mam_enable(); uart0_init_115200() ; DBG(UART0,"Initialising USB stack\n"); // initialise stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); inputIsocDataBuffer[0] = 0; DBG(UART0,"Starting USB isoc datatpath test\n"); VICVectPriority22 = 0x01; VICVectAddr22 = (int) USBIntHandler; // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); vic_enableIRQ(); // connect to bus USBHwConnect(TRUE); stream_task(); return 0; }
/************************************************************************* USBInit ======= Initialises the USB hardware and sets up the USB stack by installing default callbacks. **************************************************************************/ BOOL USBInit(void) { // init hardware USBHwInit(); // register bus reset handler USBHwRegisterDevIntHandler(HandleUsbReset); // register control transfer handler on EP0 USBHwRegisterEPIntHandler(0x00, MAX_PACKET_SIZE0, USBHandleControlTransfer); USBHwRegisterEPIntHandler(0x80, MAX_PACKET_SIZE0, USBHandleControlTransfer); // register standard request handler USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest); // register USBRegisterDescriptorHandler(USBHandleDescriptor); return TRUE; }
/** Initialises the USB hardware and sets up the USB stack by installing default callbacks. @return TRUE if initialisation was successful */ BOOL USBInit(void) { // init hardware USBHwInit(); // register bus reset handler USBHwRegisterDevIntHandler(HandleUsbReset); // register control transfer handler on EP0 USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); // setup control endpoints USBHwEPConfig(0x00, MAX_PACKET_SIZE0); USBHwEPConfig(0x80, MAX_PACKET_SIZE0); // register standard request handler USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); return TRUE; }
USBSerialStream::USBSerialStream(Stream *echoStream) : m_infifo(512), m_outfifo(512), m_bTransferInProgress(false), m_bDontStartNew(false), m_bConnected(false) { // initialise stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); USBHwRegisterDevIntHandler(DevIntHandler); USBHwRegisterFrameHandler(FrameHandler); // enable bulk-in interrupts on NAKs //USBHwNakIntEnable(INACK_BI); // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); (*(&VICVectCntl0+INT_VECT_NUM)) = 0x20 | 22; // choose highest priority ISR slot (*(&VICVectAddr0+INT_VECT_NUM)) = (int)USBHandlerSerial; UART_puts("Connecting USB\n\r"); // connect to bus USBHwConnect(TRUE); }
/************************************************************************* main ==== **************************************************************************/ int main(void) { int c, i; // PLL and MAM HalSysInit(); #ifdef LPC214x // init DBG ConsoleInit(60000000 / (16 * BAUD_RATE)); #else // init DBG ConsoleInit(72000000 / (16 * BAUD_RATE)); #endif configureADCPort(AD0_3); DBG("Initialising USB stack\n"); // initialise stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); USBInitializeUSBDMA(udcaHeadArray); USBEnableDMAForEndpoint(ISOC_IN_EP); DBG("Starting USB communication\n"); #ifdef LPC214x (*(&VICVectCntl0+INT_VECT_NUM)) = 0x20 | 22; // choose highest priority ISR slot (*(&VICVectAddr0+INT_VECT_NUM)) = (int)USBIntHandler; #else VICVectCntl22 = 0x01; VICVectAddr22 = (int)USBIntHandler; #endif // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); enableIRQ(); // connect to bus USBHwConnect(TRUE); int x = 0; c = EOF; //populate source data with all 'B's for(i = 0; i < ISOC_INPUT_DATA_BUFFER_SIZE; i++ ) { inputIsocDataBuffer[i] = 'B'; } int cnt = 0; const int interval = 100000; // echo any character received (do USB stuff in interrupt) for(;;) { x++; U32 temp = cADC_Result(AD0_3); if( temp >= 0 && temp <= 1024 ) currentADCReadValue = temp; if (x == interval) { qq++; IOSET0 = (1<<11); //turn on led } else if (x >= (interval*2)) { IOCLR0 = (1<<11); //turn off led x = 0; } } return 0; }
/************************************************************************* main ==== **************************************************************************/ bool USBStart(void) { int c; // initialise stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); // initialise VCOM VCOM_init(); VICVectCntl22 = 0x01; VICVectAddr22 = (int)USBIntHandler; // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); // connect to bus USBHwConnect(TRUE); #if TCM // echo any character received (do USB stuff in interrupt) while (1) { c = VCOM_getchar(); if (c != EOF) { // show on console if ((c == 9) || (c == 10) || (c == 13) || ((c >= 32) && (c <= 126))) { DBG("%c", c); } else { DBG("."); } VCOM_putchar(c); } } return 0; #endif return true; }
/************************************************************************* main ==== **************************************************************************/ int main(void) { IODIR0 |= (1<<10);//Debug LED on the olimex 2148 dev board set to output mode IODIR0 |= (1<<11);//Debug LED on the olimex 2148 dev board set to output mode // PLL and MAM HalSysInit(); #ifdef LPC214x // init DBG ConsoleInit(60000000 / (16 * BAUD_RATE)); #else // init DBG ConsoleInit(72000000 / (16 * BAUD_RATE)); #endif DBG("Initialising USB stack\n"); // initialise stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); inputIsocDataBuffer[0] = 0; USBInitializeUSBDMA(udcaHeadArray); USBEnableDMAForEndpoint(ISOC_IN_EP); DBG("Starting USB communication\n"); #ifdef LPC214x (*(&VICVectCntl0+INT_VECT_NUM)) = 0x20 | 22; // choose highest priority ISR slot (*(&VICVectAddr0+INT_VECT_NUM)) = (int)USBIntHandler; #else VICVectCntl22 = 0x01; VICVectAddr22 = (int)USBIntHandler; #endif // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); enableIRQ(); // connect to bus USBHwConnect(TRUE); int x = 0; const int interval = 200000; // echo any character received (do USB stuff in interrupt) for(;;) { x++; if (x == interval) { IOSET0 = (1<<11);//turn on led on olimex dev board } else if (x >= (interval*2)) { IOCLR0 = (1<<11);//turn off led on olimex dev board x = 0; } } return 0; }
/************************************************************************* main ==== **************************************************************************/ int main(void) { /////////////////////////////////////////////////// // PRELUDE /////////////////////////////////////////////////// // PLL and MAM HalSysInit(); #ifdef LPC214x // init DBG ConsoleInit(60000000 / (16 * BAUD_RATE)); #else // init DBG ConsoleInit(72000000 / (16 * BAUD_RATE)); #endif DBG("Initialising USB stack\n"); // initialise stack USBInit(); // enable bulk-in interrupts on NAKs USBHwNakIntEnable(INACK_BI); // register descriptors USBRegisterDescriptors(isoDescriptors); //USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); // USBHwRegisterEPIntHandler(ISOC_OUT_EP, IsocOut); // register frame handler //USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); bulk_init(); DBG("Starting USB communication\n"); #ifdef LPC214x (*(&VICVectCntl0+INT_VECT_NUM)) = 0x20 | 22; // choose highest priority ISR slot (*(&VICVectAddr0+INT_VECT_NUM)) = (int)USBIntHandler; #else VICVectCntl22 = 0x01; VICVectAddr22 = (int)USBIntHandler; #endif // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); enableIRQ(); // connect to bus USBHwConnect(TRUE); ///////////////////////////////////////////// // FUNCTION ///////////////////////////////////////////// // int // bulk - echo // isoc A - regular - Broadcast numbers // isoc B - dma -echo // isoc C - dma ////////////////////////////////////////// // DEBUG LIGHTS ////////////////////////////////////////// int c; int x = 0; int ch ='a'; c = EOF; // echo any character received (do USB stuff in interrupt) while (1) { // Turn light on and off. x++; if (x == 400000) { IOSET0 = (1<<11); //turn on led if( ch > 'z' ) { ch = 'a'; } ch++; } else if (x >= 800000) { IOCLR0 = (1<<11); //turn off led x = 0; } } return 0; }
/************************************************************************* main ==== **************************************************************************/ int main(void) { int x = 0; const int interval = 200000; FIO_ENABLE; vic_disableIRQ(); pllstart_seventytwomhz() ; // pllstart_sixtymhz() ; // pllstart_fourtyeightmhz() ; mam_enable(); info_init(); uart0_init_115200() ; uart0_putstring("\n***Starting gfe color led test***\n\n"); uart0_putstring("\n***Board is defined as: "); uart0_putstring( infoquery_gfe_boardtag() ); uart0_putstring(" ***\n"); init_color_led(); RED_LED_OFF; BLUE_LED_OFF; GREEN_LED_OFF; printf_lpc(UART0,"5 FAST flashes...red, blue then green\n"); color_led_flash(5, RED_LED, FLASH_FAST ) ; RED_LED_OFF; color_led_flash(5, BLUE_LED, FLASH_FAST ) ; BLUE_LED_OFF; color_led_flash(5, GREEN_LED, FLASH_FAST ) ; GREEN_LED_OFF; uart0_putstring(" ** END OF TEST ""\n"); printf_lpc(UART0, "Initialising USB stack\n"); // initialize stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); inputIsocDataBuffer[0] = 0; printf_lpc(UART0, "Starting USB communication\n"); VICVectPriority22 = 0x01; // 0x0 is highest priority, 0xF is lowest VICVectAddr22 = (unsigned int)USBIntHandler; VICAddress = 0x0; printf_lpc(UART0, "addresses entered\n"); ENABLE_USB_IRQ; printf_lpc(UART0, "USB IRQ Enabled\n"); vic_enableIRQ(); printf_lpc(UART0, "vic_enable\n"); ENABLE_USB_INT; printf_lpc(UART0, "USB INT Enabled\n"); //printf_lpc(UART0, "connect to bus\n"); // // // connect to bus USBHwConnect(TRUE); // for(;;) { x++; if (x == interval) { RED_LED_ON; } else if (x >= (interval*2)) { x = 0; RED_LED_OFF; } } return 0; }
/************************************************************************* main ==== **************************************************************************/ int main(void) { int c, i; IODIR0 |= (1<<10); // PLL and MAM HalSysInit(); #ifdef LPC214x // init DBG ConsoleInit(60000000 / (16 * BAUD_RATE)); #else // init DBG ConsoleInit(72000000 / (16 * BAUD_RATE)); #endif DBG("Initialising USB stack\n"); // initialise stack USBInit(); configureADCPort(AD0_3); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); char ch = 'a'; for (i = 0; i < BYTES_PER_ISOC_FRAME; i++) { inputIsocDataBuffer[i] = ch; ch = (ch == 'z' ? 'a' : (ch + 1)); } DBG("Starting USB communication\n"); #ifdef LPC214x (*(&VICVectCntl0+INT_VECT_NUM)) = 0x20 | 22; // choose highest priority ISR slot (*(&VICVectAddr0+INT_VECT_NUM)) = (int)USBIntHandler; #else VICVectCntl22 = 0x01; VICVectAddr22 = (int)USBIntHandler; #endif // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); enableIRQ(); // connect to bus USBHwConnect(TRUE); int x = 0; const int interval = 100000; // echo any character received (do USB stuff in interrupt) for(;;) { x++; U32 temp = cADC_Result(AD0_3); if( temp >= 0 && temp <= 1024 ) inputIsocDataBuffer[ADC_INPUT_INDEX] = temp; inputIsocDataBuffer[BUTTON1_INPUT_INDEX] = ((IOPIN0 & (1<<15)) ? 1 : 0); inputIsocDataBuffer[BUTTON2_INPUT_INDEX] = ((IOPIN0 & (1<<16)) ? 1 : 0); if (x == interval) { IOSET0 = (1<<11); //turn on led } else if (x >= (interval*2)) { IOCLR0 = (1<<11); //turn off led x = 0; } } return 0; }