打印

这段2440的SD卡写块程序,大家帮我分析一下吧

[复制链接]
1930|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
boboluoluo|  楼主 | 2010-7-21 15:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
switch(mode)
    {
      case POL:
      if(block<2) // SINGLE_WRITE
      {
        rSDICCON=(0x1<<9)|(0x1<<8)|0x58; // CMD24
        if(!Chk_CMDend(24, 1)) //-- Check end of CMD24
        goto REWTCMD;
       }
      else // MULTI_WRITE
     {
       rSDICCON=(0x1<<9)|(0x1<<8)|0x59; //CMD25
       if(!Chk_CMDend(25, 1)) //-- Check end of CMD25
       goto REWTCMD;     
      }
     //rSDICSTA=0xa00; // Clear cmd_end(with rsp)
     
     while(wt_cnt<128*block)
     {
       status=rSDIFSTA;
       if((status&0x2000)==0x2000)
       {
         rSDIDAT=*Tx_buffer++;
         wt_cnt++;
       }
     }
     break;
    default:
     break;
    }

我知道:CMD24是单块读,CMD25是多块读,SDIDAT是发送或接收的数据。
我不明白的地方是:不是应该先把待发送的数据写入SDIDAT寄存器,然后再调用CMD24或CMD25吗?为什么这段程序是先调用CMD24/CMD25,再写入数据到SDIDAT寄存器呢?
我是菜鸟,请大家指点一下啊。

相关帖子

沙发
古道热肠| | 2010-7-23 00:34 | 只看该作者
要先发命令,等响应成功后,再送数据到卡,最后等待写操作完成。

使用特权

评论回复
板凳
boboluoluo|  楼主 | 2010-7-23 13:11 | 只看该作者
要先发命令,等响应成功后,再送数据到卡,最后等待写操作完成。
古道热肠 发表于 2010-7-23 00:34

非常感谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

51

帖子

1

粉丝