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

📄 usbdevdriver.h

📁 SmartARM2400系列开发板全套资料
💻 H
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:               usbDevDriver.c
** Latest modified Date:    2008-05-10
** Latest Version:          1.1
** Descriptions:            ZLG_USB2400 Device 软件包应用层头文件
**
**--------------------------------------------------------------------------------------------------------
** 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 __USBDEVDRIVER_H
#define __USBDEVDRIVER_H

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

#define USB_ERR_CREATETASK_FAIL 0x04
#define USB_ENDP_STALLED        0x05

#define USB_ERR_READ_TESTREG	0x10									/*  读测试寄存器失败			*/
#define USB_ERR_CREATE_SEM		0x11									/*  创建信号量失败				*/	
#define USB_ERR_ENDP_OCCUPY		0x12									/*  端点已被其它任务占用		*/

/*********************************************************************************************************
  usbDevTaskSetup任务接收消息宏定义
*********************************************************************************************************/
#define __USB_DEV_SETUP_NORMAL  0x01        							/*  SETUP处理消息				*/
#define __USB_DEV_SETUP_DELTASK 0x02        							/*  删除SETUP处理任务消息		*/

/*********************************************************************************************************
  USB 传输控制块结构体
*********************************************************************************************************/
__packed struct tagUsb_Struct
{		
	OS_EVENT *Ep_Sem;													/*  端点收/发信号量 			*/
	
	INT8U bEpUsed;														/*  端点正被其它任务使用 		*/
	
	INT8U bTaskWaiting;													/*  任务已进入等待状态 			*/	
	
	INT8U bEpReady;														/*  端点就绪,完成数据传输		*/

#if DMA_ENGINE_EN			
	INT8U *buff;														/*  用户接收/发送缓冲区 		*/
	INT32U len;															/*  接收/发送数据长度 			*/
	INT32U cnt;															/*  已传输字节数计数器			*/
#endif	
	
};

typedef struct tagUsb_Struct CTRL_USB;

extern CTRL_USB Ctrl_Usb[NUM_ENDPOINTS];

/*********************************************************************************************************
  USB 事件标志结构体
*********************************************************************************************************/

struct __stflags {
	
	unsigned bus_reset           	: 1;	//总线复位
	unsigned suspend             	: 1;	//总线挂起改变 
	unsigned con_change				: 1;    //总线连接改变
	unsigned setup_packet  	  		: 1;	//接收到SETUP包
	unsigned remote_wakeup		   	: 1;	//远程唤醒标志
	unsigned in_isr		      		: 1;	//进入USB设备中断服务程序标志
	unsigned control_state			: 2;	//控制端点处理状态
												//0: 空闲状态
												//1: 数据发送状态
												//2: 数据接收状态
 	unsigned configuration			: 1;	//USB设备配置完成标志(0:未配置;1:已配置)
	unsigned command				: 1;	//未使用
	unsigned ep1_rxdone				: 1;	//逻辑端点1接收到数据标志 
	unsigned ep2_rxdone				: 1;	//逻辑端点2接收到数据标志
	unsigned ep1_rxdma				: 1;	//逻辑端点1(DMA)接收到数据标志
	unsigned ep2_rxdma				: 1;	//逻辑端点2(DMA)接收到数据标志

};
	
typedef struct __stflags	__FLAGS;									/*  重定义标志位结构体类型		*/

union __unflags {

	__FLAGS	bits;
	INT16U value;
};

typedef union __unflags	EPPFLAGS;										/*  重定义标志位共用体类型		*/								

extern EPPFLAGS bEPPflags;		

/*********************************************************************************************************
  SETUP包处理任务堆栈与信号量
*********************************************************************************************************/
extern OS_STK  usbDevTaskSetupStk[128];
extern OS_EVENT *pSetup_Event;

/*********************************************************************************************************
  下面为软件包内部使用的函数
*********************************************************************************************************/

/*********************************************************************************************************
** Function name:       __usbDevRwParam
** Descriptions:        填写USB接收或发送控制块有关参数
** input parameters:    pstUsb:		USB 传输控制块结构体指针
**						pucBuf:		接收或发送数据缓冲区指针	
** output parameters:	无							
** Returned value:      0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U __usbDevRwParam (CTRL_USB *pstUsb, INT8U *pucBuf);

/*********************************************************************************************************
  下面为提供给用户使用的API函数
*********************************************************************************************************/

/*********************************************************************************************************
** Function name:		usbDevInit
** Descriptions:        初始化 USB 设备控制器
** input parameters:    ucDevTaskSetupPrio:	usbDevTaskSetup任务优先级					
** output parameters:	无						
** Returned value:      初始化成功	0
**						初始化失败	错误码
*********************************************************************************************************/
extern INT8U usbDevInit (INT8U ucDevTaskSetupPrio);

/*********************************************************************************************************
** Function name:		usbDevDeInit
** Descriptions:        USB 设备控制器反初始化
** input parameters:    无					
** output parameters:	无						
** Returned value:      TRUE:反初始化成功
*********************************************************************************************************/
extern INT8U usbDevDeInit (void);

/*********************************************************************************************************
** Function name:		usbDevTaskSetup
** Descriptions:        USB 设备控制器控制传输处理
** input parameters:    无					
** output parameters:	无						
** Returned value:      该任务的优先级应高于其它任务,才能在任何情况下传输SETUP包
*********************************************************************************************************/
extern void  usbDevTaskSetup (void *pdata);

/*********************************************************************************************************
** Function name:       usbDevException
** Descriptions:        USB 设备控制器中断服务程序
** input parameters:    无						
** output parameters:	无
** Returned value:      无
*********************************************************************************************************/
extern void usbDevException (void);

/*********************************************************************************************************
** Function name:		usbDevReadPort1
** Descriptions:		从USB Device的逻辑端点1读取数据
** input parameters:	ulReadLen	待读取字节数
**						usWaitTime	等待超时时间ms						
** output parameters:	pucRcvBuf	接收数据缓冲区指针						
** Returned value:      0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevReadPort1 (INT8U *pucRcvBuf,
					   		  INT32U ulReadLen,
                	   		  INT16U usWaitTime);

/*********************************************************************************************************
** Function name:		usbDevReadPort2
** Descriptions:		从USB Device的逻辑端点1读取数据
** input parameters:	ulReadLen	待读取字节数
**						usWaitTime	等待超时时间ms						
** output parameters:	pucRcvBuf	接收数据缓冲区指针						
** Returned value:      0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevReadPort2 (INT8U *pucRcvBuf,
					   		  INT32U ulReadLen,
                	   		  INT16U usWaitTime);

/*********************************************************************************************************
** Function name:       usbDevWritePort1
** Descriptions:        向USB Device的逻辑端点1写入数据
** input parameters:	pucSendBuf:	待发送数据缓冲区指针
**						ulSendLen:	待发送字节数
**						usWaitTime:	等待超时时间,单位Clock Tick					
** output parameters:	无							
** Returned value:      0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevWritePort1 (INT8U *pucSendBuf,
					   		   INT32U ulSendLen,
                       		   INT16U usWaitTime);

/*********************************************************************************************************
** Function name:       usbDevWritePort2
** Descriptions:        向USB Device的逻辑端点2写入数据
** input parameters:	pucSendBuf:	待发送数据缓冲区指针
**						ulSendLen:	待发送字节数
**						usWaitTime:	等待超时时间,单位Clock Tick					
** output parameters:	无							
** Returned value:      0:操作成功;>0:操作失败
*********************************************************************************************************/
extern INT8U usbDevWritePort2 (INT8U *pucSendBuf,
					   		   INT32U ulSendLen,
                       		   INT16U usWaitTime);

#endif																	/*  __USBDEVDRIVER_H			*/

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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