CH375在做u盘的时候出现的问题,麻烦版主解答一下,谢谢

我发现一个问题,就是用ch375在做u盘的时候,因为ch375端点2是64字节的缓冲区,所以每次只能接受64字节,现在的问题是因为我每次接受完毕2048字节就会把数据写入nand flash,这样还可以接受,问题是nand flash需要先擦除,当我接受完2048字节以后,我就在发送CH37xUnlockUsb();前执行擦除nand flash的指令,这个指令需要3ms时间,擦除以后再写入,然后再发送CH37xUnlockUsb();继续接受电脑发过来的剩余字节数目,这时问题就出来了,第一次读取ch375的缓冲区的数据的前8的字节都是错误的,而后面的(2048-8)字节都正常,所以我得出的结论是,在中断接受数据的时候是不是CH37xUnlockUsb();指令前面的延时不能太长,否则会出现问题,是不是这样,版主? 还有一个更加奇怪的现象,有时候ch375会漏掉其中的一次数据,也就是64字节,导致考入我u盘的文件不能用,ch375不是在发送CH37xUnlockUsb();指令前封锁usb接受的吗,怎么会丢失一次数据呢,麻烦版主解答一下,谢谢

这个和延时是没有多大关系的,因为你一直不解锁的话,375一直给计算机返回NAK,计算机在无限次重试,我觉得应该还是程序问题,你可以这样测试下,将你每次读到的数据通过别的途径显示出来,例如串口,看下你每次读到的数据是不是都是正确的,如果是的话,那就说明你的程序上面有问题。


我也是这么想的,可是事实上却是出现问题了,我现在每次接受到512字节以后人为加3ms延时然后解锁然后接续接受,可是现在每次512字节以后的第一个64字节中的前8字节全部错误,不加延时就ok 这说明什么呢?


不能人为的加解所的,我也觉的奇怪,怎么读函数之后还要加解所命令,这个命令是不能多加,也不能少加的,会出现问题的,但是你可以用CMD_RD_USB_DATA0,这个命令和CMD_RD_USB_DATA命令的唯一区别就是前面的命令读完数据之后需要发解锁命令,后后面的则是读完之后就解所了,或者你给接收端点设置NAK也是可以的,当你处理完之后在给接收端点发送一个ACK就可以了


版主误会了,我得一时是人为加入3ms延时, 解锁当然是读取数据完毕自动解说的


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