CH375用库时读写文件正常,但因为自己要用到文件系统,用了UINT8 mReadSector( UINT32 iLbaStart, UINT8 iSectorCount, UINT8X *oDataBuffer ),在执行一次读64个字节之后正常,但当循环第二次的时候,就死在c = mWaitInterrupt( ); /* 等待中断并获取状态 */一直就读不到管脚变低的状态!有大侠们碰到这个问题的请告知一下。
出现这种情况可能是你发送READ_GO的命令没有正常发送未产生中断。
UINT8 mReadSector( UINT32 iLbaStart, UINT8 iSectorCount, UINT8X *oDataBuffer ) { UINT16 mBlockCount; UINT8 c; CH375_WR_CMD_PORT( CMD_DISK_READ ); /* 从USB存储器读数据块 */ CH375_WR_DAT_PORT( (UINT8)iLbaStart ); /* LBA的最低8位 */ CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 8 ) ); CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 16 ) ); CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 24 ) ); /* LBA的最高8位 */ CH375_WR_DAT_PORT( iSectorCount ); /* 扇区数 */ for ( mBlockCount = iSectorCount * 8; mBlockCount != 0; mBlockCount -- ) { c = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( c == USB_INT_DISK_READ ) { /* 等待中断并获取状态,请求数据读出 */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 从CH375缓冲区读取数据块 */ c = CH375_RD_DAT_PORT( ); /* 后续数据的长度 */ while ( c -- ) *oDataBuffer++ = CH375_RD_DAT_PORT( ); CH375_WR_CMD_PORT( CMD_DISK_RD_GO ); /* 继续执行USB存储器的读操作 */ } else break; /* 返回错误状态 */ } if ( mBlockCount == 0 ) { c = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( c== USB_INT_SUCCESS ) return( 0 ); /* 操作成功 */ } return( c ); /* 操作失败 */ } 函数原型是这样的,这个READ_GO的命令也是正常发送的,当是但循环第二次就卡住了,不知道还有什么其它的原因?
问题找到了,谢谢hcn提醒,原来不小心把CH375_WR_CMD_PORT( CMD_DISK_RD_GO );写成了读数据命令,另外我想问下大家有没有用CH375移值FATFS文件系统,我目前在移植碰到很多问题,希望大家共同讨论,研究!
你用的单片机是什么?我司有提供基于CH375芯片常用单片机的LIB文件可以使用。
STM32,我们现在用的就是你们沁恒的库,但是现在我们需要用CH375移植FATFS文件系统,通过FATFS可以把U盘数据与NAND FLASH数据互联!我想问的是你们有这方面的移植吗,有范例吗?谢谢
不好意思没有这样的范例
有CH375移植FATFS范例吗?目前我通过CH375往U盘里写数据,差点把U盘搞坏了,所以想看看大家有没有成功移植的范例!
有一个基于CH375芯片的FAT文件系统库,但是需要销售人员开权限才能提供。你可以和销售人员联系下。技术支持这边没有权限开通。
这个需要购买吗?这个是针对FATFS文件系统的吗?
这个你需要电话联系销售人员了。
您好,请问销售人员的电话是多少?
02552638355/377/388/399