我目前用的是万利399的开发板,程序用的是万利附带的程序,在main函数中增加一下几个命令: if(SD_Init() == SD_OK){ SD_GetCardInfo(&cardinfo); SD_ReadBlock(0, sd_buf, 512); SD_ReadBlock(512,sd_buf,512); SD_ReadBlock(1024,sd_buf,512); } 其中SD_Init()返回SD_OK,SD_GetCardInfo返回看cardinfo中SD卡的容量和Block的大小都对,其他的参数也有。但是在下面读取数据的时候,就返回超时信息。单步跟踪的时候发现时在下面返回超时: /* Set Block Size for Card */ SDIO_CmdInitStructure.SDIO_Argument = (u32) BlockSize; SDIO_CmdInitStructure.SDIO_CmdIndex = SDIO_SET_BLOCKLEN; SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short; SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No; SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable; SDIO_SendCommand(&SDIO_CmdInitStructure); errorstatus = CmdResp1Error(SDIO_SET_BLOCKLEN); if (SD_OK != errorstatus){ return(errorstatus); } 想请教香主我的函数调用的时候正确,在读取Block数据以前时候还需要进行其他设置,谢谢 |