Ilya I
/
pub_UsbHost
Diff: main.cpp
- Revision:
- 0:1802fb31b938
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 21 01:15:42 2010 +0000 @@ -0,0 +1,116 @@ +#include "mbed.h" +#include "usbhost_inc.h" + +void print_clock() +{ + int Fin = 12000000; // 12MHz XTAL + + printf("PLL Registers:\r\n"); + printf(" - PLL0STAT = 0x%08X\r\n", LPC_SC->PLL0STAT); + printf(" - CLKCFG = 0x%08X\r\n", LPC_SC->CCLKCFG); + printf(" - USBCLKCFG = 0x%08X\r\n", LPC_SC->USBCLKCFG); + + int M = (LPC_SC->PLL0STAT & 0x7FFF) + 1; + int N = ((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1; + int CCLKDIV = LPC_SC->CCLKCFG + 1; + int USBDIV = LPC_SC->USBCLKCFG + 1; + + printf("Clock Variables:\r\n"); + printf(" - Fin = %d\r\n", Fin); + printf(" - M = %d\r\n", M); + printf(" - N = %d\r\n", N); + printf(" - CCLKDIV = %d\r\n", CCLKDIV); + printf(" - USBCLKDIV = %d\r\n", USBDIV); + + int Fcco = (2 * M * 12000000) / N; + int CCLK = Fcco / CCLKDIV; + + printf("Clock Results:\r\n"); + printf(" - Fcco = %d\r\n", Fcco); + printf(" - CCLK = %d\r\n", CCLK); + printf(" - USB Clock = %d\r\n", Fcco / USBDIV); + printf("System clock: %d\r\n", SystemCoreClock); +} + +/* +************************************************************************************************************** +* COPYING A FILE +* +* Description: This function is used by the user to copy a file +* +* Arguments : None +* +* Returns : None +* +************************************************************************************************************** +*/ + +#define FILENAME_R "input.txt" +#define FILENAME_W "output.txt" +#define MAX_BUFFER_SIZE (4000) +void Main_Copy (void) +{ + USB_INT32S fdr; + USB_INT32S fdw; + USB_INT32U bytes_read; + + + fdr = FILE_Open((char *)FILENAME_R, RDONLY); + if (fdr > 0) { + fdw = FILE_Open((char *)FILENAME_W, RDWR); + if (fdw > 0) { + PRINT_Log("Copying from %s to %s...\r\n", FILENAME_R, FILENAME_W); + do { + bytes_read = FILE_Read(fdr, UserBuffer, MAX_BUFFER_SIZE); + FILE_Write(fdw, UserBuffer, bytes_read); + PRINT_Log("."); + } while (bytes_read); + PRINT_Log("\r\n"); + FILE_Close(fdw); + } else { + PRINT_Log("Could not open file %s\r\n", FILENAME_W); + return; + } + FILE_Close(fdr); + PRINT_Log("Copy completed\r\n"); + } else { + PRINT_Log("Could not open file %s\r\n", FILENAME_R); + return; + } +} + +int main() +{ + USB_INT32S rc; + USB_INT32U numBlks, blkSize; + USB_INT08U inquiryResult[INQUIRY_LENGTH]; + + print_clock(); +// UART_Init(115200); /* Initialize the serial port to view the log messages */ + Host_Init(); /* Initialize the host controller */ + rc = Host_EnumDev(); /* Enumerate the device connected */ + if (rc == OK) { + /* Initialize the mass storage and scsi interfaces */ + rc = MS_Init( &blkSize, &numBlks, inquiryResult ); + if (rc == OK) { + rc = FAT_Init(); /* Initialize the FAT16 file system */ + if (rc == OK) { + Main_Copy(); /* Call the application */ + } else { +printf("ERROR %d in FAT_Init()\r\n", rc); + while ( 1 ); + // return (0); + } +printf("All OK in main()\r\n"); + } else { +printf("ERROR %d in MS_Init()\r\n", rc); + while ( 1 ); +// return (0); + } + } else { +printf("ERROR %d in Host_EnumDev()\r\n", rc); + while ( 1 ); +// return (0); + } + while(1); +}