[讨论] SD卡读取寄存器失败

老阮   2012-2-7 12:33 楼主

复位和初始化都成功了。但是在读取寄存器值的时候出错了。比如说读取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 编辑 ]

回复评论 (4)

木有人玩SD卡么
点赞  2012-2-8 13:00
见我的帖子,MP3的那个。里面有程序,还是大三的时候调的,我都忘得差不多了,也懒得去看,自己琢磨吧,呵呵。
点赞  2012-10-31 22:44
也不知道你之后调出来没~ 忘了看时间了
点赞  2012-10-31 22:45

arm9显示

我是新手,学校有一个作业想用TX2440这个开发板做,我看了一下带的视频,但是还是不知道怎么完成我的项目,我只是想要一个简单的显示界面,一张图片和几个按钮就好,然后能用crt定时的在sd卡里面定时的写文件,请高手指导一下我该怎么下手
点赞  2012-11-16 16:16
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复