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

📄 ch375.h

📁 文件系统,运行硬件环境:单片机,软件环境:keilc
💻 H
📖 第 1 页 / 共 2 页
字号:
#define CMD_CHK_SUSPEND     0x0B            /* 设备方式: 设置检查USB总线挂起状态的方式 */
/* 输入: 数据10H, 检查方式 */
/*                    00H=不检查USB挂起, 04H=以50mS为间隔检查USB挂起, 05H=以10mS为间隔检查USB挂起 */

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

/* ************************************************************************** */
/* 以下改进的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为超时后的重试次数 */

/* ************************************************************************** */
/* 以下新增的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存储器最大逻辑单元号 */
/* 输出中断 */

/******************************************************************************/
/* 操作状态 */

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

/******************************************************************************/
/* USB中断状态 */

/* 以下状态代码为特殊事件中断, 仅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总线复位 */
#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 */
/* 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总线复位 */

/* 以下状态代码2XH-3XH用于USB主机方式的通讯失败代码, 仅CH375/CH375A支持 */
/*   位7-位6为00 */
/*   位5为1 */
/*   位4指示当前接收的数据包是否同步 */
/*   位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 */          /* 错误:未定义 */

/* 以下状态代码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存储器操作失败 */

/******************************************************************************/
/* 常用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

/******************************************************************************/

/* 以下为新的定义,原来不属于CH375INC.H文件 ************************************/

#define CH375_BLOCK_SIZE        64      /* CH375 maximum data block size */
#define CH375_BLK_PER_SEC       8       /* CH375 block per sector, SECTOR_SIZE/CH375_BLOCK_SIZE */

/******************************************************************************/

unsigned char   mCH375Init(void );
unsigned char   mWaitInterrupt(void );
void            mDelay2uS(void );
void            DelayMs(unsigned char nFactor);
unsigned long   SwapINT32(unsigned long dData);
unsigned int    SwapINT16(unsigned int dData);
unsigned char   mInitDisk( void );
unsigned char   ReadCapacity(void);
UINT8	RBC_Read( UINT32 iLbaStart, UINT8 iSectorCount, UINT8 xdata *oDataBuffer );
unsigned char   RBC_Write(unsigned long lba,unsigned char len,unsigned char xdata *pBuffer);
unsigned char   SPC_RequestSense(void);
unsigned char   SPC_TestUnit(void);
unsigned char   SPC_LockMedia(void);

#endif

⌨️ 快捷键说明

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