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

📄 usbecd.h

📁 USB通信测试软件 -- 与S3C44B0的下位机通信的软件. XP驱动------------ PDIUSBD12的PC机驱动程序.USB_Test---------S3C44B0X板的USB固件程
💻 H
字号:
/*
;************************************************************************************************************
;*									  	 江西师范大学物理通讯电子学院
;*
;*                                     	      创  新  中  心
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------                                      
;* 文件名称 : USBecd.h
;* 文件功能 : 与USB相关描述符数据结构的定义、以及PDIUSBD12用到的相关宏定义的取值。
;* 补充说明 : USB设备控制驱动(PDIUSBD12 Equipment Control Drive)、与硬件有直接联系。
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : zhouhong
;* 修改日期 : 2006-11-5 
;* 版本声明 : V1.0.0
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : zhouhong   
;* 创建日期 : 2006-11-5  
;* 版本声明 : V1.0.0     
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************                         
;*/
#ifndef _USBECD_H_
#define _USBECD_H_

#include "..\INC\D12Config.h"

//****************************************************************************
//
// The following defines are specific the the Philips PDIUSBD12 USB
// controller.
// 以下定义的是与PDIUSBD12 USB控制芯片有关
//
//****************************************************************************

//
// The offsets to the individual registers in the PDIUSBD12 USB controller.
//
#define HwUSBData                               0x00000000	//数据寄存器的偏移地址
#define HwUSBCommand                            0x00000001	//命令寄存器的偏移地址

//
// Definitions of Data size.
// 定义各端点的最大数据包大小
#define MAX_CONTROLDATA_SIZE 					0x10	//控制最大数据大小,=10h
#define EP0_PACKET_SIZE							0x10	//端点0最大数据包大小,=10h
#define EP1_PACKET_SIZE							0x10	//端点1最大数据包大小,=10h
#define EP2_PACKET_SIZE							0x40	//端点2最大数据包大小,=40h

//
// Definitions of the supported endpoints.
// 支持端点定义
//
#define USB_ENDPOINT_CONTROL_OUT                0x00	//控制输出
#define USB_ENDPOINT_CONTROL_IN                 0x01	//控制输入
#define USB_ENDPOINT_COMMAND_OUT				0x02	//命令输出(端点1输出)
#define USB_ENDPOINT_ACK_IN                     0x03	//确认输入(端点1输入)
#define USB_ENDPOINT_BULK_OUT                   0x04	//批量输出(端点2输出)
#define USB_ENDPOINT_BULK_IN                    0x05	//批量输入(端点2输入)

//
// Definitions of the commands that can be sent to the PDIUSBD12.
// 定义PDIUSBD12中的命令
//
#define USB_COMMAND_SELECT_ENDPOINT             0x00	//选择端点
#define USB_COMMAND_READ_LAST_XACTION_STATUS    0x40	//读最后处理状态
#define USB_COMMAND_SET_ENDPOINT_STATUS         0x40	//设置端点状态 
#define USB_COMMAND_SET_ADDRESS_ENABLE          0xD0	//设置地址/使能 
#define USB_COMMAND_SET_ENDPOINT_ENABLE         0xD8	//设置端点使能 
#define USB_COMMAND_READ_BUFFER                 0xF0	//读缓冲区
#define USB_COMMAND_WRITE_BUFFER                0xF0	//写缓冲区
#define USB_COMMAND_ACKNOWLEDGE_ENDPOINT        0xF1	//应答设置
#define USB_COMMAND_CLEAR_BUFFER                0xF2	//缓冲区清零
#define USB_COMMAND_SET_MODE                    0xF3	//设置模式 
#define USB_COMMAND_READ_INTERRUPT              0xF4	//读中断寄存
#define USB_COMMAND_VALIDATE_BUFFER             0xFA	//使缓冲区有效 
#define USB_COMMAND_SET_DMA                     0xFB	//设置 DMA 
#define USB_COMMAND_READ_CHIPID                 0xFD    //读取芯片ID号
#define USB_COMMAND_SEND_RESUME                 0xF6	//发送恢复
#define USB_COMMAND_READ_CURRENT_FRAME_NUMBER	0xF5	//读当前帧数目

//
// Definitions of the bit fields in the first byte of the configuration
// register.
// 第一个字节配置寄存器各位定义(配置字节)
//
#define USB_CONFIG1_NO_LAZY_CLOCK               0x02	//1:  	1 表示 CLKOUT不会切换到 LazyClock
													  	//0 表示 CLKOUT在Suspend脚变高之后切换到LazyClock
#define USB_CONFIG1_CLOCK_RUNNING               0x04	//2:	1 表示内部时钟和PLL即使在挂起状态下仍然运行
														//   0 表示只要不需要时 内部时钟晶振和PLL就停止运行
#define USB_CONFIG1_INTERRUPT_MODE              0x08	//3:	1 表示报告所有的错误和NAKing 并产生一个中断 
														//		0 表示只有 OK 被报告
#define USB_CONFIG1_SOFT_CONNECT                0x10	//4:	1 表示如果 VBUS 可用上行数据上拉电阻就被连接
														// 		0 表示不连接
#define USB_CONFIG1_NONISO_MODE                 0x00	//6..7: 00 非同步模式
#define USB_CONFIG1_ISOOUT_MODE                 0x40	//6..7: 00 同步输出模式
#define USB_CONFIG1_ISOIN_MODE                  0x80	//6..7: 00 同步输入模式
#define USB_CONFIG1_ISOIO_MODE                  0xC0	//6..7: 00 同步输入/输出模式

//
// Definitions of the bit fields in the second byte of the configuration
// register.
// 第二个字节配置寄存器(时钟分频系数字节)
//
#define USB_CONFIG2_CLOCK_24M                   0x01	//频率为24M
#define USB_CONFIG2_CLOCK_12M                   0x03	//频率为12M
#define USB_CONFIG2_CLOCK_8M                    0x05	//频率为8M
#define USB_CONFIG2_CLOCK_6M                    0x07	//频率为6M
#define USB_CONFIG2_CLOCK_4M                    0x0B	//频率为4M

#define USB_CONFIG2_SET_TO_ONE                  0x40	//该位需要在任何 DMA 读或写操作之前置为 1
														//该位在上电复位值为 0 复位后可将其一直设为 1
#define USB_CONFIG2_SOF_ONLY                    0x80	//将该位置1后仅当帧时钟的起始(SOF)时刻引起中断的
														//产生,而不管引脚中断模式的设置状态设置 DMA位 5  

//
// Definitions of the bit fields in the DMA configuration register.
// DMA配置寄存器各位定义
//														//0..1:选择DMA操作的突发串长度单周期
#define USB_DMA_SINGLE                          0x00	//00 单周期 DMA
#define USB_DMA_BURST_4                         0x01	//01  突发串4周期DMA
#define USB_DMA_BURST_8                         0x02    //10  突发串8周期DMA  
#define USB_DMA_BURST_16                        0x03    //11  突发串16周期DMA
#define USB_DMA_ENABLE                          0x04    //2:DMA使能 写入1会通过激活DMREQ启动DMA操作   
#define USB_DMA_DIRECTION                       0x08    //3:DMA方向 1表示从外到PDIUSBD12,0则相反   
#define USB_DMA_AUTO_RELOAD                     0x10    //4:自动重装 设为1时DMA操作会自动重新   
#define USB_DMA_INTPINMODE                      0x20	//5:中断脚模式 0表示正常的中断脚模式 1表示中断会在
														//USB总线上行数据流出现帧时钟SOF起始位时产生中断
#define USB_DMA_ENDP4_INT_ENABLE                0x40	//6:端点索引4中断使能 |该位为1表示只要端点缓冲区 
#define USB_DMA_ENDP5_INT_ENABLE                0x80	//7:端点索引5中断使能 |包含一个有效的信息包就会产
														// |生中断通常在DMA操作时关闭以减少不必要的CPU响应
//
// Definitions of the bit fields in the first byte of the interrupt register.
// 中断寄存器寄存器各位定义
//
#define USB_INT_CONTROL_OUT                    0x0001	  //0:控制输出端点           
#define USB_INT_CONTROL_IN                     0x0002     //1:控制输入端点          
#define USB_INT_ENDPOINT1_OUT                  0x0004     //2:端点1输出
#define USB_INT_ENDPOINT1_IN                   0x0008     //3:端点1输入
#define USB_INT_ENDPOINT2_OUT                  0x0010     //4:端点2输出
#define USB_INT_ENDPOINT2_IN                   0x0020     //5:端点2输入
#define USB_INT_BUS_RESET                      0x0040	  //6:总线复位
#define USB_INT_SUSPEND_CHANGE                 0x0080	  //7:挂起改变
#define USB_INT_EOT                            0x0100	  //8:表示DMA操作已结束

//
// Definitions of the bit fields in the last transaction status register.
// 最后处理状态寄存器各位定义
//
#define USB_XACTION_STATUS_DATA_RX_TX_SUCCESS   0x01	//0: 数据接收/发送成功
#define USB_XACTION_STATUS_SETUP_PACKET         0x20	//5: SETUP信息包 1表示成功接收信息包  
#define USB_XACTION_STATUS_PREPACKET			0X80	//6..7:前一状态未读 1表示未读

//
// Definitions of the bit fields in the Select endpoint status register.
// D12各选择端点寄存器各位定义
//
#define USB_ENDPOINT_STATUS_FULL_EMPTY          0x01	//0:缓冲区满/空, 1表示已满 0表示为空  
#define USB_ENDPOINT_STALL                      0x02	//1:停止,1 表示选择的端点处于停止状态

//
// Definitions of the bit fields in the Set endpoint status register.
// D12各设置端点寄存器各位定义
//
#define	USB_SET_ENDPOINT_START	0		//端点工作
#define	USB_SET_ENDPOINT_STALL	1		//端点停止
//
//  D12测试设备类型的子类代码和协议代码
//
#define USB_SUBCLASS_CODE_TEST_CLASS_D12        0x0a    //子类型代码,=0A0H
#define USB_PROTROCOL_CODE_TEST_CLASS_D12       0x0b    //协议代码,=0B0H

/*
*************************************************************************************************************
*                                   函数声明
*************************************************************************************************************
*/
void outportc(INT8U Data);
void outportd(INT8U Data);
INT8U inportd(void);
INT16U D12_ReadChipID(void);
void D12_SetAddressEnable(INT8U bAddress,INT8U bEnable);
void D12_SetEndpointEnable(INT8U bEnable);
void D12_SetMode(INT8U bConfig,INT8U bClkDiv);
void D12_SetDMA(INT8U bMode);
INT16U D12_ReadInterruptRegister(void);
INT8U D12_SelectEndpoint(INT8U bEndp);
INT8U D12_ReadEndpointStatus(INT8U bEndp);
INT8U D12_ReadLastTransactionStatus(INT8U bEndp);
INT8U D12_ReadEndpoint(INT8U bendp,INT8U len,INT8U *buf);
INT8U D12_WriteEndpoint(INT8U bendp,INT8U len,INT8U *buf);
void D12_SetEndpointStatus(INT8U bendp,INT8U bStalled);
void D12_AcknowledgeEndpoint(INT8U bendp);
void D12_SendResume(void);
INT16U D12_ReadCurrentFrameNumber(void);
void D12_init_Unconfig(void);
void D12_init_Config(void);
void stall_ep0(void);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

#endif
 

⌨️ 快捷键说明

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