/** * Initialize PIOs */ static void _ConfigurePIOs(void) { /* Configure SDcard pins */ PIO_Configure(pinsSd, PIO_LISTSIZE(pinsSd)); /* Configure SD card detection */ CardDetectConfigure(); CardIsProtected(); }
void Check_SD(void){ unsigned char x,y; int delay; x=CardIsPresent(); while(x==1){ LCDClear(); LCDStr(0,"Put SD Card",0); for(delay=0;delay<50000;delay++){ } x=CardIsPresent(); } y=CardIsProtected(); if(y==1){ LCDClear(); LCDStr(0,"Card is",0); LCDStr(1,"protected",0); } else MSD_Write_Block(Data,0x00,512); }
//------------------------------------------------------------------------------ /// Initializes a Media instance and the associated physical interface /// \param media Pointer to the Media instance to initialize /// \return 1 if success. //------------------------------------------------------------------------------ unsigned char MEDSdusb_Initialize(Media *media, unsigned char mciID) { TRACE_INFO("MEDSdusb init\n\r"); // Initialize SDcard //-------------------------------------------------------------------------- if (!CardIsConnected(mciID)) return 0; // Configure SDcard pins ConfigurePIO(mciID); #if defined(MCI2_INTERFACE) DMAD_Initialize(BOARD_MCI_DMA_CHANNEL, DMAD_NO_DEFAULT_IT); #endif // Initialize the MCI driver if(mciID == 0) { IRQ_ConfigureIT(BOARD_SD_MCI_ID, MCI0_IRQ_PRIORITY, MCI0_IrqHandler); MCI_Init(mciDrv, BOARD_SD_MCI_BASE, BOARD_SD_MCI_ID, BOARD_SD_SLOT, MCI_INTERRUPT_MODE); IRQ_EnableIT(BOARD_SD_MCI_ID); } else { #ifdef BOARD_SD_MCI1_ID IRQ_ConfigureIT(BOARD_SD_MCI1_ID, MCI0_IRQ_PRIORITY, MCI0_IrqHandler); MCI_Init(mciDrv, BOARD_SD_MCI1_BASE, BOARD_SD_MCI1_ID, BOARD_SD_SLOT, MCI_INTERRUPT_MODE); IRQ_EnableIT(BOARD_SD_MCI1_ID); #else TRACE_ERROR("SD/MMC card initialization failed (MCI1 not supported)\n\r"); #endif } #if MCI_BUSY_CHECK_FIX && defined(BOARD_SD_DAT0) MCI_SetBusyFix(mciDrv, &pinSdDAT0); #endif // Initialize the SD card driver if (SD_Init(sdDrv, (SdDriver *)mciDrv)) { TRACE_ERROR("SD/MMC card initialization failed\n\r"); return 0; } else { TRACE_INFO("SD/MMC card initialization successful\n\r"); TRACE_INFO("Card size: %d MB\n\r", (int)(MMC_GetTotalSizeKB(sdDrv)/1024)); } MCI_SetSpeed(mciDrv, sdDrv->transSpeed, sdDrv->transSpeed, BOARD_MCK); // Initialize media fields //-------------------------------------------------------------------------- media->interface = sdDrv; media->write = MEDSdusb_Write; media->read = MEDSdusb_Read; media->lock = 0; media->unlock = 0; media->handler = 0; media->flush = 0; media->blockSize = SD_BLOCK_SIZE; media->baseAddress = 0; media->size = SD_TOTAL_BLOCK(sdDrv); media->mappedRD = 0; media->mappedWR = 0; media->writeProtected = CardIsProtected(mciID); media->removable = 1; media->state = MED_STATE_READY; media->transfer.data = 0; media->transfer.address = 0; media->transfer.length = 0; media->transfer.callback = 0; media->transfer.argument = 0; return 1; }