These are the examples provided for [[/users/frank26080115/libraries/LPC1700CMSIS_Lib/]] Note, the entire "program" is not compilable!
usbhw.h
00001 /*---------------------------------------------------------------------------- 00002 * U S B - K e r n e l 00003 *---------------------------------------------------------------------------- 00004 * Name: usbhw.h 00005 * Purpose: USB Hardware Layer Definitions 00006 * Version: V1.20 00007 *---------------------------------------------------------------------------- 00008 * This software is supplied "AS IS" without any warranties, express, 00009 * implied or statutory, including but not limited to the implied 00010 * warranties of fitness for purpose, satisfactory quality and 00011 * noninfringement. Keil extends you a royalty-free right to reproduce 00012 * and distribute executable files created using this software for use 00013 * on NXP Semiconductors LPC family microcontroller devices only. Nothing 00014 * else gives you the right to use this software. 00015 * 00016 * Copyright (c) 2009 Keil - An ARM Company. All rights reserved. 00017 *---------------------------------------------------------------------------- 00018 * History: 00019 * V1.20 Added USB_ClearEPBuf 00020 * V1.00 Initial Version 00021 *----------------------------------------------------------------------------*/ 00022 00023 #ifndef __USBHW_H__ 00024 #define __USBHW_H__ 00025 00026 00027 /* USB RAM Definitions */ 00028 #define USB_RAM_ADR 0x20080000 /* USB RAM Start Address */ 00029 #define USB_RAM_SZ 0x00004000 /* USB RAM Size (4kB) */ 00030 00031 /* DMA Endpoint Descriptors */ 00032 #define DD_NISO_CNT 16 /* Non-Iso EP DMA Descr. Count (max. 32) */ 00033 #define DD_ISO_CNT 8 /* Iso EP DMA Descriptor Count (max. 32) */ 00034 #define DD_NISO_SZ (DD_NISO_CNT * 16) /* Non-Iso DMA Descr. Size */ 00035 #define DD_ISO_SZ (DD_ISO_CNT * 20) /* Iso DMA Descriptor Size */ 00036 #define DD_NISO_ADR (USB_RAM_ADR + 128) /* Non-Iso DMA Descr. Address */ 00037 #define DD_ISO_ADR (DD_NISO_ADR + DD_NISO_SZ) /* Iso DMA Descr. Address */ 00038 #define DD_SZ (128 + DD_NISO_SZ + DD_ISO_SZ) /* Descr. Size */ 00039 00040 /* DMA Buffer Memory Definitions */ 00041 #define DMA_BUF_ADR (USB_RAM_ADR + DD_SZ) /* DMA Buffer Start Address */ 00042 #define DMA_BUF_SZ (USB_RAM_SZ - DD_SZ) /* DMA Buffer Size */ 00043 00044 /* USB Error Codes */ 00045 #define USB_ERR_PID 0x0001 /* PID Error */ 00046 #define USB_ERR_UEPKT 0x0002 /* Unexpected Packet */ 00047 #define USB_ERR_DCRC 0x0004 /* Data CRC Error */ 00048 #define USB_ERR_TIMOUT 0x0008 /* Bus Time-out Error */ 00049 #define USB_ERR_EOP 0x0010 /* End of Packet Error */ 00050 #define USB_ERR_B_OVRN 0x0020 /* Buffer Overrun */ 00051 #define USB_ERR_BTSTF 0x0040 /* Bit Stuff Error */ 00052 #define USB_ERR_TGL 0x0080 /* Toggle Bit Error */ 00053 00054 /* USB DMA Status Codes */ 00055 #define USB_DMA_INVALID 0x0000 /* DMA Invalid - Not Configured */ 00056 #define USB_DMA_IDLE 0x0001 /* DMA Idle - Waiting for Trigger */ 00057 #define USB_DMA_BUSY 0x0002 /* DMA Busy - Transfer in progress */ 00058 #define USB_DMA_DONE 0x0003 /* DMA Transfer Done (no Errors)*/ 00059 #define USB_DMA_OVER_RUN 0x0004 /* Data Over Run */ 00060 #define USB_DMA_UNDER_RUN 0x0005 /* Data Under Run (Short Packet) */ 00061 #define USB_DMA_ERROR 0x0006 /* Error */ 00062 #define USB_DMA_UNKNOWN 0xFFFF /* Unknown State */ 00063 00064 /* USB DMA Descriptor */ 00065 typedef struct _USB_DMA_DESCRIPTOR { 00066 uint32_t BufAdr; /* DMA Buffer Address */ 00067 uint16_t BufLen; /* DMA Buffer Length */ 00068 uint16_t MaxSize; /* Maximum Packet Size */ 00069 uint32_t InfoAdr; /* Packet Info Memory Address */ 00070 union { /* DMA Configuration */ 00071 struct { 00072 uint32_t Link : 1; /* Link to existing Descriptors */ 00073 uint32_t IsoEP : 1; /* Isonchronous Endpoint */ 00074 uint32_t ATLE : 1; /* ATLE (Auto Transfer Length Extract) */ 00075 uint32_t Rsrvd : 5; /* Reserved */ 00076 uint32_t LenPos : 8; /* Length Position (ATLE) */ 00077 } Type; 00078 uint32_t Val; 00079 } Cfg; 00080 } USB_DMA_DESCRIPTOR; 00081 00082 /* USB Hardware Functions */ 00083 extern void USB_Init (void); 00084 extern void USB_Connect (uint32_t con); 00085 extern void USB_Reset (void); 00086 extern void USB_Suspend (void); 00087 extern void USB_Resume (void); 00088 extern void USB_WakeUp (void); 00089 extern void USB_WakeUpCfg (uint32_t cfg); 00090 extern void USB_SetAddress (uint32_t adr); 00091 extern void USB_Configure (uint32_t cfg); 00092 extern void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD); 00093 extern void USB_DirCtrlEP (uint32_t dir); 00094 extern void USB_EnableEP (uint32_t EPNum); 00095 extern void USB_DisableEP (uint32_t EPNum); 00096 extern void USB_ResetEP (uint32_t EPNum); 00097 extern void USB_SetStallEP (uint32_t EPNum); 00098 extern void USB_ClrStallEP (uint32_t EPNum); 00099 extern void USB_ClearEPBuf (uint32_t EPNum); 00100 extern uint32_t USB_ReadEP (uint32_t EPNum, uint8_t *pData); 00101 extern uint32_t USB_WriteEP (uint32_t EPNum, uint8_t *pData, uint32_t cnt); 00102 extern uint32_t USB_DMA_Setup (uint32_t EPNum, USB_DMA_DESCRIPTOR *pDD); 00103 extern void USB_DMA_Enable (uint32_t EPNum); 00104 extern void USB_DMA_Disable(uint32_t EPNum); 00105 extern uint32_t USB_DMA_Status (uint32_t EPNum); 00106 extern uint32_t USB_DMA_BufAdr (uint32_t EPNum); 00107 extern uint32_t USB_DMA_BufCnt (uint32_t EPNum); 00108 extern uint32_t USB_GetFrame (void); 00109 extern void USB_IRQHandler (void); 00110 00111 00112 #endif /* __USBHW_H__ */
Generated on Tue Jul 12 2022 17:28:10 by
![doxygen](doxygen.png)