Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
