⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d13driver.h

📁 中间件USB的驱动和API函数包!可以为嵌入式硬件移植
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			D13Driver.h
** Last modified Date:	2004-12-10
** Last Version:		V1.0
** Descriptions:		ISP1181B(D13) 设备端驱动程序 应用层头文件
**						Soft Packet of USB Driver: the Driver of Device of ISP1181B(D13)  
												   the Head Files of Application Layer
**------------------------------------------------------------------------------------------------------
** Created by:			Ming Yuan Zheng	
** Created date:		2004-12-10
** Version:				V1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			
** Modified date:		
** Version:				
** Descriptions:		
**
**------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/


/**************** 定义 USB 收发错误码 ***************************/
#define USB_NO_ERR				0x00		//正确
#define USB_ERR_NO_CONFIG		0x01		//USB总线未配置完成错误
#define USB_ERR_BUFF_INVALID	0x02		//接收或发送缓冲区错误
#define USB_ERR_WR_TIMEOUT		0x03		//接收或发送超时错误


/*************** 定义 USB 接收或发送控制块 **********************/
typedef struct tagUsb_Struct
{
	INT8U   *pBuff[OS_LOWEST_PRIO];			//接收或发送缓冲区指针数组
	
	INT32U  Max[OS_LOWEST_PRIO];			//接收或发送字节数, 也作为接收或发送完成标志
	INT32U  Cnt;							//接收或发送字节计数器
	
	INT8U   Grp;							//等待组	
	INT8U   Tbl[OS_RDY_TBL_SIZE];			//等待列表
			
	INT8U   Sem;							//端点资源信号量	
	INT8U   Prio;							//当前占用该端点的任务优先级
}CTRL_USB;


/*************** Setup包处理任务堆栈  ****************************/
extern OS_STK  TaskSetupStk[128];


/* ISP1181B 各端口对应的 USB 接收或发送控制块 */
/* USB receive or transmit control block of ISP1181B each endpoint */
extern CTRL_USB UsbSend_EP01;				//端点 1 发送控制块
extern CTRL_USB UsbRec_EP02;				//端点 2 接收控制块

extern CTRL_USB UsbSend_EP03;				//端点 3 发送控制块
extern CTRL_USB UsbRec_EP04;				//端点 4 接收控制块

extern CTRL_USB UsbSend_EP05;				//端点 5 发送控制块
extern CTRL_USB UsbRec_EP06;				//端点 6 接收控制块


/**************** D12Driver.c内部使用函数 ************************/
INT8U USB_GetHighPrio(CTRL_USB *pUsb);
void USB_InsertPrio(CTRL_USB *pUsb,INT8U prio);
void USB_DelPrio(CTRL_USB *pUsb,INT8U prio);

INT8U USB_ReadPort(INT8U endp,INT8U buffnums,CTRL_USB *pUsb,INT32U len,
				   INT8U *recbuff,INT16U timeout);
				   
INT8U USB_WritePort(INT8U endp,INT32U eppsize,INT8U buffnums,CTRL_USB *pUsb,
					INT8U *sendbuff,INT32U len,INT16U timeout);

void USB_ReadISR(CTRL_USB *pUsb,INT8U endp,INT32U eppsize,INT8U buffnums);	
void USB_WriteISR(CTRL_USB *pUsb,INT8U endp,INT32U eppsize,INT8U buffnums);		
	  
INT8U USB_RW_Param(CTRL_USB *pUsb,INT32U len,INT8U *pbuff);	     
INT8U USB_RW_Result(INT8U endp,INT8U buffnums,CTRL_USB *pUsb,
					INT8U bread,INT16U timeout);
					
		/*
		***************************************************************************
		
		 					 D13Driver.c  提供的API函数 
		
		***************************************************************************
		*/
		
/**********************************************************************************************************************
** 函数名称: Init_D13()								Name:	   Init_D13()
** 功能描述: 设置 D13(ISP1181B) 与MCU的连接接口,	Function:  Configure the interface connected to MCU,reset D13,
			 复位D13,连接上USB总线							   connected to USB bus
** 输   入: 无										Input:	   NULL
** 输   出: 0: 初始化成功    	1: 	初始化失败  	Output:	   0:  Initialize sucessfully	1: Initialize fail
************************************************************************************************************************/
extern INT8U Init_D13(void);


/*******************************************************************************************************************************
** 函数名称: INT8U WritePort1()									Name:		 INT8U WritePort1()	
** 功能描述: 用端口 1 发送len个字节								Function:	 Send len Bytes via Port1
** 输   入: INT32U  len: 发送的字节数							Input:		 INT32U  len:   	numbers will be send
						 (取值范围为0x00000001 ~ 0xFFFFFFFF)			    			    	(range: 0x00000001 ~ 0xFFFFFFFF)	
			 INT8U   sendbuff:   发送缓冲区指针								 INT8U   sendbuff:  send buffer
			 INT16U  timeout:    超时等待时间, 必须大于等于0				 INT16U  timeout:   timeout	of transmitting		 
** 输   出: 0: 发送成功	 > 0: 发送失败(错误码)				Output:		 0:	sucessfully		>0 fail (error code)
*******************************************************************************************************************************/
extern INT8U WritePort1(INT32U len,INT8U *sendbuff,INT16U timeout);


/*******************************************************************************************************************************
** 函数名称: INT8U WritePort2()									Name:		 INT8U WritePort2()
** 功能描述: 用端口 2 发送len个字节								Function:	 Send len Bytes via Port2
** 输   入: INT32U  len: 发送的字节数							Input:		 INT32U  len:   	numbers will be send
						 (取值范围为0x00000001 ~ 0xFFFFFFFF)			    			    	(range: 0x00000001 ~ 0xFFFFFFFF)	
			 INT8U   sendbuff:   发送缓冲区指针								 INT8U   sendbuff:  send buffer
			 INT16U  timeout:    超时等待时间, 必须大于等于0				 INT16U  timeout:   timeout	of transmitting		 
** 输   出: 0: 发送成功	 > 0: 发送失败(错误码)				Output:		 0:	sucessfully		>0 fail (error code)
*******************************************************************************************************************************/
extern INT8U WritePort2(INT32U len,INT8U *sendbuff,INT16U timeout);


/*******************************************************************************************************************************
** 函数名称: INT8U WritePort3()									Name:		 INT8U WritePort3()	
** 功能描述: 用端口 3 发送len个字节								Function:	 Send len Bytes via Port3
** 输   入: INT32U  len: 发送的字节数							Input:		 INT32U  len:   	numbers will be send
						 (取值范围为0x00000001 ~ 0xFFFFFFFF)			    			    	(range: 0x00000001 ~ 0xFFFFFFFF)	
			 INT8U   sendbuff:   发送缓冲区指针								 INT8U   sendbuff:  send buffer
			 INT16U  timeout:    超时等待时间, 必须大于等于0				 INT16U  timeout:   timeout	of transmitting		 
** 输   出: 0: 发送成功	 > 0: 发送失败(错误码)				Output:		 0:	sucessfully		>0 fail (error code)
*******************************************************************************************************************************/
extern INT8U WritePort3(INT32U len,INT8U *sendbuff,INT16U timeout);


/*******************************************************************************************************************************
** 函数名称: INT8U ReadPort1()									Name:		 INT8U ReadPort1()	
** 功能描述: 从端口 1 接收len个字节								Function:	 receive len Bytes from Port1
** 输   入: INT32U  len: 要接收的字节数						Input:		 INT32U  len:   	numbers will be receive
						 (取值范围为0x00000001 ~ 0xFFFFFFFF)			    			    	(range: 0x00000001 ~ 0xFFFFFFFF)	
			 INT8U   recbuff:    接收缓冲区指针								 INT8U   sendbuff:  receive buffer
			 INT16U  timeout:    超时等待时间, 必须大于等于0				 INT16U  timeout:   timeout	of receiving		 
** 输   出: 0: 接收成功	 > 0: 接收失败(错误码)				Output:		 0:	sucessfully		>0 fail (error code)
*******************************************************************************************************************************/
extern INT8U ReadPort1(INT32U len,INT8U *recbuff,INT16U timeout);


/*******************************************************************************************************************************
** 函数名称: INT8U ReadPort2()									Name:		 INT8U ReadPort2()	
** 功能描述: 从端口 2 接收len个字节								Function:	 receive len Bytes from Port2
** 输   入: INT32U  len: 要接收的字节数						Input:		 INT32U  len:   	numbers will be receive
						 (取值范围为0x00000001 ~ 0xFFFFFFFF)			    			    	(range: 0x00000001 ~ 0xFFFFFFFF)	
			 INT8U   recbuff:    接收缓冲区指针								 INT8U   sendbuff:  receive buffer
			 INT16U  timeout:    超时等待时间, 必须大于等于0				 INT16U  timeout:   timeout	of receiving		 
** 输   出: 0: 接收成功	 > 0: 接收失败(错误码)				Output:		 0:	sucessfully		>0 fail (error code)
*******************************************************************************************************************************/
extern INT8U ReadPort2(INT32U len,INT8U *recbuff,INT16U timeout);


/*******************************************************************************************************************************
** 函数名称: INT8U ReadPort3()									Name:		 INT8U ReadPort3()	
** 功能描述: 从端口 3 接收len个字节								Function:	 receive len Bytes from Port3
** 输   入: INT32U  len: 要接收的字节数						Input:		 INT32U  len:   	numbers will be receive
						 (取值范围为0x00000001 ~ 0xFFFFFFFF)			    			    	(range: 0x00000001 ~ 0xFFFFFFFF)	
			 INT8U   recbuff:    接收缓冲区指针								 INT8U   sendbuff:  receive buffer
			 INT16U  timeout:    超时等待时间, 必须大于等于0				 INT16U  timeout:   timeout	of receiving		 
** 输   出: 0: 接收成功	 > 0: 接收失败(错误码)				Output:		 0:	sucessfully		>0 fail (error code)
*******************************************************************************************************************************/
extern INT8U ReadPort3(INT32U len,INT8U *recbuff,INT16U timeout);


/*******************************************************************
** 函数名称: void  TaskSetup(void *pdata)
** 功能描述: Setup包处理
** 输	 入: void *pdata  任务参数
** 输	 出: 无
** 注	 意: 该任务的优先级应高于其它任务,才能在任何情况下传输Setup包
********************************************************************/
extern void  TaskSetup(void *pdata);


/*****************************************************************************************************************
** 函数名称: get_firmware_version()					Name:		get_firmware_version()
** 功能描述: 得到本固件软件包版本号					Function:	get software version of the firmware
** 输   入: 无										Input:		NULL
** 输   出: 本固件软件包版本号						Output:		the software version of the firmware
******************************************************************************************************************/
extern INT16U get_ISP1181B_firmware_version(void);


extern void bus_reset(void);
extern void usb_suspend(void);
extern void dma_eot(void);







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -