各位大侠,初始化CH376、U盘连接、初始化及测试磁盘都已经通过,现在要在根目录下新建ABC.TXT文件,但程序执行完后电脑上看不到文件。步骤是:写命令SET_FILE_NAME->写文件名“ABC.TXT”->写命令FILE_CREATE->检测INT脚为低->写命令GET_STATUS->写命令FILE_CLOSE->写数据1以自动更新文件长度。我用XP系统格式化FAT32,但能看到已用空间多了4KB,这是怎么回事呢?谢谢各位了呀
有个错误根目录新建文件名需要加“\\”或者“/”,你最好查一下每步流程的返回值。
写命令SET_FILE_NAME,返回值0x14->写文件名“/ABC.TXT”,返回值:0x14->写命令FILE_CREATE,返回值:0x14->检测INT脚为低->写命令GET_STATUS,返回值:0x17。而且文件名无论是写“/ABC.TXT”还是“/1234ABCD.TXT”返回值都是0x17,这个错误怎么改呢?
错误码0x17代表:USB传输的数据有误或者数据太多缓冲区溢出,你把U盘格式化一下或者换个U盘试一下?
试过了,U盘格式化,换了U盘都是0x17,求指教呀,不知道是什么情况呀?
按你说的应该没有问题,把你创建文件的流程贴出来看一下?
1.写命令CMD11_CHECK_EXIS,并延时1.6us 2.写数据0x65(任意值),并延时1.6us 3.读数据为0x9a 4.写命令CMD11_SET_USB_MODE,并延时1.6us 5.写数据0x06,并延时1.6us 6.检测INT脚为低 7.写命令CMD01_GET_STATUS,并延时1.6us 8.写命令CMD01_DISK_CONNECT,并延时1.6us 9.检测INT脚为低 10.写命令CMD01_GET_STATUS,并延时1.6us 11.读状态为USB_INT_SUCCESS(0x14) 12.延时200ms 13.写命令CMD0H_DISK_MOUNT,并延时1.6us 14.检测INT脚为低 15.写命令CMD01_GET_STATUS,并延时1.6us 16.读状态为USB_INT_SUCCESS 17.写命令CMD10_SET_FILE_NAME,并延时1.6us 18.写文件名(数据)“AAAAAAAA.TXT” 19.写命令CMD0H_FILE_CREATE,并延时1.6us 20.检测INT脚为低 21.写命令CMD01_GET_STATUS,并延时1.6us 22.读状态为0x17 23.写命令CMD1H_FILE_CLOSE,并延时1.6us 24.写数据1(自动更新文件长度),并延时1.6us 25.检测INT脚为低 26.写命令CMD01_GET_STATUS,并延时1.6us
我用FPGA编的,没有用沁恒的函数,文件名我是直接写“AAAAAAAA.TXT”
看了你的流程,有两个问题:一是在设置模式之后不需要等待中断,只需要读返回的数据。二是文件名是字符串 需要加“\\”或者“/”,结尾是0x00。
“6.检测INT脚为低”是U盘插入时检测INT脚为低,并不是设置模式之后等待中断,并且CMD11_CHECK_EXIST和CMD11_SET_USB_MODE命令后都读出了数据,分别是0xaa(写入的是0x55)和0x51。文件名按你的要求改了以后还是老样子,返回0x17