原创 STM32F4采用FATFS V0.1版本文件系统的SD卡实现

2013-11-15 21:42 3425 25 27 分类: MCU/ 嵌入式 文集: 电子应用

1、到官网下载:http://elm-chan.org/fsw/ff/00index_e.html 下载FATFS源代码,最新版本是R0.1版本。

2、解压下载后的文件会得到两个文件夹,一个是doc文件夹,这里是FATFS的一些使用文档和说明,以后在文件编程的时候可以查看该文档。另一个是src文件夹,里面就是我们所要的源文件。

3、将解压后的src文件夹下的文件拷贝到STM32F4工程目录下。

4、将ff.c和diskio.c添加到SMT32F4工程

5、打开ffconf.h文件,修改_CODE_PAGE 的值为936(支持中文),将_USE_FASTSEEK的值为1.

6、修改diskio.c文件中硬件相关函数。

添加disk_initialize初始化函数内容

DSTATUS disk_initialize (
    BYTE pdrv                /* Physical drive nmuber (0..) */
)
{
    //DSTATUS stat;
    //int result;
   SD_Error Status;
    switch (pdrv) {
    case ATA :
    //    result = ATA_disk_initialize();
        // translate the reslut code here
        //return stat;
        Status = SD_Init();
    if(Status == SD_OK)
        {
            Stat[ATA] = 0;
      //  return 0;
        }
    else
        {
            Stat[ATA] = STA_NOINIT;
      //  return STA_NOINIT;
        }
        return Stat[ATA];
    case MMC :
        //result = MMC_disk_initialize();
        // translate the reslut code here
        //return stat;
        Stat[MMC] = STA_NOINIT;
        return Stat[MMC];
    case USB :
        //result = USB_disk_initialize();
        // translate the reslut code here
        //return stat;
          return Stat[USB];
    }
    return STA_NOINIT;
}

硬盘状态函数disk_status

DSTATUS disk_status (
    BYTE pdrv        /* Physical drive nmuber (0..) */
)
{
    
//    int result;

    switch (pdrv) {
    case ATA :
    //    result = ATA_disk_status();

        // translate the reslut code here

        return Stat[ATA];

    case MMC :
        //result = MMC_disk_status();

        // translate the reslut code here

        //return stat;
        return Stat[MMC];
    case USB :
        //result = USB_disk_status();
        // translate the reslut code here
        return Stat[USB];
    }
    return STA_NOINIT;
}

详细代码看附件(附件中包括正在高度中的USB功能,项目不添加USB相关库文件,需要将USB相关代码注消或删除才能编译。

7、编写相关的接口初始化代码。文件sdio_sd.c(详细代码就不贴出来了,看附件源代码文件)

源代码下载地址http://yunpan.cn/Q9TCTEGySfXCk (360云盘)

文章评论2条评论)

登录后参与讨论

用户413927 2014-6-21 00:42

你好,最近在研究这个,能否发送一份副本或者重新共享一下 云盘最近没法下载

用户1747828 2014-4-16 12:04

360云盘密码是多少呢,或者给个QQ联系方式吧,小弟最近一直在做这一块,一直弄不出来呀
相关推荐阅读
用户1093567 2013-12-15 12:07
垃圾232芯片引起的RS232接收数据异常
STM32F103目标板,采用串口1 收发数据 现象:单发单收正常,电脑发送单片机接收同时单片机发送数据电脑接收,同时进行时接收数据乱码(固定式乱码,接收到的乱码都是相同的数据)。 一直以...
用户1093567 2013-11-26 15:07
基于STM8S单片机的FREEMODBUS总线协议栈的移植
     FreeMODBUS一个奥地利人写的Modbus协议。它是一个针对嵌入式应用的一个免费(自由)的通用MODBUS协议的移植。Modbus是一个工业制造环境中应用的一个通用协议.。  ...
用户1093567 2013-11-22 21:57
器件官网下载的bxl元件库文件转换成Altium Designer元件库的方法
        大多数元器件公司都会有公司的网站上提供相应的元器件原理图和PCB封装库,以便用户更加快速准确的进行原理设计的PCB制作。目前多数公司提供的器件封装文件都是.BXL格式的文件,这种文...
用户1093567 2013-07-13 11:58
解决Access连接 accdb 不可识别的数据库格式异常
在Access07之前的数据库后缀名均为*.mdb 而连接字符串写成Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myFolder\*.mdb ;...
用户1093567 2013-07-11 11:41
错误--ClickOnce 不支持请求执行级别“requireAdministrator”
vb.net项目发布中出现:ClickOnce 不支持请求执行级别“requireAdministrator”错误 将app.manifest文件中的:   <requestedPri...
我要评论
2
25
关闭 站长推荐上一条 /2 下一条