请教一下CH375vSectorSize的值的相关问题[求助]

i = CH375LibInit( );初始化返回正常返回 0 CH375DiskReady( ) == ERR_SUCCESS 检查U盘是否准备好也能顺利通过 DISK_BASE_BUF_LEN定义默认521 但是判断DISK_BASE_BUF_LEN 检查磁盘数据缓冲区是否足够大时总小于CH375vSectorSize 忽略这个判断的话 在后面执行i = CH375FileOpen( );时 i返回0x1F 操作失败 检查 CH375vSectorSize 的值为65535 不知道CH375FileOpen与CH375vSectorSize 的值有关吗

还有我用的w77e516单片机 内部RAM256 内置外部RAM 1K 用ch375B实现优盘的读写 直接用贵公司给的示例程序有两个问题 用FILELIBC里的EXAM7调用CH375HFC.LIB时 编译完 无法通过初始化i = CH375LibInit( ); 用FILELIB5里的EXAM7调用CH375HF5.LIB时 可以通过初始化,而且大约占用4K的外部RAM 把文件缓冲区去掉 大约是600字节,但是会出现上面说的问题。

例程中DiskReady不成功时,会循环执行5次,5次以后即使不成功也退出循环,确认一下DiskRead是否真的成功,DiskReady成功后,库会对CH374vSectorSize赋值


确认DiskReady 修改如下 依然能成功完成 而且i的值为0 说明DiskReady 应该成功完成了 就是CH374vSectorSize的值 还是65535 for ( i = 0; i < 5; i ++ ) { /* 有的U盘总是返回未准备好,不过可以被忽略 */ mDelay100mS( ); printf( "Ready ?\n" ); while ( CH375DiskReady( ) != ERR_SUCCESS ); break; /* 查询磁盘是否准备好 */ }


CH374vSectorSize 值不对,应该是库分析文件系统的时候出错了,检查你的DISK_BASE_BUF 全部都测试一下,看看是否可以正常读写,有的单片机如果要开起内置外部RAM的时候,需要设置相关的寄存器的


1、如果DISK_BASE_BUF_LEN < CH375vSectorSize成立的话,那么程序是不不会继续执行的,CH375vSectorSize察看的方法不对吧 2、你现在是用了哪个库,编译有没有异常警告?


用的CH375HF5.lib 因为DISK_BASE_BUF_LEN < CH375vSectorSize一直成立 程序就不执行了 但是查看CH375vSectorSize值为65535 在执行CH375DiskReady( )成功后直接运行 while(CH375vSectorSize==65535) { LED_OUT_ACT( ); /* LED闪烁 */ mDelay100mS( );mDelay100mS( );mDelay100mS( );mDelay100mS( ); LED_OUT_INACT( ); mDelay100mS( ); mDelay100mS( );mDelay100mS( );mDelay100mS( ); } 结果 程序停在了 闪烁LED的地方 应该可以验证CH374vSectorSize 的值是65535了


CH375vSectorSize为65535肯定是个错误的。这个变量表示扇区大小。不可能有这么大的扇区的。 这个变量在头文件中定义为512。你可以查一下。


1、CH375vSectorSize有2个属性:变量或宏,由EN_SEC_SIZE_AUTO控制 2、对w77e516的内置外部RAM的访问前需要使能PMR中位DM0,在LibInit之前,测试DISK_BASE_BUF,连续写入数据,再连续读取,比较数据是否一致


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