研究SDIO读取SD卡驱动的函数SD_WriteBlockBySector的时候,里面有几句话:
SDIO_ITConfig(SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_DATAEND | SDIO_IT_TXUNDERR | SDIO_IT_STBITERR, ENABLE);
SD_LowLevel_DMA_TxConfig((uint32_t *)writebuff, BlockSize);
SDIO_DMACmd(ENABLE);
while ((SD_DMAEndOfTransferStatus() == RESET) && (TransferEnd == 0) && (TransferError == SD_OK))
{}
if (TransferError != SD_OK)
{
return(TransferError);
}
/*前面部分表示需要写入的数据传输到SD完毕?*/
/*!< Wait till the card is in programming state */
/*
errorstatus = IsCardProgramming(&cardstate);
while ((errorstatus == SD_OK) && ((cardstate == SD_CARD_PROGRAMMING) || (cardstate == SD_CARD_RECEIVING)))
{
errorstatus = IsCardProgramming(&cardstate);
}
return(errorstatus);
*/
难道SD卡数据的写入方式是:MCU先通过SDIO把数据传入到SD卡的缓存中,SD再把这些数据写入介质中。
在这个过程中MCU需要调用IsCardProgramming查询SD卡是否已经写入完毕?
|