u盘读写控制源程序_ch376芯片

发布时间 : 星期四 文章u盘读写控制源程序_ch376芯片更新完毕开始阅读

UINT8 mBuffer[ MAX_FILE_NAME_LEN ]; } Default; INQUIRY_DATA DiskMountInq; /* 返回: INQUIRY命令的返回数据 */ /* CMD0H_DISK_MOUNT: 初始化磁盘并测试磁盘是否就绪,首次执行时 */ FAT_DIR_INFO OpenDirInfo; /* 返回: 枚举到的文件目录信息 */ /* CMD0H_FILE_OPEN: 枚举文件和目录(文件夹) */ FAT_DIR_INFO EnumDirInfo; /* 返回: 枚举到的文件目录信息 */ /* CMD0H_FILE_ENUM_GO: 继续枚举文件和目录(文件夹) */ struct { UINT8 mUpdateFileSz; 则禁止更新长度 */ } FileCLose; 文件 */ struct {

/* 输入参数: 是否允许更新文件长度, 0

/* CMD1H_FILE_CLOSE: 关闭当前已经打开的

UINT8 mDirInfoIndex; /* 输入参数: 指定需要读取的目录信息结构在扇区内的索引号, 0FFH则为当前已经打开的文件 */ } DirInfoRead; /* CMD1H_DIR_INFO_READ: 读取文件的目录信息 */ union { UINT32 mByteOffset; /* 输入参数: 偏移字节数,以字节为单位的偏移量(总长度32位,低字节在前) */ UINT32 mSectorLba; /* 返回: 当前文件指针对应的绝对线性扇区号,0FFFFFFFFH则已到文件尾(总长度32位,低字节在前) */ } ByteLocate; /* CMD4H_BYTE_LOCATE: 以字节为单位移动当前文件指针 */ struct { UINT16 mByteCount; /* 输入参数: 请求读取的字节数(总长度16位,低字节在前) */ } ByteRead; /* CMD2H_BYTE_READ: 以字节为单位从当前位置读取数据块 */ struct { UINT16 mByteCount; /* 输入参数: 请求写入的字节数(总长度16位,低字节在前) */

} ByteWrite; 前位置写入数据块 */ union {

/* CMD2H_BYTE_WRITE: 以字节为单位向当

UINT32 mSectorOffset; /* 输入参数: 偏移扇区数,以扇区为单位的偏移量(总长度32位,低字节在前) */ UINT32 mSectorLba; /* 返回: 当前文件指针对应的绝对线性扇区号,0FFFFFFFFH则已到文件尾(总长度32位,低字节在前) */ } SectorLocate; 动当前文件指针 */ struct { UINT8 mSectorCount;

UINT8 mReserved1; UINT8 mReserved2;

UINT8

mReserved3;

UINT32 mStartSector; 扇区号(总长度32位,低字节在前) */ } SectorRead;

位置读取数据块 */ struct { UINT8 mSectorCount; UINT8 mReserved1; UINT8 mReserved2; UINT8 mReserved3; UINT32 mStartSector; 扇区号(总长度32位,低字节在前) */ } SectorWrite;

位置写入数据块 */ struct { UINT32 mDiskSizeSec; 32位,低字节在前) */ } DiskCapacity;

量 */ struct { UINT32 mTotalSector; 位,低字节在前) */ UINT32 mFreeSector;

32位,低字节在前) */

/* CMD4H_SEC_LOCATE: 以扇区为单位移 /* 输入参数: 请求读取的扇区数 */

/* 返回: 允许读取的扇区数 */

/* 返回: 允许读取的扇区块的起始绝对线性/* CMD1H_SEC_READ: 以扇区为单位从当前

/* 输入参数: 请求写入的扇区数 */ /* 返回: 允许写入的扇区数 */

/* 返回: 允许写入的扇区块的起始绝对线性/* CMD1H_SEC_WRITE: 以扇区为单位在当前

/* 返回: 整个物理磁盘的总扇区数(总长度/* CMD0H_DISK_CAPACITY: 查询磁盘物理容

/* 返回: 当前逻辑盘的总扇区数(总长度32/* 返回: 当前逻辑盘的剩余扇区数(总长度

UINT8 mDiskFat; 型,1-FAT12,2-FAT16,3-FAT32 */ } DiskQuery;

BULK_ONLY_CBW DiskBocCbw;

器执行BulkOnly传输协议的命令 */ struct { UINT8 mMaxLogicUnit; */ } DiskMaxLun;

USB存储器最大逻辑单元号 */

INQUIRY_DATA DiskInitInq;

*/ INQUIRY_DATA DiskInqData;

器特性 */

SENSE_DATA ReqSenseData;

*/

器错误 */ struct { UINT32 mDiskSizeSec; 32位,高字节在前) */ } DiskSize;

容量 */ struct { UINT32 mStartSector; 节在前) */ UINT8 mSectorCount;

} DiskRead;

数据块(以扇区为单位) */ struct { UINT32 mStartSector; 节在前) */ UINT8 mSectorCount;

/* 返回: 当前逻辑盘的FAT类

/* CMD_DiskQuery, 查询磁盘信息 */ /* 输入参数: CBW命令结构 */

/* CMD0H_DISK_BOC_CMD: 对USB存储

/* 返回: USB存储器的最大逻辑单元号/* CMD0H_DISK_MAX_LUN: 控制传输-获取

/* 返回: INQUIRY命令的返回数据 */ /* CMD0H_DISK_INIT: 初始化USB存储器/* 返回: INQUIRY命令的返回数据 */ /* CMD0H_DISK_INQUIRY: 查询USB存储

/* 返回: REQUEST SENSE命令的返回数据

/* CMD0H_DISK_R_SENSE: 检查USB存储

/* 返回: 整个物理磁盘的总扇区数(总长度

/* CMD0H_DISK_SIZE: 获取USB存储器的

/* 输入参数: LBA扇区地址(总长度32位,低字 /* 输入参数: 请求读取的扇区数 */

/* CMD5H_DISK_READ: 从USB存储器读

/* 输入参数: LBA扇区地址(总长度32位,低字

/* 输入参数: 请求写入的扇区数 */

} DiskWrite; /* CMD5H_DISK_WRITE: 向USB存储器写数据块(以扇区为单位) */

} CH376_CMD_DATA, *P_CH376_CMD_DATA;

#endif /*

********************************************************************************************************************* */ /* 主机文件模式下的文件系统变量的地址 */

#ifndef VAR_FILE_SIZE

/* 8位/单字节变量 */

#define VAR_SYS_BASE_INFO 0x20 /* 当前系统的基本信息 */

/* 位6用于指示USB存储设备的子类别SubClass-Code, 位6为0则说明子类别为6, 位6为1则说明子类别是非6的其它值 */

/* 位5用于指示USB设备方式下的USB配置状态和USB主机方式下的USB设备连接状态 */

/* USB设备方式下, 位5为1则USB配置完成, 位5位0则尚未配置 */ /* USB主机方式下, 位5为1则USB端口存在USB设备, 位5位0则USB端口没有USB设备 */

/* 位4用于指示USB设备方式下的缓冲区锁定状态, 位4为1则说明USB缓冲区处于锁定状态, 位6为1则说明已经释放 */ /* 其它位, 保留,请勿修改 */ #define VAR_RETRY_TIMES 0x25 /* USB事务操作的重试次数 */

/* 位7为0则收到NAK时不重试, 位7为1位6为0则收到NAK时无限重试(可以用CMD_ABORT_NAK命令放弃重试), 位7为1位6为1则收到NAK时最多重试3秒 */ /* 位5~位0为超时后的重试次数 */ #define VAR_FILE_BIT_FLAG 0x26 /* 主机文件模式下的位标志 */

/* 位1和位0, 逻辑盘的FAT文件系统标志, 00-FAT12, 01-FAT16, 10-FAT32, 11-非法 */

/* 位2, 当前缓冲区中的FAT表数据是否被修改标志, 0-未修改, 1-已修改 */ /* 位3, 文件长度需要修改标志, 当前文件被追加数据, 0-未追加无需修改, 1-已追加需要修改 */

/* 其它位, 保留,请勿修改 */ #define VAR_DISK_STATUS 0x2B /* 主机文件模式下的磁盘及文件状态 */ #define VAR_SD_BIT_FLAG 0x30 /* 主机文件模式下SD卡的位标志 */ /* 位0, SD卡版本, 0-只支持SD第一版,1-支持SD第二版 */ /* 位1, 自动识别, 0-SD卡, 1-MMC卡 */

/* 位2, 自动识别, 0-标准容量SD卡, 1-大容量SD卡(HC-SD) */ /* 位4, ACMD41命令超时 */ /* 位5, CMD1命令超时 */ /* 位6, CMD58命令超时 */

联系合同范文客服:xxxxx#qq.com(#替换为@)