又试了几段程序,发现应该是在两个U盘都插上的情况下,涉及到对某个u盘的操作时,u盘的切换好像没起到作用,操作也不能成功
单片机总共多少RAM?目前使用了多少?感觉RAM有点问题。
#define FILE_DATA_BUF_ADDR 0x0200 #define FILE_DATA_BUF_LEN 0x4000 /* 外部RAM的文件数据缓冲区,缓冲区长度不小于一次读写的数据长度,字节模式不用该缓冲区 */
先把这两句去掉或者 //#define FILE_DATA_BUF_ADDR 0x0200 #define FILE_DATA_BUF_LEN 0x01 /* 外部RAM的文件数据缓冲区,缓冲区长度不小于一次读写的数据长度,字
我外扩ram 32k 现在执行到CH375DiskReady( )就会跳到main的开始
仔细检查一下RAM地址是否和两片CH375中的其中一个有冲突
没有冲突的,我参考论坛下的开发板资料画的板子,ram用62256,译码器也和资料里的一样,地址都一样,而且我对某一个u盘单独调试时也用到大量外部ram,都调试成功的
像CH375DiskReady( )这种函数在库里看不到?实在不知道问题在哪里了?前面分别初始化和检查两个u盘的插入都顺利通过,到diskready就跳到main开始了
Change_Bit=0x01; i = CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ mStopIfError( i ); Change_Bit=0x02; i = CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ mStopIfError( i );
这几句初始化都正常,下面CH375DiskReady( )有什么区别呢? 像执行到某一步就跳到程序开始一般是什么原因?麻烦大家帮帮我,这个调不通板子就废了,谢谢!
还有可以参考的其他对拷例程吗?
参考例程只有这一个,例程不用怀疑,我们是测试过的,把完整的程序打包传上来吧,我们看一下
好的,多谢,我把程序传上来,全部工程和原理图,原理图中只用了一片单片机 UploadImages/2010371921383.rar
程序中CH375_INT_WIRE和CH375_INT_WIRE_U0注释掉,CH375中断通过查询命令口实现,即定义xReadCH375Cmd() UINT8 xReadCH375Cmd( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; // mDelay1_2uS( ); /* 至少延时1.2uS */ if( Change_Bit==0x01) mData=CH375_CMD_PORT; if( Change_Bit==0x02) mData=CH375_CMD_PORT_U0; return( mData ); } 另外,程序中还提示编译模式不兼容,上面改过还不行的话,再把编译模式改为Large试一下
编译模式改了后果然warning少了两个 下午把程序烧进去试试
中断通过查询命令口实现只是指的插入u盘的那步吗?
不只这步,只要会产生中断的命令操作,都需要
不太明白,定义xReadCH375Cmd()后怎么用这个函数? 查询命令口,除了插入拔出u盘的时候用到,还用在什么函数上?需要库文件里改吗?能不能举个例子? 编译模式改过烧进去还是不行。。。
通过读命令端口的最高位 来判断是否有中断产生,可以用来代替查询中断引脚,在库的头文件里面用到, xQueryInterrupt( );