Multi Media Card ( SD Card ) read/write test
Toolkit:AVR Development System
Location:/bipom/devtools/WinAVR/minimaxavrc/Examples/Labs/mmc
#define MMC_BUFFER_SIZE 512 UBYTE mmcBuffer[MMC_BUFFER_SIZE]; // **************************************************************************** int main (void) { ERRCODE errCode; UINT ndx; // Allow Power Up peripheral devices _delay_ms(500); // Initialize SPI bus spiInit(); // Initialize the serial port uart1Init(19200); uart1Printf("\n\r** Test MMC **"); errCode = mmcReset(); if(errCode != SUCCESS) { uart1Printf("\n\rReset MMC - BAD, ec = %d",errCode); goto func_end; } uart1Printf("\n\rReset MMC - OK"); // Initialize MMC errCode = mmcInit(); if(errCode != SUCCESS) { uart1Printf("\n\rInit MMC - BAD, ec = %d",errCode); goto func_end; } uart1Printf("\n\rInit MMC - OK"); // Set Block Length errCode = mmcSetBlockLength(MMC_BUFFER_SIZE); if(errCode != SUCCESS) { uart1Printf("\nSet Block Length - BAD, ec = %d",errCode); goto func_end; } uart1Printf("\nSet Block Length - OK"); // Write Block for ( ndx = 0 ; ndx <MMC_BUFFER_SIZE ; ndx++) mmcBuffer[ndx] = ndx & 0xFF; errCode = mmcWriteBlock(0, 0, mmcBuffer, MMC_BUFFER_SIZE); if(errCode != SUCCESS) { uart1Printf("\nWrite Block - BAD, ec = %d",errCode); goto func_end; } uart1Printf("\nWrite Block - OK"); // Set Block Length errCode = mmcSetBlockLength(MMC_BUFFER_SIZE); if(errCode != SUCCESS) { uart1Printf("\nSet Block Length - BAD, ec = %d",errCode); goto func_end; } uart1Printf("\nSet Block Length - OK"); // Clear data buffer for( ndx=0; ndx<MMC_BUFFER_SIZE; ndx++ ) mmcBuffer[ndx] = 0; // Read Block errCode = mmcReadBlock(0, 0, mmcBuffer, MMC_BUFFER_SIZE); if(errCode != SUCCESS) { uart1Printf("\nRead Block - BAD, ec = %d",errCode); goto func_end; } uart1Printf("\n\nRead Block - OK"); for ( ndx = 0 ; ndx <MMC_BUFFER_SIZE ; ndx++) { if (!(ndx%16)) uart1Printf("\n"); uart1Printf( "%02x ", mmcBuffer[ndx]); } func_end: return 0; }