CH376读取单个的扇区成功,但读取多个的扇区会出错

CH376读取单个的扇区成功,但读取多个的扇区会出错,这是怎么为什么呢...

出错的现象是怎样的?把你的程序贴出来看看


UINT8 idata buf[64]; UINT8 xdata FileDataBuf[5120]; /* 文件缓冲区,太小则速度慢 */

main( ) {

UINT8 i, count; /* i为需要读取的扇区数 */ UINT16 s, total, Size, RealCount; /* s临时变量, total需要读的扇区数, Size需要读的字节数 */ UINT32 NewSize; /* NewSize文件大小 */

mDelaymS( 100 ); /* 延时100毫秒 */ mInitSTDIO( ); /* 为了让计算机通过串口监控演示过程 */ printf( "Start\n" );

s = mInitCH376Host( ); /* 初始化CH376 */ mStopIfError( s ); /* 其它电路初始化 */

while ( 1 ) { printf( "Wait Udisk/SD\n" ); while ( CH376DiskConnect( ) != USB_INT_SUCCESS ) { /* 检查U盘是否连接,等待U盘插入,对于SD卡,可以由单片机直接查询SD卡座的插拔状态引脚 */ mDelaymS( 100 ); } mDelaymS( 200 ); /* 延时,可选操作,有的USB存储器需要几十毫秒的延时 */

/* 对于检测到USB设备的,最多等待10*50mS */ for ( s = 0; s < 10; s ++ ) { /* 最长等待时间,10*50mS */ mDelaymS( 50 ); printf( "Ready ?\n" ); if ( CH376DiskMount( ) == USB_INT_SUCCESS ) break; /* 初始化磁盘并测试磁盘是否就绪 */ }

/* 检查U盘或者SD卡的剩余空间 */ printf( "DiskQuery: " ); s = CH376DiskQuery( (PUINT32)buf ); /* 查询磁盘剩余空间信息,扇区数 */ mStopIfError( s ); printf( "free cap = %ld MB\n", *(PUINT32)buf / ( 1000000 / DEF_SECTOR_SIZE ) ); /* 计算剩余空间信息 */

/* 如果CH376HFT.C文件已经存在则添加数据到尾部,如果不存在则新建文件 */ printf( "Open\n" ); s = CH376FileOpen( "\\CH376HFT.C" ); /* 打开文件,该文件在根目录下 */ if ( s == USB_INT_SUCCESS ) { /* 文件存在并且已经被打开,移动文件指针到尾部以便添加数据 */ NewSize = CH376GetFileSize( ); /* 读取当前文件长度,如果没有零头数据,那么文件长度是DEF_SECTOR_SIZE的倍数 */ printf( "File size = %ld\n", NewSize ); printf( "Locate tail\n" ); } else mStopIfError( s ); /* 打开文件时出错 */ /* 扇区读取源文件 */ while( NewSize ){ /* 扇区有字节读出 */ printf( "NewSize = %ld \n", NewSize ); s = CH376SecLocate( 0 ); /* 移动到第一个字节 */ mStopIfError( s ); /* 检错 */ total = ( NewSize + DEF_SECTOR_SIZE - 1 ) / DEF_SECTOR_SIZE; /* 将文件的字节数转换为扇区数(除以DEF_SECTOR_SIZE),长度加上DEF_SECTOR_SIZE-1用于确保写入最后的零头数据 */ printf( "Read sector = %d \n", total ); /* 准备要读的扇区数 */ while( total ) /* 如果扇区未读完,则继续读扇区 */ { if( total > 10 ) i = 10; /* 如果扇区数大于10,则该次要读的扇区为10个 */ else i = total; /* 如果扇区数小于10,则该次要读的扇区数为total */ s = CH376SecRead( FileDataBuf, i, &RealCount ); /* 从文件读取数据 */ mStopIfError( s ); /* 检错 */ total -= RealCount; /* 计数,减去当前实际已经读出的扇区数 */ printf( "\n" ); printf( "total = %d \n", total ); if( FileSize > i * DEF_SECTOR_SIZE ) Size = i * DEF_SECTOR_SIZE; /* 如果剩余要读的字节数大于4096,则输出的字节数为4096 */ else Size = NewSize; /* 如果剩余要读的字节数小于4096,则输出的字节数为NewSize */ NewSize -= Size; printf( "\n" ); printf( "NewSize = %ld \n", NewSize ); for ( s=0; s!=Size; s++ ) printf( "%C", FileDataBuf[s] ); /* 显示读出的字符 */ } if( total <= 1 ) /* 如果要读的扇区等于0,则文件读到尾部 */ { printf( "\n" ); printf( "文件已经结束\n" ); goto Close; /* 关闭文件 */ } } Close: printf( "Close\n" ); s = CH376FileClose( FALSE ); /* 关闭文件,扇区模式通常不自动更新文件长度,因为强制刷新缓冲区时已经更新了文件长度,所以这里不需要自动更新文件长度 */ mStopIfError( s );

printf( "Take out\n" ); while ( CH376DiskConnect( ) == USB_INT_SUCCESS ) { /* 检查U盘是否连接,等待U盘拔出 */ mDelaymS( 100 ); } mDelaymS( 200 ); } }


只读取了前面一个扇区...后面的扇区都是FF..或者14


你的FileSize是怎么定义的,应该是NewSize吧?按照你的流程是我可以读到30K的文件


53 74 61 72 74 0D 0A 57 61 69 74 20 55 64 69 73 6B 2F 53 44 0D 0A 52 65 61 64 79 20 3F 0D 0A 44 69 73 6B 51 75 65 72 79 3A 20 66 72 65 65 20 63 61 70 20 3D 20 31 32 32 31 31 20 4D 42 0D 0A 4F 70 65 6E 0D 0A 46 69 6C 65 20 73 69 7A 65 20 3D 20 36 33 32 35 31 31 39 0D 0A 4C 6F 63 61 74 65 20 74 61 69 6C 0D 0A 4E 65 77 53 69 7A 65 20 3D 20 36 33 32 35 31 31 39 20 0D 0A 52 65 61 64 20 73 65 63 74 6F 72 20 3D 20 31 32 33 35 34 20 0D 0A 0D 0A 74 6F 74 61 6C 20 3D 20 39 37 39 34 20 0D 0A 0D 0A 4E 65 77 53 69 7A 65 20 3D 20 36 33 31 39 39 39 39 20 0D 0A 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 64 61 74 61 5B 31 30 32 32 32 33 36 5D 20 3D 20 7B 0D 0D 0A 09 30 78 34 39 2C 20 30 78 34 34 2C 20 30 78 33 33 2C 20 30 78 30 34 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 36 42 2C 20 30 78 35 34 2C 20 30 78 34 39 2C 20 30 78 35 34 2C 20 30 78 33 32 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 0D 0D 0A 09 30 78 30 30 2C 20 30 78 30 41 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 43 46 2C 20 30 78 45 30 2C 20 30 78 42 43 2C 20 30 78 46 42 2C 20 30 78 42 41 2C 20 30 78 44 45 2C 20 30 78 43 44 2C 20 30 78 45 44 2C 20 30 78 30 30 2C 20 30 78 35 34 2C 20 30 78 34 33 2C 20 0D 0D 0A 09 30 78 34 46 2C 20 30 78 34 45 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 37 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 34 46 2C 20 30 78 37 34 2C 20 30 78 36 38 2C 20 30 78 36 35 2C 20 30 78 37 32 2C 20 30 78 30 30 2C 20 30 78 35 34 2C 20 0D 0D 0A 09 30 78 34 31 2C 20 30 78 34 43 2C 20 30 78 34 32 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 31 33 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 43 35 2C 20 30 78 45 44 2C 20 30 78 44 33 2C 20 30 78 43 45 2C 20 30 78 43 31 2C 20 30 78 42 35 2C 20 0D 0D 0A 09 30 78 42 38 2C 20 30 78 45 38 2C 20 30 78 32 30 2C 20 30 78 44 37 2C 20 30 78 45 45 2C 20 30 78 42 30 2C 20 30 78 41 45 2C 20 30 78 42 45 2C 20 30 78 41 42 2C 20 30 78 44 31 2C 20 30 78 41 31 2C 20 30 78 30 30 2C 20 30 78 35 34 2C 20 30 78 35 30 2C 20 30 78 34 35 2C 20 30 78 33 31 2C 20 0D 0D 0A 09 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 38 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 43 35 2C 20 30 78 45 44 2C 20 30 78 42 43 2C 20 30 78 44 31 2C 20 30 78 42 42 2C 20 30 78 44 42 2C 20 30 78 30 30 2C 20 30 78 35 34 2C 20 30 78 35 33 2C 20 0D 0D 0A 09 30 78 35 33 2C 20 30 78 34 35 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 44 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 34 43 2C 20 30 78 36 31 2C 20 30 78 37 36 2C 20 30 78 36 36 2C 20 30 78 33 35 2C 20 30 78 33 32 2C 20 30 78 32 45 2C 20 0D 0D 0A 09 30 78 33 35 2C 20 30 78 33 34 2C 20 30 78 32 45 2C 20 30 78 33 30 2C 20 30 78 30 30 2C 20 30 78 46 46 2C 20 30 78 45 33 2C 20 30 78 34 30 2C 20 30 78 36 34 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 31 2C 20 30 78 41 34 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 0D 0D 0A 09 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 33 2C 20 30 78 34 38 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 30 30 2C 20 30 78 34 43 2C 20 30 78 34 31 2C 20 30 78 34 44 2C 20 30 78 34 35 2C 20 30 78 33 33 2C 20 30 78 32 45 2C 20 0D 0D 0A 09 30 78 33 39 2C 20 30 78 33 38 2C 20 30 78 32 45 2C 20 30 78 33 32 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 30 78 35 35 2C 20 0D 0D 0A 09 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 F4


我的还是这样显示...FF是空格...14是另一个符号...


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