用CH376主机读写U盘。我按照
① CMD_SET_FILE_NAME命令+CMD_FILE_OPEN命令,打开文件
② CMD_BYTE_LOCATE命令,参数是0FFFFFFFFH,移动文件指针到文件末尾
③ 一次CMD_BYTE_WRITE命令+CMD_WR_REQ_DATA 命令+CMD_BYTE_WR_GO命令,每次写入 0dh,0ah结尾的20H个字节
④ CMD_FILE_CLOSE命令,参数是1,关闭文件并允许自动更新文件长度
能够反复多次正常运行。
但是当写 30H个字节的时候,重复上面的操作10次以后,CMD_WR_REQ_DATA 命令后,就只能再写20H字节了。我不明白,上面的过程是一个完整的过程,每次都打开;关闭文件,为什么第11次CMD_BYTE_WRITE命令 30H字节,而 CMD_WR_REQ_DATA 命令后,就只返回20H字节了。是否内部缓冲器在关闭文件的时候都不复位。好像内部缓冲器只有 200H个字节,写到 200H-(30H*0AH)= 20H 了。
如果我在上面操作中先写 20H字节,CMD_FILE_CLOSE,再重复上面1-4的操作,但是仅写入剩余的 10H字节。