用ch375a制作的读写U盘的程序烧到板上后,出现挑U盘的问题?

我是用的STC89C58RD+ 单片机+ch375a制作而成的U盘读写工具,但现在的问题是出现挑U盘的问题,请问这个问题如何解决?谢谢

挑盘主要是U盘初始化过程没有做好 可以用我们的MCS51文件系统子程序库,下载CH375LIB.ZIP


我就是用你们的程序库做的呀,我用的是CH375HFC.h 和CH375HFC.LIB做的 我的U盘初始化部分是这样的: main( ) { UINT8 i; CH375_PORT_INIT( ); /* 由于使用通用I/O模块并口读写时序,所以进行初始化 */ CH375_led=1; mDelaymS( 1000 ); /* 延时1秒 */ CH375_led=0; mDelaymS( 1000 ); /* 延时1秒 */ CH375_led=1; mInitSTDIO( ); /* 为了让计算机通过串口监控演示过程 */ i = CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它电路初始化 */ while ( 1 ) { //printf("wait"); while( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查询CH375中断并更新中断状态,等待U盘插入 */ mDelaymS( 200 ); /* 延时,可选操作,有的USB存储器需要几十毫秒的延时 */ /* 检查U盘是否准备好,有些U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 */ for ( i = 0; i < 5; i ++ ) { /* 有的U盘总是返回未准备好,不过可以被忽略 */ mDelaymS( 100 ); if( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查询磁盘是否准备好 */ } CommPc(); //进入数据处理部分 while( CH375DiskStatus != DISK_DISCONNECT ) xQueryInterrupt( ); } } =============== 我没搞清楚 哪里需要改?以及如何改? 您能帮我看下吗 ?谢谢


你所说的挑U盘主要指在读写U盘的时候出现错误还是根本就找不到U盘?


根本找不到U盘,我发现用小的U盘能找到,并且读写U盘都没问题 ,用大点的比如1G,2G的 就 不行了,识别不到U盘,请问这是什么问题呢?谢谢


你的U口电压要保证为5V电压,测试一下你的D+ D- 电压是多少? 正常的情况下D+为3.3v  D-为0v左右


D+和D-之间电压是3.3V ,U口也是5V,没错 ,我刚试了一下,用我的金士顿2G优盘与375的板子通讯正常,读写都行,用爱国者迷你王1G的 ,U盘就根本不能被识别了 ,请问 这也是初始化的问题吗?


你所说的根本不被识别是什么意思?是没有检测到U盘还是初始化没有通过?最好有一个详细的库的返回代码给我们,我们也好判断是哪边的问题


这还没有涉及到初始话,不是D+,D-之间的电压,是对地电压.你用查询方式还是中断方式?不识别的U盘的D+.D_也是对地3.3V吗?还有U口的VCC要并接100UF的电容,如果不接的话可能会导致电压下降,导致375的复位,检测不到U盘.


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