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寄存器呢?
我是菜鸟,请大家指点一下啊。 |