2015-09-09 92 views
-1

:)对FatFS进行必要的调整以使其与Arduino一起工作

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

我的目标是为学生项目构建一个高精度(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,(字符常量*)test_file_name,FA_CREATE_ALWAYS | FA_WRITE);

//这里出现错误FR_DISK_ERR //当我跟随误差较低的水平我来给功能: - chk_mounted(&路径,& dj.fs,(BYTE)(模式&〜FA_READ )); - fmt = check_fs(fs,bsect = 0); - 然后在作为diskio.c的一部分的最低水平我disk_read功能(附加)

后,它必须遵循的功能f_puts和f_close(& FILE_OBJECT);但没有f_open,他们不能工作。

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

我真的希望有人能帮助我。 谢谢你的所有答案和提示!

回答

2

我遇到了完全相同的问题。解决方案是添加define:ACCESS_MEM_TO_RAM_ENABLED。我这样做,刚好高于它被周围257行检查中conf_access.h

#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 

我踩通过代码查找定义在diskio的disk_read功能显然需要FR_DISK_ERR,发现源。c

一旦我添加,定义我能够打开文件,写入并关闭它。最重要的是我实际上可以拿出SD卡后,文件是实际上写!

+0

在项目中实际实现时,我认为将定义添加到board.h或者直接添加到项目编译器定义中会更清晰。 –

相关问题