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

📄 ch375hf(4).h

📁 USB 1.1 U Device for CH375 & USB 2.0 for CH375A 读写usb超精简的程序
💻 H
📖 第 1 页 / 共 5 页
字号:

#define	CMD_ENTER_SLEEP		0x03			// 进入睡眠状态 

#define	CMD_CHK_SUSPEND		0x0B			// 设备方式: 设置检查USB总线挂起状态的方式 
// 输入: 数据10H, 检查方式 
//           00H=不检查USB挂起, 04H=以50mS为间隔检查USB挂起, 05H=以10mS为间隔检查USB挂起 

#define	CMD_RD_USB_DATA0	0x27			// 从当前USB中断的端点缓冲区读取数据块 
// 输出: 长度, 数据流 
//-----------------------------------------------
#define	CMD_DELAY_100US		0x0F			// 并口方式: 延时100uS 
// 输出: 延时期间输出0, 延时结束输出非0 

#define	CMD_SET_SYS_FREQ	0x04			// 设置系统工作频率 
// 输入: 频率 
//           00H=12MHz, 01H=1.5MHz 

//*************************************************************************************************
//=================================================================================================
// 以下新增的V2.0命令码, 用于USB主机方式, 仅CH375A支持 
//=================================================================================================
//*************************************************************************************************
// 
#define	CMD_TEST_CONNECT	0x16			// 主机方式: 检查USB设备连接状态 
// 输出: 状态( USB_INT_CONNECT或USB_INT_DISCONNECT, 其它值说明操作未完成 ) 

#define	CMD_AUTO_SETUP		0x4D			// 主机方式: 自动配置USB设备 
// 输出中断 

#define	CMD_ISSUE_TKN_X		0x4E			// 主机方式: 发出同步令牌, 执行事务 
// 输入: 同步标志, 事务属性 
//           同步标志的位7为主机端点IN的同步触发位, 位6为主机端点OUT的同步触发位, 位5~位0必须为0 
//           事务属性的低4位是令牌, 高4位是端点号 
// 输出中断 

#define	CMD_SET_DISK_LUN	0x0B			// 主机方式: 设置USB存储器的当前逻辑单元号 
// 输入: 数据34H, 新的当前逻辑单元号(00H-0FH) 

#define	CMD_DISK_BOC_CMD	0x50			// 主机方式: 对USB存储器执行BulkOnly传输协议的命令 
// 输出中断 
//-----------------------------------------------
#define	CMD_DISK_INQUIRY	0x58			// 主机方式: 查询USB存储器特性 
// 输出中断 

#define	CMD_DISK_READY		0x59			// 主机方式: 检查USB存储器就绪 
// 输出中断 

#define	CMD_DISK_R_SENSE	0x5A			// 主机方式: 检查USB存储器错误 
// 输出中断 

#define	CMD_DISK_MAX_LUN	0x5D			// 主机方式: 获取USB存储器最大逻辑单元号 
// 输出中断 

//*************************************************************************************************
//=================================================================================================
// 以下改进的V2.0命令码, 用于USB主机方式, 仅CH375A支持 
//=================================================================================================
//*************************************************************************************************
// 
//#define	CMD_SET_RETRY		0x0B			// 主机方式: 设置USB事务操作的重试次数 
// 输入: 数据25H, 重试次数 
//			 位7为0则收到NAK时不重试, 位7为1位6为0则收到NAK时无限重试, 位7为1位6为1则收到NAK时重试200mS, 
//			 位5~位0为超时后的重试次数 

//=================================================================================================
//=================================================================================================
// 操作状态 
//=================================================================================================
//=================================================================================================
// 
#define	CMD_RET_SUCCESS		0x51			// 命令操作成功 
#define	CMD_RET_ABORT		0x5F			// 命令操作失败 

//=================================================================================================
//=================================================================================================
// USB中断状态 
//=================================================================================================
//=================================================================================================
// 由命令 CMD_GET_STATUS 产生 
//-------------------------------------------------------------------------------------------------
// 以下状态代码为特殊事件中断, 仅CH372A/CH375A支持, 如果通过CMD_CHK_SUSPEND启用USB总线挂起检查, 
// 那么必须处理USB总线挂起和睡眠唤醒的中断状态 
//-------------------------------------------------------------------------------------------------
// 
#define	USB_INT_USB_SUSPEND	0x05			// USB总线挂起事件 
#define	USB_INT_WAKE_UP		0x06			// 从睡眠中被唤醒事件 

//-------------------------------------------------------------------------------------------------
// 以下状态代码0XH用于USB设备方式 
//-------------------------------------------------------------------------------------------------
//   内置固件模式下只需要处理: USB_INT_EP1_IN, USB_INT_EP2_OUT, USB_INT_EP2_IN, 对于CH372A/CH375A还需要处理: USB_INT_EP1_OUT 
//   位7-位4为0000 
//   位3-位2指示当前事务, 00=OUT, 10=IN, 11=SETUP 
//   位1-位0指示当前端点, 00=端点0, 01=端点1, 10=端点2, 11=USB总线复位 
// USB_INT_BUS_RESET	0x0000XX11B 		// USB总线复位 
#define	USB_INT_BUS_RESET1	0x03			// USB总线复位 
#define	USB_INT_BUS_RESET2	0x07			// USB总线复位 
#define	USB_INT_BUS_RESET3	0x0B			// USB总线复位 
#define	USB_INT_BUS_RESET4	0x0F			// USB总线复位 
#define	USB_INT_EP0_SETUP	0x0C			// USB端点0的SETUP 
#define	USB_INT_EP0_OUT		0x00			// USB端点0的OUT 
#define	USB_INT_EP0_IN		0x08			// USB端点0的IN 
#define	USB_INT_EP1_OUT		0x01			// USB端点1的OUT 
// 内置固件模式下只需要处理的 
#define	USB_INT_EP1_IN		0x09			// USB端点1的IN 
#define	USB_INT_EP2_OUT		0x02			// USB端点2的OUT 
#define	USB_INT_EP2_IN		0x0A			// USB端点2的IN 

//-------------------------------------------------------------------------------------------------
//  以下状态代码1XH用于USB主机方式的操作状态代码, 仅CH375/CH375A支持 
//-------------------------------------------------------------------------------------------------
// 
#define	USB_INT_SUCCESS		0x14			// USB事务或者传输操作成功 
#define	USB_INT_CONNECT		0x15			// 检测到USB设备连接事件 
#define	USB_INT_DISCONNECT	0x16			// 检测到USB设备断开事件 
#define	USB_INT_BUF_OVER	0x17			// USB控制传输的数据太多, 缓冲区溢出 
#define	USB_INT_DISK_READ	0x1D			// USB存储器读数据块, 请求数据读出 
#define	USB_INT_DISK_WRITE	0x1E			// USB存储器写数据块, 请求数据写入 
#define	USB_INT_DISK_ERR	0x1F			// USB存储器操作失败 

//-------------------------------------------------------------------------------------------------
//  以下状态代码2XH-3XH用于USB主机方式的通讯失败代码, 仅CH375/CH375A支持 
//-------------------------------------------------------------------------------------------------
/*   位7-位6为00 */
/*   位5为1 */
/*   位4指示当前接收的数据包(IN事务)是否同步: 0=不同步, 1=同步 */
/*   位3-位0指示导致通讯失败时USB设备的应答: 0010=ACK, 1010=NAK, 1110=STALL, 0011=DATA0, 1011=DATA1, XX00=超时 */
/* USB_INT_RET_ACK	0x001X0010B */			/* 错误:对于IN事务返回ACK */
/* USB_INT_RET_NAK	0x001X1010B */			/* 错误:返回NAK */
/* USB_INT_RET_STALL	0x001X1110B */		/* 错误:返回STALL */
/* USB_INT_RET_DATA0	0x001X0011B */		/* 错误:对于OUT/SETUP事务返回DATA0 */
/* USB_INT_RET_DATA1	0x001X1011B */		/* 错误:对于OUT/SETUP事务返回DATA1 */
/* USB_INT_RET_TOUT	0x001XXX00B */			/* 错误:返回超时 */
/* USB_INT_RET_TOGX	0x0010X011B */			/* 错误:对于IN事务返回数据不同步 */
/* USB_INT_RET_PID	0x001XXXXXB */			/* 错误:未定义 */

//=================================================================================================
//=================================================================================================
// 常用USB定义 
//=================================================================================================
//=================================================================================================
// 
//-------------------------------------------------------------------------------------------------
//  USB的包标识PID, 主机方式可能用到 
//-------------------------------------------------------------------------------------------------
// 
#define	DEF_USB_PID_NULL	0x00			// 保留PID, 未定义 
#define	DEF_USB_PID_SOF		0x05
#define	DEF_USB_PID_SETUP	0x0D
#define	DEF_USB_PID_IN		0x09
#define	DEF_USB_PID_OUT		0x01
#define	DEF_USB_PID_ACK		0x02
#define	DEF_USB_PID_NAK		0x0A
#define	DEF_USB_PID_STALL	0x0E
#define	DEF_USB_PID_DATA0	0x03
#define	DEF_USB_PID_DATA1	0x0B
#define	DEF_USB_PID_PRE		0x0C

//-------------------------------------------------------------------------------------------------
//  USB请求类型, 外置固件模式可能用到 
//-------------------------------------------------------------------------------------------------
// 
#define	DEF_USB_REQ_READ	0x80			// 控制读操作 
#define	DEF_USB_REQ_WRITE	0x00			// 控制写操作 
#define	DEF_USB_REQ_TYPE	0x60			// 控制请求类型 
#define	DEF_USB_REQ_STAND	0x00			// 标准请求 
#define	DEF_USB_REQ_CLASS	0x20			// 设备类请求 
#define	DEF_USB_REQ_VENDOR	0x40			// 厂商请求 
#define	DEF_USB_REQ_RESERVE	0x60			// 保留请求 

//-------------------------------------------------------------------------------------------------
//  USB标准设备请求, RequestType的位6位5=00(Standard), 外置固件模式可能用到 
//-------------------------------------------------------------------------------------------------
// 
#define	DEF_USB_CLR_FEATURE	0x01
#define	DEF_USB_SET_FEATURE	0x03
#define	DEF_USB_GET_STATUS	0x00
#define	DEF_USB_SET_ADDRESS	0x05
#define	DEF_USB_GET_DESCR	0x06
#define	DEF_USB_SET_DESCR	0x07
#define	DEF_USB_GET_CONFIG	0x08
#define	DEF_USB_SET_CONFIG	0x09
#define	DEF_USB_GET_INTERF	0x0A
#define	DEF_USB_SET_INTERF	0x0B
#define	DEF_USB_SYNC_FRAME	0x0C

//----------------------------------------------------------------------------------------------------------------
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//----------------------------------------------------------------------------------------------------------------

//****************************************************************************************************************
//****************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------
// FILE: CH375HF.H 
//----------------------------------------------------------------------------------------------------------------
//****************************************************************************************************************
//****************************************************************************************************************
// 

#ifdef __CX51__
#ifndef __C51__
#define __C51__		1
#endif
#endif

#ifdef __C51__
typedef bit bdata                    BOOL1;
#else
#define data
#define idata
#define xdata
typedef unsigned char                BOOL1;
#endif

#ifndef UINT8
typedef unsigned char                UINT8;
#endif
#ifndef UINT16
typedef unsigned short               UINT16;
#endif
#ifndef UINT32
typedef unsigned long                UINT32;

⌨️ 快捷键说明

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