|
SD Card - програмная реализация интерфейса, У кого нибудь есть примеры реализации взаимодействия с SD Card? |
|
|
|
 |
Ответов
(195 - 209)
|
Jun 25 2012, 13:52
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003

|
Привет, всем! Кто-нибудь делал поддержку длинного имени файлов у fatfs? У меня не получается.Ставлю _USE_LFN =1 , добавляю функции ff_convert() и ff_wtoupper(). А имена так и остались короткими? Что делаю не так ?
|
|
|
|
|
Jun 25 2012, 18:23
|
Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955

|
stm32 - это хорошо, сам недавно вязал F4Discovery c SD по SPI, и огрызок FAT16 прикручивал (читает только из корня, только короткие имена и непрерывные цепочки кластеров, зато свое и для моей задачи хватило) А вот нет ли у кого рабочего примера LPC2478 + MCI (достаточно чтения - записи блока)
Сообщение отредактировал sherr - Jun 25 2012, 18:24
|
|
|
|
|
Jun 25 2012, 19:31
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(prussta @ Jun 25 2012, 16:52)  Привет, всем! Кто-нибудь делал поддержку длинного имени файлов у fatfs? У меня не получается.Ставлю _USE_LFN =1 , добавляю функции ff_convert() и ff_wtoupper(). А имена так и остались короткими? Что делаю не так ? Доргая prussta. Поскольку у Вас ещё нет личного ящика, напишу здесь. Не нужно дублировать сообщения в разных темах форума. Во избежание недоразумений в будущем настоятельно рекомендую прочитать правила. Искренне Ваш, Модератор
|
|
|
|
|
Jun 25 2012, 19:35
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(sherr @ Jun 25 2012, 22:23)  А вот нет ли у кого рабочего примера LPC2478 + MCI (достаточно чтения - записи блока) Драйвер можно найти, например, и в примерах Кейла и у того же Чана и в книжке Тревора Мартина. Еще в сети есть ресурс Мартина Томаса. Гугл в помощь. =)
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Jun 26 2012, 14:12
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003

|
Цитата(skripach @ Jun 25 2012, 18:32)  Память выделить под длинное имя и показать fatfs где эта память. skripach, с памятью ясно, а как показать где эта память? )Можно, по подробнее.
|
|
|
|
|
Jun 26 2012, 17:28
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(prussta @ Jun 25 2012, 17:52)  Что делаю не так ? Если мне не изменяет память, то шаги такие - в ff.h добавьте _USE_LFN 1. Теперь надо сменить кодировку (например _CODE_PAGE 866) и подключить ccsbcs.c (в нем живет ff_convert). Ну и пример из документации, где видно как это юзается. CODE FRESULT scan_files (char* path) { FRESULT res; FILINFO fno; DIR dir; int i; char *fn; #if _USE_LFN static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1]; fno.lfname = lfn; fno.lfsize = sizeof(lfn); #endif
res = f_opendir(&dir, path); if (res == FR_OK) { i = strlen(path); for (;;) { res = f_readdir(&dir, &fno); if (res != FR_OK || fno.fname[0] == 0) break; if (fno.fname[0] == '.') continue; #if _USE_LFN fn = *fno.lfname ? fno.lfname : fno.fname; #else fn = fno.fname; #endif if (fno.fattrib & AM_DIR) { sprintf(&path[i], "/%s", fn); res = scan_files(path); if (res != FR_OK) break; path[i] = 0; } else { printf("%s/%s\n", path, fn); } } }
return res; }
Сообщение отредактировал IgorKossak - Jun 26 2012, 19:42
Причина редактирования: [codebox] для длинного кода!!!
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Jun 26 2012, 18:09
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата а как показать где эта память? Код fno.lfname = lfn;
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Jul 2 2012, 14:44
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003

|
Lotor, Skripach спасибо за помощь! Заработало!)) Объявление памяти (см. листинг) вставила в get_fileinfo (DIR *dj, FILINFO *fno), что в ff.c. И потом все запархало))) Код #if _USE_LFN static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1]; fno.lfname = lfn; fno.lfsize = sizeof(lfn); #endif
|
|
|
|
|
Jul 3 2012, 08:01
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(BlackOps @ Jul 3 2012, 08:49)  ктото может поделится примером рабочим? Драйвер Вы можете, например, посмотреть в примерах Кейла (\Keil\ARM\RL\FlashFS\Drivers). У меня версия 4.22 и там есть драйверы для STM32F2. В более новых версиях может есть и для f4, если там большие отличия.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Jul 3 2012, 10:33
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(BlackOps @ Jul 3 2012, 14:27)  ну не тока драйвер я говорил про рабочий готовый проект, который можно запустить и чтобы он записа данные тестовые не SD карту. Ох... %) Кеил на то драйверы и дает, что это аппаратно зависимая часть их fat. PS: Если уж по руководству не сможете разобраться, всегда можно посмотреть, как это сделано на примерах для демоборд. Например \Keil\ARM\Boards\ST\STM3220G-EVAL\RL\FlashFS\SD_File. Уверен, что у IAR аналогично.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|