📄 ch375hf(4).h
字号:
#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 + -