我用的是CH376T,SPI方式下向SD卡写入数据,发现一个棘手的问题,在我连续写入写入比较多的字节的时候,比如1600个,那么,在中间就会出现为0的字节,或者乱码,并且有一个规律,那就是在第一个出现0的地方刚好是从512的整数倍的后一位开始的,请问会是什么问题呢?这个问题没法解决的话,那我后面的工作就没法开展了。请各位大侠帮忙。谢谢了。[
这是扇区边界没有写入数据导致的,字节写方式一定要按照下面方式写, UINT8 CH376ByteWrite( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount ) /* 以字节为单位向当前位置写入数据块 */ { UINT8 s; xWriteCH376Cmd( CMD2H_BYTE_WRITE ); xWriteCH376Data( (UINT8)ReqCount ); xWriteCH376Data( (UINT8)(ReqCount>>8) ); xEndCH376Cmd( ); if ( RealCount ) *RealCount = 0; while ( 1 ) { s = Wait376Interrupt( ); if ( s == USB_INT_DISK_WRITE ) { s = CH376WriteReqBlock( buf ); /* 向内部指定缓冲区写入请求的数据块,返回长度 */ xWriteCH376Cmd( CMD0H_BYTE_WR_GO ); xEndCH376Cmd( ); buf += s; if ( RealCount ) *RealCount += s; } /* else if ( s == USB_INT_SUCCESS ) return( s );*/ /* 结束 */ else return( s ); /* 错误 */ } }