有哪位大神看看下面的语句是什么意思?给详细的解释一下!

    xWriteCH376Cmd(CMD14_READ_VAR32);
    xWriteCH376Data(VAR_FAT_DIR_LBA);  /* 当前文件目录信息所在的扇区LBA地址 */

这是CMD14_READ_VAR32的用法,需要输入一个字节的变量地址,VAR_FAT_DIR_LBA代表是当前打开文件的目录信息的地址,然后输入4个字节的文件系统变量。


问一下长文件名和短文件明在U盘内是怎么存储的?


你可以去参考FAT文件系统协议,内容也不复杂。目前U盘FAT32的文件系统较多,你看下FAT32就行。


能不能解释一下文件系统变量是什么?


文件系统变量指的是当前打开的文件4字节的目录信息。


文件系统变量是什么内容?代表什么意思?


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

#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命令超时 */
/*           其它位, 保留,请勿修改 */
#define VAR_UDISK_TOGGLE 0x31   /* USB存储设备的BULK-IN/BULK-OUT端点的同步标志 */
/*           位7, Bulk-In端点的同步标志 */
/*           位6, Bulk-In端点的同步标志 */
/*           位5~位0, 必须为0 */
#define VAR_UDISK_LUN  0x34   /* USB存储设备的逻辑单元号 */
/*           位7~位4, USB存储设备的当前逻辑单元号,CH376初始化USB存储设备后,默认是访问0#逻辑单元 */
/*           位3~位0, USB存储设备的最大逻辑单元号,加1后等于逻辑单元数 */
#define VAR_SEC_PER_CLUS 0x38   /* 逻辑盘的每簇扇区数 */
#define VAR_FILE_DIR_INDEX 0x3B   /* 当前文件目录信息在扇区内的索引号 */
#define VAR_CLUS_SEC_OFS 0x3C   /* 当前文件指针在簇内的扇区偏移,为0xFF则指向文件末尾,簇结束 */

/* 32位/4字节变量 */
#define VAR_DISK_ROOT  0x44   /* 对于FAT16盘为根目录占用扇区数,对于FAT32盘为根目录起始簇号(总长度32位,低字节在前) */
#define VAR_DSK_TOTAL_CLUS 0x48   /* 逻辑盘的总簇数(总长度32位,低字节在前) */
#define VAR_DSK_START_LBA 0x4C   /* 逻辑盘的起始绝对扇区号LBA(总长度32位,低字节在前) */
#define VAR_DSK_DAT_START 0x50   /* 逻辑盘的数据区域的起始LBA(总长度32位,低字节在前) */
#define VAR_LBA_BUFFER  0x54   /* 当前磁盘数据缓冲区的数据对应的LBA(总长度32位,低字节在前) */
#define VAR_LBA_CURRENT  0x58   /* 当前读写的磁盘起始LBA地址(总长度32位,低字节在前) */
#define VAR_FAT_DIR_LBA  0x5C   /* 当前文件目录信息所在的扇区LBA地址(总长度32位,低字节在前) */
#define VAR_START_CLUSTER 0x60   /* 当前文件或者目录(文件夹)的起始簇号(总长度32位,低字节在前) */
#define VAR_CURRENT_CLUST 0x64   /* 当前文件的当前簇号(总长度32位,低字节在前) */
#define VAR_FILE_SIZE  0x68   /* 当前文件的长度(总长度32位,低字节在前) */
#define VAR_CURRENT_OFFSET 0x6C   /* 当前文件指针,当前读写位置的字节偏移(总长度32位,低字节在前) */

#endif


CH376INC.H里面有的,上面提到的就是CH376存储的文件系统变量。


只有登录才能回复,可以选择微信账号登录