|

楼主 |
发表于 2016-3-13 13:01:17
|
显示全部楼层
回 eric2013 的帖子
这是移植安富莱板子的例程里diskio sd驱动部分:
DRESULT res;
switch (pdrv)
{
case FS_SD :
{
SD_Error Status = SD_OK;
if (count == 1)
{
Status = SD_WriteBlock((uint8_t *)buff, sector << 9 ,SECTOR_SIZE);
if (Status != SD_OK)
{
res = RES_ERROR;
break;
}
#ifdef SD_DMA_MODE
/* SDIO???DMA??,??????DMA?????? */
Status = SD_WaitReadOperation();
if (Status != SD_OK)
{
res = RES_ERROR;
break;
}
while(SD_GetStatus() != SD_TRANSFER_OK);
#endif
res = RES_OK;
}
else
{
/* ??????: ??????? count ,?????1?block???? */
//Status = SD_WriteMultiBlocks((uint8_t *)buff, sector << 9 ,SECTOR_SIZE, count);
Status = SD_WriteMultiBlocks((uint8_t *)buff, sector << 9 ,SECTOR_SIZE, count + 1);
if (Status != SD_OK)
{
res = RES_ERROR;
break;
}
#ifdef SD_DMA_MODE
/* SDIO???DMA??,??????DMA?????? */
Status = SD_WaitReadOperation();
if (Status != SD_OK)
{
res = RES_ERROR;
break;
}
while(SD_GetStatus() != SD_TRANSFER_OK);
#endif
res = RES_OK;
}
break;
} |
|