我有一款“方正MS128m U盘”,调用CH375DiskRead();程序总是停在 while ( CH375_INT_WIRE ); /* 如果CH375的中断引脚输出高电平则等待 */这个地方, 这是什么原因?而另一款“爱国者 128m”则没事。真是郁闷呀,我的系统配置是 upsd3334d+375a 并口模式,请高手帮我解答一下。
非常感谢
我有一款“方正MS128m U盘”,调用CH375DiskRead();程序总是停在 while ( CH375_INT_WIRE ); /* 如果CH375的中断引脚输出高电平则等待 */这个地方, 这是什么原因?而另一款“爱国者 128m”则没事。真是郁闷呀,我的系统配置是 upsd3334d+375a 并口模式,请高手帮我解答一下。
非常感谢
你在这个函数里面没有写DISK—REDAY这个命令,你是操作物理扇区,而不是操作我们的库文件,你如果要用的话你自己写函数就可以了,或者加上我们的库
我用的就是你们的库“CH375HF5.LIB“,CH375DiskRead();就是库提供的,我跟过这个函数,好像是向375发 0x51(DISK_INIT)命令后,375就没了反映。您看是怎么回事,我如何解决? 非常感谢
你用我们的第5个库,他和别的库的区别就是自己写读写数据和命令函数,其他的和别的库是一样的,你可以参考我们网站上面有关于库5的例子程序,而不是象你写的程序那样直接调用你写的读写函数来操作U盘的
方正的U盘375支不支持? 原来我使用第六个库的,现象是一样的,操作“方正128m”的U盘就停在那个地方,并且 “爱国者 128m”和“现代64m”也时常停在那个地方,改用库5后,“爱国者 128m”和“现代64m”读写都没问题,下面是我的源程序: void xWriteCH375Cmd( UINT8 mCmd )/* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { mDelay1_2uS( ); /* 至少延时1uS */ CH375_CMD_PORT_ADDR=mCmd; mDelay1_2uS( ); /* 至少延时2uS */ }
void xWriteCH375Data( UINT8 mData )/* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { CH375_DAT_PORT_ADDR=mData; mDelay1_2uS( ); /* 至少延时1.2uS */ }
UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; mDelay1_2uS( ); /* 至少延时1.2uS */ mData=CH375_DAT_PORT_ADDR; return( mData ); } byte IdentifyDisk(void) { byte i,j; Work_Menu_Disp(Identify_UDISK_Menu); delay_0_1sec();
// 检查U盘是否准备好,有些U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 for ( i = 0; i < 5; i ++ ) { // 有的U盘总是返回未准备好,不过可以被忽略 delay_0_1sec(); j=CH375DiskReady( ); if (j == ERR_SUCCESS ) break; // 查询磁盘是否准备好 } if(j!=ERR_SUCCESS){ Err_Menu_Disp(NotIdentify_Err); return 0x05; } return 0; }
你的单片机配置好了没??
单片机应该配置好了,否则另外的盘也不能读写了。
你可以先用我们的例子程序试下,只可以改动I/O地址,别的都别改动,你看下可以不可以?还有就是你把读和写子程序中的延时去掉
我试了,还是不行,用串口方式也不行,我用仿真器跟踪,到向375发出0x51(DISK_INIT)命令后,375就没反映了,以前的命令都响应,而另外两个盘都没事,插上盘后,连接到ack的led也亮。
您能给我CH375DiskReady( );的源代码吗?流程图也行。
非常感谢
我的email:个人信息保护,已隐藏
您能给我CH375DiskReady( );的源代码吗?流程图也行。
非常感谢
我的email:个人信息保护,已隐藏