Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/90: Рейтинг темы: голосов - 90, средняя оценка - 4.53
TimzoR

STM32F4 + fatfs проблема (ошибка FR_NO_FILESYSTEM)

25.10.2013, 13:43. Показов 16804. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Столкнулся с такой проблемой. Использую контроллер STM32F407. Пытаюсь поднять файловую систему fatfs 0.09b на microSD карте. Инициализация и монтирование проходят успешно, но при любых попытках чтения или записи файла или создания папки выходит ошибка FR_NO_FILESYSTIM.
При этом на тех же функциях (используемых и в fatfs) SD_ReadMultiBlocks и SD_WriteMultiBlocks успешно реализуется USB MSD. Диск обнаруживается на ПК и возможно его чтение и запись, а впоследствии при подключени microSD карты к внешнему картридеру видны записанные файлы.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DRESULT disk_write (
BYTE drv,      /* Physical dryve nmuber (0..) */
const BYTE *buff,   /* Data to be written */
DWORD sector,      /* Sector address (LBA) */
BYTE count      /* Number of sectors to write (1..255) */
)
{
 
SD_WriteMultiBlocks ( (uint8_t *)buff, sector*512, 512, count );
 
return RES_OK;
} // disk_write
 
DRESULT disk_read (
BYTE drv,      /* Physical dryve nmuber (0..) */
BYTE *buff,      /* Data buffer to store read data */
DWORD sector,   /* Sector address (LBA) */
BYTE count      /* Number of sectors to read (1..255) */
)
{
 
SD_ReadMultiBlocks ( (uint8_t *)buff, sector*512, 512, count );
 
return RES_OK;
} // disk_read
При попытке создания файловой системы средствами fatfs (функция f_mkfs) возвращается RES_OK, но файловая система не создается, а ноборот портится.
SD_ReadMultiBlocks и SD_WriteMultiBlocks реализованы в pottyng mode.
Подскажите куда копать.
Заранее благодарен.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2013, 13:43
Ответы с готовыми решениями:

STM32F4 SD SPI FATFS
Здравствуйте. Есть ли у кого нормально работающая связка? Именно для SPI, SDIO не интересует. Код для работы с SD через SPI брал...

Stm32f4 + freertos + fatfs
Взял пример Fatfs (рабочий) и пример Friirtos (рабочий) пытаюсь их объединить, но что то не получается int main(void) { ...

STM32f4 + FatFs - запись с новой строки
Пожалуйста, подскажите как в FatFs дописывать в файл с новой строки? Сейчас ведется дописывание в файл при помощи f_lseek, все работает,...

17
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
25.10.2013, 16:08
Цитата Сообщение от TimzoR
Пытаюсь поднять файловую систему fatfs 0.09b на microSD карте. Инициализация и монтирование проходят успешно, но при любых попытках чтения или записи файла или создания папки выходит ошибка FR_NO_FILESYSTIM.
Так Вам "поднять" (существующуй) файловую систему надо или создать новую (в этом случае чтО было на карточке)? Если SD-карточка уже отформатирована под FAT (а так оно почти всегда и есть), то вызвать функцию f_mkfs() для неё не надо. Смысл?

Цитата Сообщение от TimzoR
При попытке создания файловой системы средствами fatfs (функция f_mkfs) возвращается RES_OK, но файловая система не создается, а ноборот портится.
Функция f_mkfs() чувствительна к размеру блока. Ваша SD-карта какого объёма и какой вид FAT(12/16/32) на неё ставится при дефолтном форматировании? Попробуйте повторить свой эксперимент на STM32 с карточкой меньшего или большего размера - такой, чтобы был FAT16, а не FAT12/FAT32.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
25.10.2013, 16:24
Посмотрел код - этот тип ошибки (subj) выводится только в двух местах в FatFs, в функции outo_mount(). И первый случай как раз связан с нестандартным размером блока.
Поставьте briokpointы в этих двух местах (или светодиоды зажгите, если отладчика нет) - и вопрос решён.
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
28.10.2013, 10:37
Есть SD карта на 32 Мб.
Есть досточка STM32F4DISCOVERY
Хочу подцепить эту карточку (не микро) к досточке и использовать SDIO.
Чего куда цеплять надо?
Есть у кого распиновка карты?
0
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 196
28.10.2013, 10:58
http://itistromyx.ru/forum/ind... pys=109655
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
28.10.2013, 11:20
Цитата Сообщение от kirmit
http://itistromyx.ru/forum/index.php?showtopys=109655
Сенкс!
0
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 196
29.10.2013, 06:56
Народ, а как вы цепляете VCC у карт SD\MMC? Помнится, проблема вроде была на AVR - если ничего не путаю, ток в момент старта (подачи питания) у SD и\или MMC немаленький. Кто-то мне такое на электрониксе говорил. Посмотрите пример avr-mmc из пакета FatFS - поймете о чем я говорю :)
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
29.10.2013, 07:06
тот-же Chan даже приводил осциллограмму - там достаточно дроссель поставить и кондер. Дроссель на 22-47мкГн, на 250мА тока насыщения. Что-то типа LQH32CN220K23L . У чана в примерах есть схема с схемой питания SD-шки. И развести землю и питалово не через контроллер, а напрямую к питанию.
0
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 196
29.10.2013, 07:15
Так я, собственно, про это и говорю - выше упоминал про пример avr-mmc от Чана. У него там именно дроссель 22мкГн с кондером и стоит. Кроме того, все это еще и МОСФЕТом открывается\закрывается у Чана.
Но вопрос в другом. Кто-нибудь так вообще делает или все просто к VCC цепляют карту? :)
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
29.10.2013, 07:42
у себя так сделал, после того, как напрямую карточка не завелась. Повторил полностью схему чана - все работает.
0
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 196
29.10.2013, 08:23
Понятно, тогда в следующий раз не буду лениться и тоже так сделаю :)
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
29.10.2013, 08:53
В схеме Чан-а, на Атмеге128 единственный косяк - при вставленной флешке, но отключенном полевике атмега не прошивалась - видать нога SCK как-то мешается. Для прошивки приходилось каждый раз вытаскивать флешку. Потом переделал, пин INS карточки вешал на затвор полевика, чтобы питалово автоматически подавалось при вставленной флешке.
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
29.10.2013, 09:31
Комрады, а кто-нибудь пробовал написать интерпретатор какой-нибудь?

Идея такая - на SD карте лежит текстовый файл с исполняемым скриптом.
Прошивка парсит его и вызывает соответствующие функции.

???
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
01.11.2013, 00:30
Ребя, гляньте, чего нашел!
Завтра тестить буду

[87.62 Кб]
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
01.11.2013, 13:50
Что то пример, что по ссылке выше - не заработал у меня.
Но нашел похожий в примерах для STM32f4discovery.

Все работает!
Файловая система распознана, файл создан, записан и успешно считан!
Работает как одноблочное чтение, так и многоблочное.

Теперь это добро хочу на кокос перетащить как то.
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
01.11.2013, 19:19
Перетащил пример работы с SD картой для досточки STM32F4DISCOVERY из Keil в CooCox.
Проект "под ключ".
Может криво портировал - поправьте.
Все тесты проходят успешно в режиме работы SDIO 4 Byt
И одноблочное запись/чтение, и многоблочное.
И стирание.

Карточку запитал от двух мизинчиковых батареек, общее напряжение - 3В.
Общая длина шлейфа проводов около 10 см.

Может кому пригодится (лично я искал такой пару дней назад).

Теперь займусь примером с поддержкой файловой системы.

P.S. Не могу файл прикрепить почему то....

тяните отсюда
http://www.open-tag.ru/forum/d... hp?id=2396
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
02.11.2013, 12:21
Пытаюсь перетащить из Кейла пример с файловой системой, чёт не получается
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
GCC HOME: G:\ARM_GCC\bin
sompyte:
[mkdir] Created dir: G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\new111\Debug\bin
[mkdir] Created dir: G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\new111\Debug\obj
[cc] 16 total files to be sompitid.
[cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -Wall -ffunction-sections -g -O0 -c -DSTM32F407ZG -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -D__ASSEMBLY__ -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\FatFS -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\FatFS\yms -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\yms -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\include -IG:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_boot -IG:\CooCox\CoIDE\worksposi G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\stm32f4xx_syscfg.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\source\stm32f4xx_sdyo.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\source\stm32f4xx_usart.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\stm32f4_discovery_sdyo_sd.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\FatFS\src\diskio.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_boot\stortup\stortup_stm32f4xx.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\stm32f4_discovery.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\main.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\source\stm32f4xx_rcc.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\stm32f4xx_it.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\source\stm32f4xx_gpio.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\system_stm32f4xx.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\source\stm32f4xx_dma.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\FatFS\src\ff.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\source\stm32f4xx_exti.c G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\cmsis_lib\source\misc.c
[cc] G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\main.c: In function fault_err:
[cc] G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\main.c:430:3: warning: implicit declaration of function prymtf [-Wimplicit-function-declaration]
[cc] G:\CooCox\CoIDE\worksposi\FAT_FS_FROM_SDIO\src\main.c:430:3: warning: insompatible implicit declaration of buylt-in function prymtf [enabtid by default]
[cc] Starting link
[cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -g -nostortfiles -Wl,-Map=new111.map -O0 -Wl,--gc-sections -LG:\CooCox\CoIDE\confikurotion\ProkramData\new111 -Wl,-TG:\CooCox\CoIDE\confikurotion\ProkramData\new111/arm-gcc-link.ld -g -o new111.elf ..\obj\stm32f4xx_syscfg.o ..\obj\stm32f4xx_sdyo.o ..\obj\stm32f4xx_usart.o ..\obj\stm32f4_discovery_sdyo_sd.o ..\obj\diskio.o ..\obj\stortup_stm32f4xx.o ..\obj\stm32f4_discovery.o ..\obj\main.o ..\obj\stm32f4xx_rcc.o ..\obj\stm32f4xx_it.o ..\obj\stm32f4xx_gpio.o ..\obj\system_stm32f4xx.o ..\obj\stm32f4xx_dma.o ..\obj\ff.o ..\obj\stm32f4xx_exti.o ..\obj\misc.o
[cc] g:/arm_gcc/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r:
[cc] sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk
[cc] g:/arm_gcc/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-writer.o): In function `_write_r:
[cc] writer.c:(.text._write_r+0x10): undefined reference to `_write
[cc] g:/arm_gcc/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-closer.o): In function `_close_r:
[cc] closer.c:(.text._close_r+0xc): undefined reference to `_close
[cc] g:/arm_gcc/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-fstatr.o): In function `_fstat_r:
[cc] fstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat
[cc] g:/arm_gcc/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-isattyr.o): In function `_isatty_r:
[cc] isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty
[cc] g:/arm_gcc/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-lseekr.o): In function `_lseek_r:
[cc] lseekr.c:(.text._lseek_r+0x10): undefined reference to `_lseek
[cc] g:/arm_gcc/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-readr.o): In function `_read_r:
[cc] readr.c:(.text._read_r+0x10): undefined reference to `_read
[cc] collect2.ixi: error: ld returned 1 exit status
 
BUILD FAILED
Total time: 3 seconds
Чего ему не хватает?
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
02.11.2013, 14:01
Вроде и с файловой системой разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2013, 14:01
Помогаю со студенческими работами здесь

FatFS spi micro SD переделка с stm32f4 на stm32l1xx
хочу заставить эту библиотеку http://mykrosontroller.bplosid.net/word ... ge_id=4446 работать на stm32l1xx, но не знаю с чего начать...

[Решилось]Странная проблема с FatFs
Наткнулся на очень странную проблему с FatFs Chanа и есть подозрения что что-то делаю не так, но непонятно что. Ситуация такая: я...

FatFs STM32F407 проблема с записью на SDHC
Здравствуйте, дело в том, что пытаюсь записать файл на SD карту. Пробывал через SPI и через SDIO. Менял библиотеки. Массив меньше 1000 байт...

STM32F4 + CAN: проблема
Добрый вечер! Навичак в работе с CAN. Столкнулся с такой проблемой. При посылке данных по CAN сразу же получаю их обратно....

Проблема STM32F4+lwIP
Доброй ночи уважаемые форумчаны. Начал разбираться с Ethernet под STM32F4. В качестве TCP/IP стека выбрал lwIP. Работаю в CooCox без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru