复位和初始化都成功了。但是在读取寄存器值的时候出错了。比如说读取CID和CSD,要先发送相应的命令,发送命令后,可以得到正确的回应,也就是0X00,但是接下里读取数据,却怎么都没法读取来数据传输的开始字节,也就是0XFE。
不知道有什么问题?
U8 WriteCMD_NoCS(U8 CMD, U32 ARG, U8 CRC) { U8 i; U8 temp; WriteByte( CMD | 0X40 ); WriteByte( ARG >> 24); WriteByte( ARG >> 16 ); WriteByte( ARG >> 8 ); WriteByte( ARG ); WriteByte( CRC ); for( i=0; i<100; i++ ) { temp = ReadByte(); if( temp != 0XFF ) break; } return temp; }
void ReadData( U8 *p, U8 length) { U8 i; U8 temp; for( i=0; i<0XFF; i++ ) { temp == ReadByte(); if(temp == 0XFE) break; } for( i=0; i<length; i++ ) { *p = ReadByte(); p++; } ReadByte(); //CRC ReadByte(); //CRC }
void ReadCID( void ) { U8 i; U8 temp; CS_CLR; for( i=0; i<100; i++) { temp = WriteCMD_NoCS( CMD10, 0, 0XFF ); //注意这个函数不设置CS if(temp == 0X00) break; } ReadData( CID, 16 ); CS_SET; WriteByte( 0XFF ); }
[ 本帖最后由 老阮 于 2012-2-7 12:37 编辑 ]
|