Перейти к содержанию
    

FAT, FATfs, usb Помогите разобраться с файловой системой

Помогите разобраться с библиотекой файловой системы fatfs. Ситуация такая.Есть отладочная плата sk-mstm32f107. Нужно сделать на ней хост, чтобы можно было подлючить флешку, записать/считать файл, вобщем порыться в флэшке. Пробовала библиотеку efsl. Эта файловая система не инициализируется, т.к. размер кластера на флешке больше 512 байт. Флешка 16 гектарная. отформатирована в FAT32.

Пробую библиотеку fatfs. Но с ней какие-то непонятки. Вроде флешка инициализируется (имеется в виду функция инит диск библиотеки фатфс). Монтируется диск, а при попытке создания файла внутри функции f_write clst = create_chain(fp->fs, fp->clust);

возвращает 0xFFFFFFFF и соответсвенно функция записи файла возращает FR_DISK_ERR. Подскажите, пожалуйста, что это может быть? Из-за чего?

Есть ли у кого-то примеры для стшки работы с файловой системой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из описания FR_DISK_ERR в файле ff.h: A hard error occured in the low level disk I/O layer. То есть скорее всего ваш физический уровень, который вы сами реализуете и подсовывайте фатфсу, вернул ему ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы использовали ту библиотеку, которую предлагает ST (USB host device lib)? Там как раз FatFS.

Сейчас тоже разбираюсь с ЮСБ хостом. Из примера в этой либе сделал работоспособный проект (пока тупо пишет и читает :rolleyes: ) под плату TE-STM32F207.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не понятно зачем сразу начинать с записи!? Отформатируйте флэшку на компьютере, запишите туда текстовый файл и отработайте чтение для начала.

Изменено пользователем kan35

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не понятно зачем сразу начинать с записи!? Отформатируйте флэшку на компьютере, запишите туда текстовый файл и отработайте чтение для начала.

Проблема решена. В функциях файла diskio disk_write, disk_read и т.д. взятых из примера юсбишной библиотеки переменная Stat негде не обновляет свое значение, а оставляет инициализированное STA_NOINIT. Заменив эту перменную на вызов функции disk_status(drv) все заработало..теперь на 16 гб флешку записывается и создается файл. Сейчас буду пробовать чтение из файла.

Изменено пользователем batisto4ka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решена. В функциях файла diskio disk_write, disk_read и т.д. взятых из примера юсбишной библиотеки переменная Stat негде не обновляет свое значение, а оставляет инициализированное STA_NOINIT. Заменив эту перменную на вызов функции disk_status(drv) все заработало..теперь на 16 гб флешку записывается и создается файл. Сейчас буду пробовать чтение из файла.

Собственно, чтение из флешки также опробовано. Все работает. Терь можно обновляться с флешки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем доброго дня. Чтобы не плодить сущностей, задам в этой теме вопрос по FATFS: Каков максимальный размер накопилтеля с которым оно будет работать. Хочется для одного проекта 128Gb на USB Flash. Реально ли это?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

STMовский встроенный USB не хочет работать с 128Gb флешкой Kingston DataTraveler HyperX 3.0. Пишет USBH_USR_UnrecoveredError.Видимо его смущает поддержка USB 3.0 этой флеш.

 

А вот с 32Gb Sandisk Cruzer Fit всё работает. Только очень печалит меня имеющаяся скорость записи - около 1.2 Мбит/с. Дописываю в существующий файл по 50000 Байт. Ушла почти вся оперативная память микроконтроллера :blush: (STM32F207VG).

Начал подумывать о внешней памяти по FSMC, чтобы писать буферами большей длинны, но в ближайшем будущем такой апгрейт нереален.

 

Пока собираюсь ставить микруху физического уровня для поддержки USB HS. Выбрал USB3300. Надеюсь с ней получиться поднять скорость при таком же размере дописываемого буфера.

 

Может кто использовал связку STM и USB_HS_PHY? Каких скоростей записи удалось достичь?

 

ЗЫ: Нашёл тест скорости используемой флешки http://usbflashspeed.com/20182, там её разгоняют до 12.39 MByte/s - значит расти есть куда, вопрос только в том, что окажется слабым звеном))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...