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

📄 usbiox.h

📁 USB2I2C USB2SPI USB2ISP资料开发包
💻 H
字号:
//*****************************************
//**  Copyright USBIO (C) S.ZK 2008.04   **
//**  Web:  http://www.usb-i2c-spi.com   **
//*****************************************
//**  LIB for USB interface chip USB2XXX **
//**  C, GCC                             **
//*****************************************
//
// USB总线接口芯片USB2XXX应用层接口库 V1.6
// USB2XXX-LIB  V1.0
// 运行环境: Linux
// support USB chip: USB2I2C,USB2SPI,USB2ISP
// USB  ->  I2C, SPI, EPP, MEM, GPIO (MASTER)
// USB <=> I2C:SCL/SDA
//     <=> SPI:SCK/MOSI/MISO/CS0-CS2
//     <=> EPP PARR
//     <=> MEM 

#ifndef		_USBIOX_DLL_H
#define		_USBIOX_DLL_H

#ifdef __cplusplus
extern "C" {
#endif

#define		mOFFSET( s, m )			( (Uunsigned long) & ( ( ( s * ) 0 ) -> m ) )	// 定义获取结构成员相对偏移地址的宏

#ifndef		max
#define		max( a, b )				( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )	// 较大值
#endif

#ifndef		min
#define		min( a, b )				( ( ( a ) < ( b ) ) ? ( a ) : ( b ) )	// 较小值
#endif

#ifdef		ExAllocatePool
#undef		ExAllocatePool						// 删除带TAG的内存分配
#endif
#define FALSE 0#define TRUE 1#define		mUSBI0_MAX_NUMBER		16			// 最多同时连接的USB2XXX设备数#define		mMAX_BUFFER_LENGTH		0x1000		// 数据缓冲区最大长度4096
#define		mDEFAULT_BUFFER_LEN		0x0400		// 数据缓冲区默认长度1024
#define		mUSBI0_PACKET_LENGTH 32#define 	mUSBI0B_PACKET_LENGTH 64
// USB2XXX端点地址
#define		mUSBI0_ENDP_INTER_UP		0x81		// USB2XXX的中断数据上传端点的地址
#define		mUSBI0_ENDP_INTER_DOWN	0x01		// USB2XXX的中断数据下传端点的地址
#define		mUSBI0_ENDP_DATA_UP		0x82		// USB2XXX的数据块上传端点的地址
#define		mUSBI0_ENDP_DATA_DOWN	0x02		// USB2XXX的数据块下传端点的地址

// 设备层接口提供的管道操作命令
#define		mPipeDeviceCtrl			0x00000004	// USB2XXX的综合控制管道
#define		mPipeInterUp				0x00000005	// USB2XXX的中断数据上传管道
#define		mPipeDataUp				0x00000006	// USB2XXX的数据块上传管道
#define		mPipeDataDown			0x00000007	// USB2XXX的数据块下传管道

// 应用层接口的功能代码
#define		mFuncNoOperation			0x00000000	// 无操作
#define		mFuncGetVersion			0x00000001	// 获取驱动程序版本号
#define		mFuncGetConfig			0x00000002	// 获取USB设备配置描述符
#define		mFuncSetTimeout			0x00000009	// 设置USB通讯超时
#define		mFuncSetExclusive			0x0000000b	// 设置独占使用
#define		mFuncResetDevice			0x0000000c	// 复位USB设备
#define		mFuncResetPipe			0x0000000d	// 复位USB管道
#define		mFuncAbortPipe			0x0000000e	// 取消USB管道的数据请求

// USB2XXX并口专用的功能代码
#define		mFuncSetParaMode			0x0000000f	// 设置并口模式
#define		mFuncReadData0			0x00000010	// 从并口读取数据块0
#define		mFuncReadData1			0x00000011	// 从并口读取数据块1
#define		mFuncWriteData0			0x00000012	// 向并口写入数据块0
#define		mFuncWriteData1			0x00000013	// 向并口写入数据块1
#define		mFuncWriteRead			0x00000014	// 先输出再输入
#define		mFuncBufferMode			0x00000020	// 设定缓冲上传模式及查询缓冲区中的数据长度
#define		mFuncBufferModeDn		0x00000021	// 设定缓冲下传模式及查询缓冲区中的数据长度


// USB设备标准请求代码
#define		mUSB_CLR_FEATURE		0x01
#define		mUSB_SET_FEATURE		0x03
#define		mUSB_GET_STATUS		0x00
#define		mUSB_SET_ADDRESS		0x05
#define		mUSB_GET_DESCR		0x06
#define		mUSB_SET_DESCR			0x07
#define		mUSB_GET_CONFIG		0x08
#define		mUSB_SET_CONFIG		0x09
#define		mUSB_GET_INTERF		0x0a
#define		mUSB_SET_INTERF		0x0b
#define		mUSB_SYNC_FRAME		0x0c

// USB2XXX控制传输的厂商专用请求类型
#define		mUSBI0_VENDOR_READ		0xC0		// 通过控制传输实现的USB2XXX厂商专用读操作
#define		mUSBI0_VENDOR_WRITE		0x40		// 通过控制传输实现的USB2XXX厂商专用写操作

// USB2XXX控制传输的厂商专用请求代码
#define		mUSBI0_PARA_INIT			0xB1		// 初始化并口
#define		mUSBI0_I2C_STATUS			0x52		// 获取I2C接口的状态
#define		mUSBI0_I2C_COMMAND		0x53		// 发出I2C接口的命令

// USB2XXX并口操作命令代码
#define		mUSBI0_PARA_CMD_R0		0xAC		// 从并口读数据0,次字节为长度
#define		mUSBI0_PARA_CMD_R1		0xAD		// 从并口读数据1,次字节为长度
#define		mUSBI0_PARA_CMD_W0		0xA6		// 向并口写数据0,从次字节开始为数据流
#define		mUSBI0_PARA_CMD_W1		0xA7		// 向并口写数据1,从次字节开始为数据流
#define		mUSBI0_PARA_CMD_STS		0xA0		// 获取并口状态

// USB2XXX并口操作命令代码

#define		mUSBIOA_CMD_SET_OUTPUT	0xA1		// 设置并口输出
#define		mUSBIOA_CMD_IO_ADDR		0xA2		// MEM带地址读写/输入输出,从次字节开始为命令流
#define		mUSBIOA_CMD_PRINT_OUT	0xA3		// PRINT兼容打印方式输出,从次字节开始为数据流
#define		mUSBIOB_CMD_PWM_OUT		0xA4		// PWM数据输出的命令包,从次字节开始为数据流
#define		mUSBIOB_CMD_SHORT_PKT	0xA5		// 短包,次字节是该命令包的真正长度,再次字节及之后的字节是原命令包
#define		mUSBIOA_CMD_SPI_STREAM	0xA8		// SPI接口的命令包,从次字节开始为数据流
#define		mUSBIOA_CMD_SIO_STREAM	0xA9		// SIO接口的命令包,从次字节开始为数据流
#define		mUSBIOA_CMD_I2C_STREAM	0xAA		// I2C接口的命令包,从次字节开始为I2C命令流
#define		mUSBIOA_CMD_UIO_STREAM	0xAB		// UIO接口的命令包,从次字节开始为命令流
#define		mUSBIOB_CMD_PIO_STREAM	0xAE		// PIO接口的命令包,从次字节开始为数据流

// USB2XXX控制传输的厂商专用请求代码

#define		mUSBIOA_BUF_CLEAR			0xB2		// 清除未完成的数据
#define		mUSBIOA_I2C_CMD_X			0x54		// 发出I2C接口的命令,立即执行
#define		mUSBIOA_DELAY_MS			0x5E		// 以亳秒为单位延时指定时间
#define		mUSBIOA_GET_VER			0x5F		// 获取芯片版本

#define		mUSBI0_EPP_IO_MAX		( mUSBI0_PACKET_LENGTH - 1 )	// USB2XXX在EPP/MEM方式下单次读写数据块的最大长度
#define		mUSBIOA_EPP_IO_MAX		0xFF		// USB2XXX(A)在EPP/MEM方式下单次读写数据块的最大长度

#define		mUSBIOA_CMD_IO_ADDR_W	0x00		// MEM带地址读写/输入输出的命令流:写数据,位6-位0为地址,下一个字节为待写数据
#define		mUSBIOA_CMD_IO_ADDR_R	0x80		// MEM带地址读写/输入输出的命令流:读数据,位6-位0为地址,读出数据一起返回

#define		mUSBIOA_CMD_I2C_STM_STA	0x74		// I2C接口的命令流:产生起始位
#define		mUSBIOA_CMD_I2C_STM_STO	0x75		// I2C接口的命令流:产生停止位
#define		mUSBIOA_CMD_I2C_STM_OUT	0x80		// I2C接口的命令流:输出数据,位5-位0为长度,后续字节为数据,0长度则只发送一个字节并返回应答
#define		mUSBIOA_CMD_I2C_STM_IN	0xC0		// I2C接口的命令流:输入数据,位5-位0为长度,0长度则只接收一个字节并发送无应答
#define		mUSBIOA_CMD_I2C_STM_MAX	( min( 0x3F, mUSBI0_PACKET_LENGTH ) )	// I2C接口的命令流单个命令输入输出数据的最大长度
#define		mUSBIOA_CMD_I2C_STM_SET	0x60		// I2C接口的命令流:设置参数,位2=SPI的I/O数(0=单入单出,1=双入双出),位1位0=I2C速度(00=低速,01=标准,10=快速,11=高速)
#define		mUSBIOA_CMD_I2C_STM_US	0x40		// I2C接口的命令流:以微秒为单位延时,位3-位0为延时值
#define		mUSBIOA_CMD_I2C_STM_MS	0x50		// I2C接口的命令流:以亳秒为单位延时,位3-位0为延时值
#define		mUSBIOA_CMD_I2C_STM_DLY	0x0F		// I2C接口的命令流单个命令延时的最大值
#define		mUSBIOA_CMD_I2C_STM_END	0x00		// I2C接口的命令流:命令包提前结束

#define		mUSBIOA_CMD_UIO_STM_IN	0x00		// UIO接口的命令流:输入数据D7-D0
#define		mUSBIOA_CMD_UIO_STM_DIR	0x40		// UIO接口的命令流:设定I/O方向D5-D0,位5-位0为方向数据
#define		mUSBIOA_CMD_UIO_STM_OUT	0x80		// UIO接口的命令流:输出数据D5-D0,位5-位0为数据
#define		mUSBIOA_CMD_UIO_STM_US	0xC0		// UIO接口的命令流:以微秒为单位延时,位5-位0为延时值
#define		mUSBIOA_CMD_UIO_STM_END	0x20		// UIO接口的命令流:命令包提前结束


// USB2XXX并口工作模式
#define		mUSBI0_PARA_MODE_EPP		0x00		// USB2XXX并口工作模式为EPP方式
#define		mUSBI0_PARA_MODE_EPP17	0x00		// USB2XXX(A)并口工作模式为EPP方式V1.7
#define		mUSBI0_PARA_MODE_EPP19	0x01		// USB2XXX(A)并口工作模式为EPP方式V1.9
#define		mUSBI0_PARA_MODE_MEM		0x02		// USB2XXX并口工作模式为MEM方式
#define		mUSBI0_PARA_MODE_ECP		0x03		// USB2XXX(A)并口工作模式为ECP方式


// I/O方向设置位定义,直接输入的状态信号的位定义,直接输出的位数据定义
#define		mStateBitERR			0x00000100	// 只读可写,ERR#引脚输入状态,1:高电平,0:低电平
#define		mStateBitPEMP			0x00000200	// 只读可写,PEMP引脚输入状态,1:高电平,0:低电平
#define		mStateBitINT			0x00000400	// 只读可写,INT#引脚输入状态,1:高电平,0:低电平
#define		mStateBitSLCT			0x00000800	// 只读可写,SLCT引脚输入状态,1:高电平,0:低电平
#define		mStateBitWAIT			0x00002000	// 只读可写,WAIT#引脚输入状态,1:高电平,0:低电平
#define		mStateBitDATAS		0x00004000	// 只写可读,DATAS#/READ#引脚输入状态,1:高电平,0:低电平
#define		mStateBitADDRS		0x00008000	// 只写可读,ADDRS#/ADDR/ALE引脚输入状态,1:高电平,0:低电平
#define		mStateBitRESET		0x00010000	// 只写,RESET#引脚输入状态,1:高电平,0:低电平
#define		mStateBitWRITE		0x00020000	// 只写,WRITE#引脚输入状态,1:高电平,0:低电平
#define		mStateBitSCL			0x00400000	// 只读,SCL引脚输入状态,1:高电平,0:低电平
#define		mStateBitSDA			0x00800000	// 只读,SDA引脚输入状态,1:高电平,0:低电平


#define		MAX_DEVICE_PATH_SIZE		128			// 设备名称的最大字符数
#define		MAX_DEVICE_ID_SIZE		64			// 设备ID的最大字符数

typedef	enum	_EEPROM_TYPE {					// EEPROM型号
	ID_24C01,
	ID_24C02,
	ID_24C04,
	ID_24C08,
	ID_24C16,
	ID_24C32,
	ID_24C64,
	ID_24C128,
	ID_24C256,
	ID_24C512,
	ID_24C1024,
	ID_24C2048,
	ID_24C4096
} EEPROM_TYPE;




#ifdef __cplusplus
}
#endif

#endif		// _USBIOX_DLL_H

⌨️ 快捷键说明

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