ti2407+375

前段时间飞线效果不好,最近刚做了个板,用的是2407+375 但是现在出现个问题,这是我的读扇区程序 unsigned char mReadSector( unsigned long iLbaStart, unsigned char iSectorCount, unsigned char *iBuffer ) /* iLbaStart 是准备读取的线性起始扇区号, iSectorCount 是准备读取的扇区数, iBuffer 是存放返回数据的缓冲区的起址 */ { if ( mWaitReady( ) == FALSE ) return( FALSE ); mBufferPoint = iBuffer; /* 指向缓冲区起始地址 */ UdiskStatus = STATUS_WAIT; CH375_WR_CMD_PORT( CMD_DISK_READ ); /* 从USB存储器读数据块 */ CH375_WR_DAT_PORT( (unsigned char)iLbaStart ); /* LBA的最低8位 */ CH375_WR_DAT_PORT( (unsigned char)( iLbaStart >> 8 ) ); CH375_WR_DAT_PORT( (unsigned char)( iLbaStart >> 16 ) ); CH375_WR_DAT_PORT( (unsigned char)( iLbaStart >> 24 ) ); /* LBA的最高8位 */ CH375_WR_DAT_PORT( iSectorCount ); /* 扇区数 */ /* 如果是纯中断方式,那么可以做其它事情,中断服务程序会读取数据 */ return( mWaitReady( ) ); }

主程序里写mReadSector( 0x00, 5, *DATA_BUFFER ),单步执行到if ( mWaitReady( ) == FALSE )就死在那里了,这是由什么引起的

可以将mWaitReady()函数贴出来看下吗??


是不是因为没写什么CH375DiskReady函数的缘故啊 unsigned char mWaitReady( ) { while( UdiskStatus == STATUS_WAIT ); /* 等待上次操作结束 */ if ( UdiskStatus == STATUS_READY ) return( TRUE ); /* U盘已经准备好操作,上次操作成功 */ else if ( UdiskStatus == STATUS_ERROR ) { /* 上次操作失败 */ UdiskStatus = STATUS_WAIT; CH375_WR_CMD_PORT( CMD_DISK_RESET ); /* 复位U盘 */ while( UdiskStatus == STATUS_WAIT ); /* 等待中断状态 */ if ( UdiskStatus == STATUS_READY ) return( TRUE ); /* 等待中断状态,操作成功 */ return( FALSE ); /* UdiskStatus = STATUS_ERROR */ } else if ( UdiskStatus == STATUS_DISCONNECT ) { /* U盘已经断开 */ /* while ( UdiskStatus == STATUS_DISCONNECT );*/ return( FALSE ); } else if ( UdiskStatus == STATUS_CONNECT ) { /* U盘已经连接 */ mDelay100mS( ); /* 如果U盘刚插入那么最好稍等一下再操作 */ mDelay100mS( ); CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ while ( UdiskStatus == STATUS_CONNECT ); /* 等待中断状态 */ if ( UdiskStatus == STATUS_READY ) { /* 操作成功,磁盘已经初始化并安装到系统中 */ /* 检查U盘是否准备好,大多数U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 */ // do { // mDelay100mS( ); // printf( "Disk Ready ?\n" ); // i = CH375DiskReady( ); /* 查询磁盘是否准备好,如果省掉这个子程序可以节约将近1KB的程序代码 */ // } while ( i != ERR_SUCCESS ); /* CH375DiskReady 在CH375的U盘文件子程序库中,因为代码较多,所以此处省去 */ return( TRUE ); } else return( FALSE ); } return( FALSE ); }


你加上DISK—READY看下可以不可以??因为有的U盘需要执行DISK—READY才能工作


我找的程序中没有这样的函数啊,都省掉了 你能帮我找一个吗 非常感谢


你如果要用这个函数的话,那就要调用我们的库函数了


下了你们的很多参考例子,脑袋瓜都糊涂了 你能告诉我是哪个库函数吗


你如果用的是51单片机的话,就下载CH375LIB。ZIP的库里面的51库CH375LIB的库,或者你直接用我们的库看下可以不可以以文件系统操作U盘看可以不可以,不过你的单片机要7K~8K的ROM和不少于600字节的RAM


找到了你们的CH375LIB。ZIP,里面有个mcs51 把那里面的所有库加进去,都不好使啊


我就想要那一段的代码 能帮忙找到吗 再这里贴出来就行


我们提供给你的程序有些U盘不能工作,你换个U盘试下,要是不行的话你发个E-MAIL过来,我给你发个初始化更为详细的初始化程序 tech@wch.cn


换了u盘,还是不行 信件给你发过去了,希望能得到你的答复


信件总是发不过去,我会继续尝试给你发。如果你不介意的话,你也可以忘我的邮箱发个人信息保护,已隐藏


给你发了很多次信都退回了,看到论坛上很多兄弟都存在我那样的问题,不知道他们怎么解决的.如果你不介意的话,你也可以忘我的邮箱发个人信息保护,已隐藏


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