?? usbdma.h
字號:
#ifndef __USBDMA_H__
#define __USBDMA_H__
/* LPC214x DMA 引擎 DD 描述符結構體 LPC214x DMA engine DD descriptor structure */
typedef struct non_iso_dd_tag
{
INT32U next_dd_addr; /* 下一個DD地址 next DD address */
INT32U control; /* DD控制字 DD control word */
INT32U start_addr; /* DMA 緩沖區起始地址 DMA buffer start address */
INT32U status; /* DMA 引擎狀態 DMA engine status */
}DD_DESCRIPTOR;
/* 各端點 DMA 緩沖區大小, 用戶可自行修改, 請注意總和不要大于 8K - 0.64K (LPC2148).
Each endpoint dma buffer size, user can modify it, please note the len can't be above 8K - 0.64K (LPC2148) */
#define EP02_DMA_BUFFER_LENGTH 0
#define EP03_DMA_BUFFER_LENGTH 0
#define EP04_DMA_BUFFER_LENGTH 3584
#define EP05_DMA_BUFFER_LENGTH 3584
#define USB_RAM_ADDRESS 0x7FD00000 /* USB RAM 起始地址 Start address of USB RAM */
#define DD_SIZE sizeof(DD_DESCRIPTOR) /* DD 結構體大小 DD size */
#define DD_BASE_ADDRESS (USB_RAM_ADDRESS + (4 * 32)) /* 32: LPC214x 端點個數 32: the endpoint numbers */
#define DD_ADDRESS_EP02 DD_BASE_ADDRESS /* 物理端點2 DD地址 DD address of endpoint 02 */
#define DD_ADDRESS_EP03 (DD_BASE_ADDRESS + (DD_SIZE * 1)) /* 物理端點3 DD地址 DD address of endpoint 03 */
#define DD_ADDRESS_EP04 (DD_BASE_ADDRESS + (DD_SIZE * 2)) /* 物理端點4 DD地址 DD address of endpoint 04 */
#define DD_ADDRESS_EP05 (DD_BASE_ADDRESS + (DD_SIZE * 3)) /* 物理端點5 DD地址 DD address of endpoint 05 */
/* DMA 接收和發送緩沖區地址 DMA receive/transmit buffer address */
#define DMA_BUFFER_ADDR_EP02 DD_BASE_ADDRESS + (DD_SIZE * 32) /* 物理端點2 DMA緩沖區首址 */
#define DMA_BUFFER_ADDR_EP03 DMA_BUFFER_ADDR_EP02 + EP02_DMA_BUFFER_LENGTH /* 物理端點3 DMA緩沖區首址 */
#define DMA_BUFFER_ADDR_EP04 DMA_BUFFER_ADDR_EP03 + EP03_DMA_BUFFER_LENGTH /* 物理端點4 DMA緩沖區首址 */
#define DMA_BUFFER_ADDR_EP05 DMA_BUFFER_ADDR_EP04 + EP04_DMA_BUFFER_LENGTH /* 物理端點5 DMA緩沖區首址 */
/* DMA 狀態宏定義 DMA status marco define */
#define DDS_NOT_SERV 0x00
#define DDS_BEING_SERV 0x01
#define DDS_UNDER_RUN 0x03
#define DDS_SYS_ERR 0x09
#define DDS_OVER_RUN 0x11 //DATA over run 1,0001
#define DDS_NORMAL_COMP 0x05 //Normal completion 0,0101
/*
***********************************************************************
* 用戶可使用的API函數 API Function
***********************************************************************
*/
extern void USB_DMAInit(void);
extern INT32U USB_DMASetTransLength(INT8U endp, INT32U len);
extern void USB_DMAStart_IN(INT8U endp);
extern INT8U* USB_DMAGetBuffer(INT8U endp);
/*
***********************************************************************
* DMA 中斷服務程序 The Interrupt Service of the DMA
***********************************************************************
*/
extern void USB_DMAService(void);
extern void USB_DMATransferEnd(void);
extern void USB_DMASystemError(void);
extern void USB_DMANewDDRequest(void);
/*
***********************************************************************
* 本文件用到的子程序 The Subprogram used by this file
***********************************************************************
*/
extern void USB_InitUdcaTable(void);
extern void USB_InitEndpointDD(INT8U endp);
extern DD_DESCRIPTOR *USB_GetDDPointer(INT8U endp);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -