磁盘缓冲区总是提示不足够大???

这个问题我以前问过,不过仍然没有解决,哪个遇到此类问题的高手能指点一下嘛,先谢谢了!!

我的单片机是SM8958AC(它内带768个字节的XRAM),我用的程序是EXAM7中的那个程序,库是CH375HF4.lib,程序一走到下面的这段就过不去了,我应该怎么把EXAM7的程序改一下才好呢?另外, CH375vSectorSize是怎么得来的,我看程序觉得如果EN_SEC_SIZE_AUTO=1的话,它就是512,那么DISK_BASE_BUF_LEN定义的也是512,为什么会出错呢??谢谢了!!!

#if DISK_BASE_BUF_LEN if ( DISK_BASE_BUF_LEN < CH375vSectorSize ) { /// 检查磁盘数据缓冲区是否足够大,CH375vSectorSize是U盘的实际扇区大小 printf( "Too large sector size\n" ); while ( CH375DiskConnect( ) == ERR_SUCCESS ){ mDelaymS( 100 ); } continue; } #endif[Emot]10[/Emot]

你看一下CH375vSectorSize多大,然后EXAM7编译出来后data,xdata各是多少?


data=121.5,xdata=541

CH375vSectorSize<512因为仿真器不能仿真,所以用LED小灯在这个位置看了一下。

我板上的晶振是11.0592MHZ,不知道LIB还用不用改一下? #define DISK_BASE_BUF_ADDR 0x0000 (这句我给屏蔽)了,所以用到的数据缓冲区是DISK_BASE_BUF[ DISK_BASE_BUF_LEN ]由系统自动分配的。


CH375的晶振一定要是12M的,单片机的晶振可以由用户自己选择,到网上下载winhex软件,看看你U盘的扇区大小是多少?一般都是512字节的.也有大扇区的U盘.


哦,必须是12MHZ?? 正常改完这个晶振程序还有什么改动吗??LIB-CFG-DISK还有做什么改动不? 我看了网上的贴子,说是LIB6的库,数据和命令的I/O口定义都不能自己改??我用的是LIB4的库可以随便改这两个地址吗? 谢谢了!!


是的,CH375的晶振一定是12M的,其它没有什么改动,LIB6的库和LIB4的库是用总线方式操作CH375的,数据和命令端口的地址可以改.但必须要和你的硬件一致.


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