USB Host Lite downloaded from NXP web site. Untested! Compiled, dropped on MBED, booted up, and get the console message that it is initializing the stack. I however do not have the ability to connect a USB Memory device to test it.
Diff: Uart/usbhost_uart.c
- Revision:
- 0:0826fcc5d020
diff -r 000000000000 -r 0826fcc5d020 Uart/usbhost_uart.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Uart/usbhost_uart.c Wed Jan 13 01:29:30 2010 +0000 @@ -0,0 +1,144 @@ +/* +************************************************************************************************************** +* NXP USB Host Stack +* +* (c) Copyright 2008, NXP SemiConductors +* (c) Copyright 2008, OnChip Technologies LLC +* All Rights Reserved +* +* www.nxp.com +* www.onchiptech.com +* +* File : usbhost_uart.c +* Programmer(s) : Prasad.K.R.S.V +* Version : +* +************************************************************************************************************** +*/ + +/* +************************************************************************************************************** +* INCLUDE HEADER FILES +************************************************************************************************************** +*/ + +#include "usbhost_uart.h" + +/* +************************************************************************************************************** +* INITIALIZE UART +* +* Description: This function initializes UART port, setup pin select, clock, parity, stopbits, FIFO etc +* +* Arguments : baud_rate UART baud rate (115200) +* +* Returns : None +* +************************************************************************************************************** +*/ + +void UART_Init(USB_INT32U baudrate) +{ + USB_INT32U Fdiv; + USB_INT32U pclkdiv, pclk; + uint32_t SystemFrequency = SystemCoreClock; + + LPC_PINCON->PINSEL0 |= 0x00000050; /* RxD0 and TxD0 */ + + LPC_UART0->LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ + /* Bit 6~7 is for UART0 clock divider. */ + pclkdiv = (LPC_SC->PCLKSEL0 >> 6) & 0x03; + switch ( pclkdiv ) + { + case 0x00: + default: + pclk = SystemFrequency/4; + break; + case 0x01: + pclk = SystemFrequency; + break; + case 0x02: + pclk = SystemFrequency/2; + break; + case 0x03: + pclk = SystemFrequency/8; + break; + } + Fdiv = ( pclk / 16 ) / baudrate ; /*baud rate */ + + LPC_UART0->DLM = Fdiv / 256; + LPC_UART0->DLL = Fdiv % 256; + LPC_UART0->LCR = 0x03; /* DLAB = 0 */ + LPC_UART0->FCR = 0x07; /* Enable and reset TX and RX FIFO. */ +} + +/* +************************************************************************************************************** +* PRINT CHARECTER +* +* Description: This function is used to print a single charecter through UART1. +* +* Arguments : ch charecter to be printed +* +* Returns : None +* +************************************************************************************************************** +*/ + +void UART_PrintChar (USB_INT08U ch) +{ + + while (!(LPC_UART0->LSR & 0x20)); + LPC_UART0->THR = ch; +} + +/* +************************************************************************************************************** +* PRINT STRING +* +* Description: This function is used to print a string +* +* Arguments : str Pointer to the string +* +* Returns : None +* +************************************************************************************************************** +*/ + +void UART_PrintStr (const USB_INT08U * str) +{ + + while ((*str) != 0) { + if (*str == '\n') { + UART_PrintChar(*str++); + UART_PrintChar('\r'); + } else { + UART_PrintChar(*str++); + } + } +} + +/* +************************************************************************************************************** +* PRINT FORMATTED STRING +* +* Description: This function is used to print formatted string. This function takes variable length arguments +* +* Arguments : variable length arguments +* +* Returns : None +* +************************************************************************************************************** +*/ + +void UART_Printf (const USB_INT08U *format, ...) +{ + static USB_INT08U buffer[40 + 1]; + va_list vArgs; + + + va_start(vArgs, format); + vsprintf((char *)buffer, (char const *)format, vArgs); + va_end(vArgs); + UART_PrintStr((USB_INT08U*) buffer); +}