【问题标题】:Necessary adjustments on FatFS to make it work with Arduino Due对 FatFS 进行必要的调整以使其与 Arduino Due 一起使用
【发布时间】:2015-12-05 05:04:05
【问题描述】:

:)

首先请原谅我的英语不好。我希望你能理解我的写作。

我的目标是为学生项目构建一个高精度(24 位)数据记录器,将数据存储到 SD 卡中。我使用 Arduino Due (ATSAM3X8E) 和一个带有 SD 卡连接器的自制屏蔽。

我还使用 Atmel Studio 6.2 和 ASF 库“SPI 接口上的 SD/MMC 堆栈” 和“FatFS 文件系统”。

完全可以通过 spi 使用 sd/mmc 模块进行读写,但没有文件系统。所以硬件工作正常。

我想我的错误可以定位在FatFS模块。

在 main.c 中我调用了以下函数:

  • sd_mmc_init();

  • sd_mmc_check(SD_SLOT); //直到这个程序工作,我可以用终端窗口读写有效值

  • f_mount(LUN_ID_SD_MMC_0_MEM, &fs);

//它返回 FR_OK 但这里可能是第一个小错误,因为我不确定我是否选择了正确的 LUN。

  • f_open(&file_object,(char const *)test_file_name, FA_CREATE_ALWAYS | FA_WRITE);

//这里出现错误FR_DISK_ERR // 当我将错误跟踪到较低级别时,我来到函数: - chk_mounted(&path, &dj.fs, (BYTE)(mode & ~FA_READ)); - fmt = check_fs(fs, bsect = 0); - 然后在最低级别我的 disk_read 函数,它是 diskio.c 的一部分(附加)

稍后它必须遵循函数 f_puts 和 f_close(&file_object);但是没有 f_open,它们就无法工作。

我附加了我的 diskio.c 文件,其中分配了导致错误的 disk_read 文件。

我真的希望有人可以帮助我。 谢谢大家的回答和提示!!!

【问题讨论】:

    标签: sd-card fat atmelstudio asf arduino-due


    【解决方案1】:

    我遇到了完全相同的问题。解决方案是添加定义:ACCESS_MEM_TO_RAM_ENABLED。我在 conf_access.h 中的第 257 行附近检查了它的上方

    #define ACCESS_MEM_TO_RAM_ENABLED
    #ifdef ACCESS_MEM_TO_RAM_ENABLED
    #define ACCESS_MEM_TO_RAM    true  //!< MEM <-> RAM interface.
    #else
    #define ACCESS_MEM_TO_RAM    false //!< MEM <-> RAM interface.
    #endif
    

    我通过代码找到了FR_DISK_ERR的来源,发现diskio.c中的disk_read函数显然需要定义

    添加该定义后,我就可以打开、写入和关闭文件。最重要的是,之后我实际上可以取出 SD 卡,并且文件实际上已写入!

    【讨论】:

    • 在项目中实际实现此功能时,我认为将定义添加到您的 board.h 或在我的情况下直接添加到项目编译器定义中会更干净。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2017-03-26
    • 2018-10-07
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多