⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 Interfacing to an MMC/SD card via SPI (for microcontroller)
💻 C
字号:
//*****************************************************************************// Based on software by Pascal Stang, distributed under the GNU public license// March 06    TWard       Ported to ecog1k, added support for SD cards//*****************************************************************************#include <ecog.h>#include <ecog1.h>#include "stdio.h"#include "mmc.h"        // include MMC card access functions#include "mmcConf.h"void mmcTest(void);void debugPrintHexTable(unsigned int length, unsigned char *buffer);// Global card initialiser variableint mmcCardInFlag;//----- Begin Code ------------------------------------------------------------int main(int argc, char* argv[]){    mmcTest();    return (0);}void mmcTest(void){    unsigned long sector = 0;    unsigned char buffer[0x200];    int c;    unsigned int d;    // initialize MMC interface    mmcInit();       // print new prompt    printf("\r\ncmd>");    // testing loop    while(1)    {        if (mmcCardInFlag == 1)        {            // A card has been inserted, reset            mmcCardInFlag = 0;            printf("\r\nDetecting & resetting SD/MMC Card...");            // We should provide a delay of half a second or so here            for (c = 0; c < 32000; c++)            {                for (d = 0; d < 50; d++)                    nop();            }            if (!mmcReset())            {                printf("Found SD Memory Card\n\r");            }              else            {                LED0_Clr = 1;                LED1_Clr = 1;                printf("\n\rProblem Initialising Card!!\r\n");            }            // print new prompt            printf("\r\ncmd>");        }        else        {            // check for keypress            if (fd.duart.a_sts.rx_1b_rdy)            {                c = fd.duart.a_rx.data_1byte;                switch(c)                {                    case 'i':                    // initialize card                     mmcCardInFlag = 1;                    break;                                        case 'r':                    // read current sector into buffer                    printf("\r\nRead Sector %ld\r\n", sector);                    mmcRead(sector, buffer);                    // print buffer contents                    debugPrintHexTable(0x200, buffer);                    break;                                        case 'w':                    // write current sector with data from buffer                    printf("\r\nWrite Sector %ld\r\n", sector);                    mmcWrite(sector, buffer);                    break;                                        // move to new sector                    case '+': sector++;        printf("\r\nSector = %ld", sector); break;                    case '-': sector--;        printf("\r\nSector = %ld", sector); break;                    case '*': sector+=512;    printf("\r\nSector = %ld", sector); break;                    case '/': sector-=512;    printf("\r\nSector = %ld", sector); break;                    case '\r':                    default:                    break;                }                            // print new prompt                printf("\r\ncmd>");            }        }    }}// Routine to print a hex table to the outputvoid debugPrintHexTable(unsigned int length, unsigned char *buffer){    unsigned int i, j;       for (i = 0; i < 0x20; i++)    {        printf("\r\n0x%2X0... ",i);        for (j = 0; j < 0x10; j++)        {            printf ("%02X ",*buffer++);        }    }  }// Card IO handler// The switch on the SD card needs to be de-bouncedvoid __irq_entry GPIO_Handler (void){    // Check card status and update LED's    if (MMC_LOCK_STATUS)        LED1_Clr = 1; // Card is not locked    else        LED1_Set = 1; // Card is locked, turn off    if (MMC_IN_STATUS)    {  // Card is not in socket        LED0_Clr = 1; // Card is not in socket    }    else    {        LED0_Set = 1; // Card is in socket        mmcCardInFlag = 1;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -