📄 usbdevdma.h
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: usbDevDMA.h
** Latest modified Date: 2008-05-10
** Latest Version: 1.1
** Descriptions: ZLG_USB2400 Device 软件包DMA层头文件
**
**--------------------------------------------------------------------------------------------------------
** Created by: ZhengMingyuan
** Created date: 2005-01-06
** Version: 1.0
** Descriptions: The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by: LingGuilin
** Modified date: 2008-05-10
** Version: 1.1
** Descriptions: 修改部分代码以符合代码规范v1.2
**
*********************************************************************************************************/
#ifndef __USBDMA_H
#define __USBDMA_H
/*********************************************************************************************************
LPC2400 DMA 引擎 DD 描述符结构体
*********************************************************************************************************/
typedef struct non_iso_dd_tag
{
INT32U next_dd_addr; /* 下一个DD地址 */
INT32U control; /* DD控制字 */
INT32U start_addr; /* DMA 缓冲区起始地址 */
INT32U status; /* DMA 引擎状态 */
}DD_DESCRIPTOR;
/*********************************************************************************************************
各端点 DMA 缓冲区大小, 用户可自行修改, 请注意总和不要大于 16K - 0.64K
*********************************************************************************************************/
#define EP02_DMA_BUFFER_LENGTH 512 /* 物理端点2 DMA缓冲区大小 */
#define EP03_DMA_BUFFER_LENGTH 512 /* 物理端点3 DMA缓冲区大小 */
#define EP04_DMA_BUFFER_LENGTH 3072 /* 物理端点4 DMA缓冲区大小 */
#define EP05_DMA_BUFFER_LENGTH 3072 /* 物理端点5 DMA缓冲区大小 */
#define USB_RAM_ADDRESS 0x7FD00000 /* USB RAM 起始地址 */
#define DD_SIZE sizeof(DD_DESCRIPTOR) /* DD 结构体大小 */
#define DD_BASE_ADDRESS (USB_RAM_ADDRESS + (4 * 32)) /* 32: LPC2400 端点个数 */
#define DD_ADDRESS_EP02 DD_BASE_ADDRESS /* 物理端点2 DD地址 */
#define DD_ADDRESS_EP03 (DD_BASE_ADDRESS + (DD_SIZE * 1)) /* 物理端点3 DD地址 */
#define DD_ADDRESS_EP04 (DD_BASE_ADDRESS + (DD_SIZE * 2)) /* 物理端点4 DD地址 */
#define DD_ADDRESS_EP05 (DD_BASE_ADDRESS + (DD_SIZE * 3)) /* 物理端点5 DD地址 */
/*********************************************************************************************************
DMA 接收和发送缓冲区地址
*********************************************************************************************************/
#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 状态宏定义
*********************************************************************************************************/
#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 /* 指示缓冲区到达末尾错误 */
#define DDS_NORMAL_COMP 0x05 /* 指示DMA传输正常结束 */
/*********************************************************************************************************
** Function name: __usbDevDMAInit
** Descriptions: 初始化LPC2400 USB设备控制器的DMA引擎
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
extern void __usbDevDMAInit (void);
/*********************************************************************************************************
** Function name: __usbDevDMAService
** Descriptions: DMA 中断服务程序
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
extern void __usbDevDMAService (void);
/*********************************************************************************************************
** Function name: __usbDevDMAReadPort
** Descriptions: DMA模式下,从USB Device的OUT端点FIFO中读取数据
** input parameters: ucEpIndex 物理端点索引号2,4等
** ucBufNum 物理端点FIFO个数
** pstUsb 指向物理端点传输控制块结构体的指针
** pucRcvBuf 接收数据缓冲区指针
** ulReadLen 待读取字节数
** usWaitTime 超时等待时间ms,为0时无限等待
** output parameters: 无
** Returned value: 0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U __usbDevDMAReadPort (INT8U ucEpIndex,
INT8U ucBufNum,
CTRL_USB *pstUsb,
INT8U *pucRcvBuf,
INT32U ulReadLen,
INT16U usWaitTime);
/*********************************************************************************************************
** Function name: __usbDevDMAWritePort
** Descriptions: DMA模式下,向USB Device的IN端点FIFO中写入数据
** input parameters: ucEpIndex 物理端点索引号2,4等
** ucBufNum 物理端点FIFO个数
** pstUsb 指向物理端点传输控制块结构体的指针
** pucSendBuf 发送数据缓冲区
** ulSendLen 待发送字节数
** usWaitTime 超时等待时间ms,为0时无限等待
** output parameters: 无
** Returned value: 0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U __usbDevDMAWritePort (INT8U ucEpIndex,
INT8U ucBufNum,
CTRL_USB *pstUsb,
INT8U *pucSendBuf,
INT32U ulSendLen,
INT16U usWaitTime);
#endif
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -