我是这样的流程 插 U盘 ,给电,设置工作模式,再发送CMD0H_DISK_CONNECT(0x30)这条命令,等中断,获取中断,中断状态就是0x15 哪里不对?
还有一个问题,376 开始时候不需要初始化么
检测U盘连接的过程我已经在29楼解释过了,你可以参考那个流程。初始化是在检测U盘连接之后。 另外,如果还有问题,我们有一个编程手册,你可以发一封邮件到我邮箱,我给你发过去。或者直接打电话来咨询。
我发现问题了,给的程序就有问题,命令不管是30H CMD0H_DISK_CONNECT ,还是31H CMD0H_DISK_MOUNT,返回值都和14HUSB_INT_SUCCESS比较,问题就在这里了,30H的返回值应该是15H,31H的返回值应该是14H ; 检查U盘是否连接,不支持SD卡 ; 输出: A 中断状态码, NC 操作成功(中断状态码是USB_INT_SUCCESS), CY 操作失败 ; 使用: A, DPTR CH376DiskConnect: MOV A,#CMD0H_DISK_CONNECT ;30H LCALL xWriteCH376Cmd LJMP Wait376Interrupt ; ; 初始化磁盘并测试磁盘是否就绪 ; 输出: A 中断状态码, NC 操作成功(中断状态码是USB_INT_SUCCESS), CY 操作失败 ; 使用: A, DPTR CH376DiskMount: MOV A,#CMD0H_DISK_MOUNT ;31H LCALL xWriteCH376Cmd LJMP Wait376Interrupt
之前已经说过了,这里在解释一下:在检测U盘连接那一块返回0x15是正确的,0x15是表示已经连接上设备了,如果没连上返回0x82。我们例子程序是检测0x14再退出,这个流程跟你的不一样,不是直接去发命令的,我们程序上具体的操作流程是中断来了先检测一下中断状态,如果U盘插上,返回0x15,之后再发0x30 CMD0H_DISK_CONNECT命令,再获取中断状态,此时返回0x14,说明检测U盘连接成功。
谢谢 这些问题都解决了,不过又出现了两个问题 1.新建的文件可以是汉字的么? 2.我把3776usb读写放到了我程序的最后面,通过安检跳转到这里,但是,执行起来376程序非常非常慢如果前面不加我的程序就不会这样,这是什么原因? 最后祝您 中秋快乐,谢谢您的帮助
(1)创建文件是支持汉字的,你只需要转化成汉字的ASCII码,不过文件名不超过8个字节,也就是四个汉字。如果要支持长文件名,需要自己添加程序。 (2)CH376读写U盘的程序是需要一些时间的,你可以少写一些数据看看速度怎么样。 节日快乐!
我直接运行376程序还是写数据比较快,之后我加上了自己的程序在前面,通过按键跳转到376程序 就慢了好多 为什么的
如果直接运行CH376比较快的话,你查一下你添加的程序处理?能否通过按键正常进入CH376处理程序
要创建 数据库.txt 数据库ASCII表是(十六进制):CAFD,BEDD,BFE2 写入之后是 '\0CAH,0FDH,0BEH,0DDH,0BFH,0E2H.TXT',00H 是这样么?不对呢
还有一个传输速度的问题,我要将单片机内EEPROM数据15个扇区 以字节方式传送到U盘共15*512个字节,会不会很慢?
能够在电脑上打开CH376创建的文件说明创建成功,传输速度的话传输的越多就越慢。
要创建 数据库.txt 数据库ASCII表是(十六进制):CAFD,BEDD,BFE2 写入之后是 '\0CAH,0FDH,0BEH,0DDH,0BFH,0E2H.TXT',00H 是这样么?不对呢
创建的文件的后缀“TXT”需要大写。还有\0CAH,0FDH,0BEH,0DDH,0BFH,0E2H.TXT'这个应该是字符串方式比较好吧。
'\0CAH,0FDH,0BEH,0DDH,0BFH,0E2H.TXT',00H 没明白什么意思 ,这么写不对么,应该怎么写呢