沁恒的工程师们,大家好, 最近在用沁恒公司的芯片,请问怎么用375去读U盘里的TXT文件?还有,比如我的文件在U盘的某个扇区中,我对扇区进行读写操作,我怎么能知道我的文件在哪个扇区?假设在32768号扇区中,我如果对其操作,怎么才能找到文件? 大家不要笑我,我是菜鸟,但我虚心学习!谢谢大家帮我! 下面是一个读子函数: unsigned char mReadSector( unsigned long iLbaStart, unsigned char iSectorCount ) /* iLbaStart 是准备读取的线性起始扇区号, iSectorCount 是准备读取的扇区数 */ { unsigned char mIntStatus; unsigned char *mBufferPoint; unsigned int mBlockCount; unsigned char mLength; 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 ); /* 扇区数 */ mBufferPoint = DATA_BUFFER; /* 指向缓冲区起始地址 */ for ( mBlockCount = iSectorCount * CH375_BLK_PER_SEC; mBlockCount != 0; mBlockCount -- ) { /* 数据块计数 */ mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( mIntStatus == USB_INT_DISK_READ ) { /* USB存储器读数据块,请求数据读出 */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 从CH375缓冲区读取数据块 */ mLength = CH375_RD_DAT_PORT( ); /* 后续数据的长度 */ while ( mLength ) { /* 根据长度读取数据 */ *mBufferPoint = CH375_RD_DAT_PORT( ); /* 读出数据并保存 */ mBufferPoint ++; mLength --; } CH375_WR_CMD_PORT( CMD_DISK_RD_GO ); /* 继续执行USB存储器的读操作 */ } else break; /* 返回错误状态 */ } if ( mBlockCount == 0 ) { mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( mIntStatus == USB_INT_SUCCESS ) return( 0 ); /* 操作成功 */ } return( mIntStatus ); /* 操作失败 */ } 我看了一下,在主函数中有一个调用的语句; c = mReadSector( 0, 1 ); 读的是0号扇区,扇区数为1,也就是只读0号扇区 但是iLbaStart的数值是多少?所有的位全是0吗?谢谢回答
查看: 1969
回复: 1
CH375的问题
热门产品 :
CH394: 以太网协议栈芯片
luoye268268
发表于: 2007-06-06 08:28:00
c = mReadSector( 0, 1 ); 就是读第0扇区的数据,也就是iLbaStart的数值为0。
你用的是什么单片机,如果想按文件方式读写U盘文件的话,对于常用单片机如ARM、AVR、51、MSP430等我们提供子程序库的,你可以直接调用我们的库函数就可以进行读写了。具体你可以下载CH375EVT.ZIP,里面有库的说明文档及例子程序,库的话下载CH375LIB.ZIP。 如果不用我们库的话,你得自己编写文件系统这一块了。
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录