📄 ch375hf9.h
字号:
/* 2004.06.05, 2004.09.20, 2004.10.22, 2004.11.20, 2004.12.12, 2004.12.28, 2005.01.04, 2005.01.12
****************************************
** Copyright (C) W.ch 1999-2005 **
** Web: http://www.winchiphead.com **
****************************************
** USB Host File Interface for CH375 **
** TC2.0@PC, ADS_C_1.2@ARM **
****************************************
*/
/* CH375 主机文件系统接口 V2.3 */
/* 支持: FAT12/FAT16/FAT32 */
/* ARM单片机, 查询方式或者中断方式 */
#ifndef __CH375HF_H__
#define __CH375HF_H__
#define CH375_LIB_VER 0x23
#ifdef __cplusplus
extern "C" {
#endif
/* FILE: CH375INC.H */
/* ********************************************************************************************************************* */
/* 硬件特性 */
#define CH375_MAX_DATA_LEN 0x40 /* 最大数据包的长度,内部缓冲区的长度 */
/* ********************************************************************************************************************* */
/* 命令代码 */
#define CMD_RESET_ALL 0x05 /* 执行硬件复位 */
#define CMD_CHECK_EXIST 0x06 /* 测试工作状态 */
/* 输入: 任意数据 */
/* 输出: 输入数据的按位取反 */
#define CMD_SET_USB_ID 0x12 /* 设置USB厂商VID和产品PID */
/* 输入: 厂商ID低字节, 厂商ID高字节, 产品ID低字节, 产品ID高字节 */
#define CMD_SET_USB_ADDR 0x13 /* 设置USB地址 */
/* 输入: 地址值 */
#define CMD_SET_USB_MODE 0x15 /* 设置USB工作模式 */
/* 输入: 模式代码 */
/* 00H=未启用的设备方式, 01H=已启用的设备方式并且使用外部固件模式, 02H=已启用的设备方式并且使用内置固件模式, */
/* 04H=未启用的主机方式, 05H=已启用的主机方式, 06H=已启用的主机方式并且自动产生SOF包, 07H=已启用的主机方式并且复位USB总线 */
/* 输出: 状态 */
#define CMD_SET_ENDP2 0x18 /* 设置USB端点0的接收器 */
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1101-忽略, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP3 0x19 /* 设置USB端点0的发送器 */
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1101-忽略, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP4 0x1A /* 设置USB端点1的接收器 */
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1101-忽略, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP5 0x1B /* 设置USB端点1的发送器 */
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1101-忽略, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP6 0x1C /* 设置USB端点2/主机端点的接收器 */
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1101-忽略, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP7 0x1D /* 设置USB端点2/主机端点的发送器 */
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1101-忽略, 1110-正忙NAK, 1111-错误STALL */
#define CMD_GET_TOGGLE 0x0A /* 获取OUT事务的同步状态 */
/* 输入: 数据1AH */
/* 输出: 同步状态 */
/* 位4为1则OUT事务同步, 否则OUT事务不同步 */
#define CMD_GET_STATUS 0x22 /* 获取中断状态并取消中断请求 */
/* 输出: 中断状态 */
#define CMD_UNLOCK_USB 0x23 /* 释放当前USB缓冲区 */
#define CMD_RD_USB_DATA 0x28 /* 从当前USB中断的端点缓冲区读取数据块,并释放缓冲区 */
/* 输出: 长度, 数据流 */
#define CMD_WR_USB_DATA3 0x29 /* 向USB端点0的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */
#define CMD_WR_USB_DATA5 0x2A /* 向USB端点1的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */
#define CMD_WR_USB_DATA7 0x2B /* 向USB端点2的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */
/* 以下命令用于USB主机方式 */
#define CMD_SET_BAUDRATE 0x02 /* 设置串口通讯波特率 */
/* 输入: 波特率分频系数, 波特率分频常数 */
/* 输出: 状态 */
#define CMD_ABORT_NAK 0x17 /* 主机方式: 放弃当前NAK的重试 */
#define CMD_SET_RETRY 0x0B /* 主机方式: 设置USB事务操作的重试次数 */
/* 输入: 数据25H, 重试次数 */
/* 位7为1则收到NAK时无限重试, 位3~位0为超时后的重试次数 */
#define CMD_ISSUE_TOKEN 0x4F /* 主机方式: 发出令牌,执行事务 */
/* 输入: 事务属性 */
/* 低4位是令牌, 高4位是端点号 */
/* 输出中断 */
#define CMD_CLR_STALL 0x41 /* 主机方式: 控制传输-清除端点错误 */
/* 输入: 端点号 */
/* 输出中断 */
#define CMD_SET_ADDRESS 0x45 /* 主机方式: 控制传输-设置USB地址 */
/* 输入: 地址值 */
/* 输出中断 */
#define CMD_GET_DESCR 0x46 /* 主机方式: 控制传输-获取描述符 */
/* 输入: 描述符类型 */
/* 输出中断 */
#define CMD_SET_CONFIG 0x49 /* 主机方式: 控制传输-设置USB配置 */
/* 输入: 配置值 */
/* 输出中断 */
#define CMD_DISK_INIT 0x51 /* 主机方式: 初始化USB存储器 */
/* 输出中断 */
#define CMD_DISK_RESET 0x52 /* 主机方式: 复位USB存储器 */
/* 输出中断 */
#define CMD_DISK_SIZE 0x53 /* 主机方式: 获取USB存储器的容量 */
/* 输出中断 */
#define CMD_DISK_READ 0x54 /* 主机方式: 从USB存储器读数据块(以扇区512字节为单位) */
/* 输入: LBA扇区地址(总长度32位,低字节在前), 扇区数(01H~FFH) */
/* 输出中断 */
#define CMD_DISK_RD_GO 0x55 /* 主机方式: 继续执行USB存储器的读操作 */
/* 输出中断 */
#define CMD_DISK_WRITE 0x56 /* 主机方式: 向USB存储器写数据块(以扇区512字节为单位) */
/* 输入: LBA扇区地址(总长度32位,低字节在前), 扇区数(01H~FFH) */
/* 输出中断 */
#define CMD_DISK_WR_GO 0x57 /* 主机方式: 继续执行USB存储器的写操作 */
/* 输出中断 */
/* ********************************************************************************************************************* */
/* 操作状态 */
#define CMD_RET_SUCCESS 0x51 /* 命令操作成功 */
#define CMD_RET_ABORT 0x5F /* 命令操作失败 */
/* ********************************************************************************************************************* */
/* USB中断状态 */
/* 以下状态代码0XH用于USB设备方式 */
/* 内置固件模式下只需要处理: USB_INT_EP1_IN, USB_INT_EP2_OUT, USB_INT_EP2_IN */
/* 位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主机方式的通讯失败代码 */
/* 位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主机方式的操作状态代码 */
#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -