关于CH376的U盘连接检测问题

CH376给出的例程中有如下的一端代码 UINT8 CH376DiskConnect( void ) /* 检查U盘是否连接,不支持SD卡 */ { if ( Query376Interrupt( ) ) CH376GetIntStatus( ); /* 检测到中断 */ return( CH376SendCmdWaitInt( CMD0H_DISK_CONNECT ) ); }

第一个Query376Interrupt应该是检测U盘插上中断信号的,我监测了CH376GetIntStatus返回的状态代码怎么会是0x44?这在手册中是没有的。此外根据这个例程,如果没有检测到U盘连接中断,为何还要执行( CH376SendCmdWaitInt( CMD0H_DISK_CONNECT ) );

这个中断状态不正确,后面的一个命令是通过发送DISK_CONNECT命令重新获取U盘连接状态,如果没有插入U盘则这个函数返回未连接的状态。


我现在发现初始化时就有问题,也就是我写出 CH376HalWriteCmd(CMD11_CHECK_EXIST CH376HalWriteByte(0X65); res=CH376HalReadByte(); 返回的res总是0xFF,这是什么原因?我示波器测了晶振两端对地的波形,为12MHz,幅度为100mv的正弦波。这有什么问题吗?


那说明你的单片机和CH376之间的硬件连线有问题。你看下芯片25脚电压是多少?正常情况下25脚电压为低。


25脚为低没错


现在问题解决了,不过产生新问题,利用网站提供的源代码CH376FileOpenPath打不开U盘根目录下的文件,总是返回missing file,请问这种情况通常是什么原因 引起的? 我的U盘是FAT32格式,文件名就5个字母,读文件之间的操作返回都正常。


文件名是大写的英文字母吗?


都是小写的sentes.hex


那肯定打不开,必须是大写的英文字母。因为短文件名在FAT文件系统下面只支持大写。和DOS规则是一样的


我修改成SENTES.HEX还是不行


问题解决,谢谢


具体原因?


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