SD_Error SD_PrintInfo( void ) { SD_Error SDError; const char *CardTypes[] = { "STD_CAPACITY_SD_CARD_V1_1", "STD_CAPACITY_SD_CARD_V2_0", "HIGH_CAPACITY_SD_CARD", "MULTIMEDIA_CARD", "SECURE_DIGITAL_IO_CARD", "HIGH_SPEED_MULTIMEDIA_CARD", "SECURE_DIGITAL_IO_COMBO_CARD", "HIGH_CAPACITY_MMC_CARD" }; printf("Card info:\n\r"); if ((SDError = SD_GetCardInfo(&SDCardInfo)) != SD_OK) { printf("\tConfigure SD card - FAILED. SD_GetCardInfo()\n\r"); SD_print_error(SDError); return SDError; } if(SDError == SD_OK) { SD_PrintState(SD_GetState()); printf("\tBlockSize: %d\n\r", SDCardInfo.CardBlockSize); printf("\tCapacity: %"PRIu64" Byte", SDCardInfo.CardCapacity); printf(" (%i MiB)\n\r", (uint32_t)( SDCardInfo.CardCapacity/1024/1024)); printf("\tType: %s\n\r", CardTypes[SDCardInfo.CardType]); printf("\tRCA: %d\n\r", SDCardInfo.RCA); printf("\tCSD.MaxBusClkFrec: %d\n\r", SDCardInfo.SD_csd.MaxBusClkFrec); printf("\tCSD.DeviceSize: %d\n\r", SDCardInfo.SD_csd.DeviceSize); printf("\tCSD.DeviceSizeMul: %d\n\r", SDCardInfo.SD_csd.DeviceSizeMul); printf("\tCSD.RdBlockLen: %d\n\r", SDCardInfo.SD_csd.RdBlockLen); printf("\tCSD.MaxWrBlockLen: %d\n\r", SDCardInfo.SD_csd.MaxWrBlockLen); printf("\tCID:\n\r"); printf("\t\tManufacturerID: %u\n\r", SDCardInfo.SD_cid.ManufacturerID); printf("\t\tProdName1: %u\n\r", SDCardInfo.SD_cid.ProdName1); printf("\t\tProdName2: %u\n\r", SDCardInfo.SD_cid.ProdName2); printf("\t\tProdRev: %u\n\r", SDCardInfo.SD_cid.ProdRev); printf("\t\tProdSN: %u\n\r", SDCardInfo.SD_cid.ProdSN); printf("\t\tManufactDate: %u\n\r", SDCardInfo.SD_cid.ManufactDate); printf("\t\tCID_CRC: %u\n\r", SDCardInfo.SD_cid.CID_CRC); SD_PrintState(SD_GetState()); } return SD_OK; }
DSTATUS disk_status ( BYTE pdrv /* Physical drive nmuber (0..) */ ) { /*DSTATUS stat; int result; switch (pdrv) { case ATA : result = ATA_disk_status(); // translate the reslut code here return stat; case MMC : result = MMC_disk_status(); // translate the reslut code here return stat; case USB : result = USB_disk_status(); // translate the reslut code here return stat; } return STA_NOINIT;*/ DSTATUS stat = RES_ERROR; if (pdrv == MMC) { SDCardState state = SD_GetState(); if (state != SD_CARD_ERROR || state != SD_CARD_DISCONNECTED) stat = RES_OK; } return stat; }