2015-09-09 14 views
-1

:)Необходимые корректировки для FatFS, чтобы заставить его работать с Arduino Due

Первое извинение за мой плохой английский. Надеюсь, вы поймете мое письмо.

Моя цель - построить регистратор данных высокой точности (24 бит) для студенческого проекта, который хранит данные на SD-карте. Я использую Arduino Due (ATSAM3X8E) и дополнительный самодельный экран с разъемом SD-Card.

Далее я использую Atmel Studio 6.2 и библиотеки ASF «Склад SD/MMC на интерфейсе SPI» и «Файловая система FatFS».

Уже можно просто писать и читать с помощью модуля sd/mmc с помощью spi, но без файловой системы. Поэтому оборудование работает правильно.

Я полагаю, что моя ошибка может быть локализована в модуле 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); - а затем в самом низком уровне моя disk_read функция, которая является частью diskio.c (прилагается)

позже он должен следовать функции f_puts и F_CLOSE (& FILE_OBJECT); но без f_open они не могут работать.

Я приложил свой файл diskio.c, где выделен файл disk_read, который вызывает ошибку.

Я действительно надеюсь, что кто-то может мне помочь. Спасибо за все ответы и подсказки !!!

ответ

2

Я столкнулся с точно такой же проблемой. Решение заключалось в том, чтобы добавить определение: 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 

Я прошел через код, чтобы найти источник FR_DISK_ERR и обнаружил, что определяет требуется, по-видимому функция disk_read в diskio.c

Как только я добавил, что определить, я смог открыть файл, написать ему и закрыть его. Лучше всего я мог на самом деле вынуть SD-карту позже, и файл был фактически написан!

+0

Когда я реализую это в проекте, я думаю, что добавить его либо в свой файл board.h, либо в моем случае просто прямо в компилятор проекта. –