📄 ch375hf(4).h
字号:
//================================================================================================================
//****************************************************************************************************************
// Module Name : CH375HF.H
// Device object:
// Create date : 2005-11-07
// Modify date : 2005-11-10
// Description : USB 1.1 Host/Device for CH375
// USB Host File Interface for CH375
// Author : Li yuanzheng
// Version : V1.0
//****************************************************************************************************************
//================================================================================================================
//
//-------------------------------------------------------------------------------------------------
// Updata: 2005.01.04, 2005.01.12, 2005.01.26, 2005.03.01, 2005.07.29
//
// CH375 主机文件系统接口 V2.8
// 支持: FAT12/FAT16
// MCS51单片机, 查询方式或者中断方式, 支持小/中/大模式编译
// 支持3种数据存取方式: 普通的单DPTR切换方式, ATMEL/PHILIPS/SST等单片机的双DPTR切换方式,
// 用P2+R0指向端口而用DPTR指向外部RAM的方式
//-------------------------------------------------------------------------------------------------
//
#ifndef __CH375HF_H__
#define __CH375HF_H__
#define CH375_LIB_VER 0x28
#ifdef __cplusplus
extern "C" {
#endif
//****************************************************************************************************************
//****************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------
// FILE: CH375INC.H
//----------------------------------------------------------------------------------------------------------------
//****************************************************************************************************************
//****************************************************************************************************************
//
//=================================================================================================
// 硬件特性
//=================================================================================================
//
#define CH375_MAX_DATA_LEN 0x40 // 最大数据包的长度, 内部缓冲区的长度 ( 64B )
//=================================================================================================
// 命令代码
//=================================================================================================
//
//
#define CMD_RESET_ALL 0x05 // 执行硬件复位
#define CMD_CHECK_EXIST 0x06 // 测试工作状态
// 输入: 任意数据
// 输出: 输入数据的按位取反
#define CMD_SET_USB_MODE 0x15 // 设置USB工作模式
// 输入: 模式代码
// 00H=未启用的设备方式, 01H=已启用的设备方式并且使用外部固件模式, 02H=已启用的设备方式并且使用内置固件模式, 03H=已启用的设备方式并且使用中断端点和内置固件模式
// 04H=未启用的主机方式, 05H=已启用的主机方式, 06H=已启用的主机方式并且自动产生SOF包, 07H=已启用的主机方式并且复位USB总线
// 输出: 操作状态( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值说明操作未完成 )
#define CMD_GET_STATUS 0x22 // 获取中断状态并取消中断请求
// 输出: 中断状态
//-------------------------------------------------------------------------------------------------
// 以下命令用于USB主机方式, 只有CH375支持
//-------------------------------------------------------------------------------------------------
//
#define CMD_SET_BAUDRATE 0x02 // 串口方式: 设置串口通讯波特率
// 输入: 波特率分频系数, 波特率分频常数
// 输出: 操作状态( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值说明操作未完成 )
#define CMD_RD_USB_DATA 0x28 // 从当前USB中断的端点缓冲区读取数据块, 并释放缓冲区
// 输出: 长度, 数据流
#define CMD_WR_USB_DATA7 0x2B // 该命令向USB主机端点的输出缓冲区或者USB端点2的上传缓冲区写入数据块.
// 输入: 长度, 数据流
#define CMD_ABORT_NAK 0x17 // 主机方式: 放弃当前NAK的重试
//-----------------------------------------------
// USB 存储设备类命令,专用于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存储器的写操作 */
/* 输出中断 */
//-----------------------------------------------
// USB 主机方式下的执行事务命令以及常用的控制传输命令
//
#define CMD_SET_USB_ADDR 0x13 // 设置USB地址 ( 外部固件模式 )
// 输入: 地址值
#define CMD_SET_ENDP6 0x1C // 设置USB端点2/主机端点的接收器 ( Waiting for 4 uS )
// 输入: 工作方式
// 位7为1则位6为同步触发位, 否则同步触发位不变
// 位3~位0为事务响应方式: 0000-就绪ACK, 1101-就绪但不返回ACK, 1110-正忙NAK, 1111-错误STALL
#define CMD_SET_ENDP7 0x1D // 设置USB端点2/主机端点的发送器 ( Waiting for 4 uS )
// 输入: 工作方式
// 位7为1则位6为同步触发位, 否则同步触发位不变
// 位3~位0为事务响应方式: 0000-就绪ACK, 1101-就绪但无须应答, 1110-正忙NAK, 1111-错误STALL
#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_SET_USB_ID 0x12 // 设备方式: 设置USB厂商VID和产品PID
// 输入: 厂商ID低字节, 厂商ID高字节, 产品ID低字节, 产品ID高字节
#define CMD_UNLOCK_USB 0x23 // 设备方式: 释放当前USB缓冲区
//#define CMD_RD_USB_DATA 0x28 // 从当前USB中断的端点缓冲区读取数据块, 并释放缓冲区
// 输出: 长度, 数据流
#define CMD_WR_USB_DATA5 0x2A // 设备方式: 向USB端点1的发送缓冲区写入数据块
// 输入: 长度, 数据流
//#define CMD_WR_USB_DATA7 0x2B // 设备方式: 向USB端点2的发送缓冲区写入数据块
// 输入: 长度, 数据流
//-----------------------------------------------
// 外置固件模式下
//
//#define CMD_SET_USB_ADDR 0x13 // 设备方式: 设置USB地址 ( 外部固件模式 )
// 输入: 地址值
#define CMD_SET_ENDP2 0x18 // 设备方式: 设置USB端点0的接收器 ( Waiting for 4 uS )
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP3 0x19 // 设备方式: 设置USB端点0的发送器 ( Waiting for 4 uS )
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP4 0x1A // 设备方式: 设置USB端点1的接收器 ( Waiting for 4 uS )
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
#define CMD_SET_ENDP5 0x1B // 设备方式: 设置USB端点1的发送器 ( Waiting for 4 uS )
/* 输入: 工作方式 */
/* 位7为1则位6为同步触发位, 否则同步触发位不变 */
/* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
//#define CMD_SET_ENDP6 0x1C // 设置USB端点2/主机端点的接收器 ( Waiting for 4 uS )
// 输入: 工作方式
// 位7为1则位6为同步触发位, 否则同步触发位不变
// 位3~位0为事务响应方式: 0000-就绪ACK, 1101-就绪但不返回ACK, 1110-正忙NAK, 1111-错误STALL
//#define CMD_SET_ENDP7 0x1D // 设置USB端点2/主机端点的发送器 ( Waiting for 4 uS )
// 输入: 工作方式
// 位7为1则位6为同步触发位, 否则同步触发位不变
// 位3~位0为事务响应方式: 0000-就绪ACK, 1101-就绪但无须应答, 1110-正忙NAK, 1111-错误STALL
#define CMD_GET_TOGGLE 0x0A // 获取OUT事务的同步状态
// 输入: 数据1AH
// 输出: 同步状态
// 位4为1则OUT事务同步, 否则OUT事务不同步
#define CMD_WR_USB_DATA3 0x29 // 设备方式: 向USB端点0的发送缓冲区写入数据块
// 输入: 长度, 数据流
//*************************************************************************************************
//=================================================================================================
// 以下新增的V2.0命令码, 仅CH372A/CH375A支持
//=================================================================================================
//*************************************************************************************************
//
#define CMD_GET_IC_VER 0x01 // 获取芯片及固件版本
// 输出: 版本号( 位7为1, 位6为0, 位5~位0为版本号 )
// CH375返回无效值为5FH, CH375A返回版本号的值为0A2H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -