Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SDCard FatFs STM32F103C8T6
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
zeycon
Привет всем,
Уже неделю мучаюсь над инициализацием карт памяти, помогите пожалуйста.

И так:
IDE - CooCox CoIDE 1.7.8
MCU - STM32F103C8T6
Карта подключена к шине spi библиотеки использую кокосовские те что есть
В репозитории.
Карты обьемом до 4ГБ инициализируются без проблем и можно читать по секторам.
А вот 4ГБ и выше не инициализируються, код ошибки SDInit = 52.
Проблема номер два - файловая система от Chan не запускаеться даже для тех карт которые инициализируються (те которые меньше 4GB).
При открывании файла в режиме чтения ошибка 13 (No valid file system).
Пробовал форматнуть карты разными способами и FAT и FAT32 результат не меняется.

Помогите пожалуйста запустить хотя бы файловую систему.
Спасибо.

Код прилогаеться.
Genadi Zawidowski
Для решения проблемы номер два попробуйте поставить в ffconf.h
Код
#define    _MULTI_PARTITION    1    /* 0:Single partition, 1/2:Enable multiple partition */


зы: ну и древность же у Вас используется... Chan исправляет разного рода баги постоянно... но меняйте потом, когда разберетесь.
zeycon
Я пробовал и самую свежую версию прям с сайта чана, тоже не запустилась
шяс пробовал _MULTI_PARTITION 1 перестал компилитья.
может я не правильно портирую

просто отключил опции с ATA и USB
может еше чтонибудь надо менять ?
Genadi Zawidowski
Оставьте родную версию fat fs, проверьте что компилится.
Потом define поменяйте. Просто современные карты уже из магазина идут с partition table, а не с обычным floppy-подобным способом разметки.
Диагностику сюда (кокоса у меня нет, проверить сам не смогу).

Загляните сюда - https://188.134.5.254/browser/hfreceiver/trunk/sdcard.c - поверялось от 128 мегабайт до 16 гигабайт (форматирование не сделано).


Начиная со строки 2352
zeycon
Опять не компилиться 05.gif
Нажмите для просмотра прикрепленного файла

Я раньше на АВР-ах использовал карты все работали без проблем до 16GB FAT32
но это было CodeVisionAVR а там нету исходников на либы. (там тоже чановский код использован)
Genadi Zawidowski
В моих исходниках diskio.c было

Код
#if _MULTI_PARTITION    /* Volume - Partition resolution table */
PARTITION VolToPart[] = {
    {0, 0},    /* "0:" <== Disk# 0, auto detect */
    {1, 0},    /* "1:" <== Disk# 1, auto detect */
    {2, 0},    /* "2:" <== Disk# 2, auto detect */
    {3, 1},    /* "3:" <== Disk# 3, 1st partition */
    {3, 2},    /* "4:" <== Disk# 3, 2nd partition */
    {3, 3},    /* "5:" <== Disk# 3, 3rd partition */
    {4, 0},    /* "6:" <== Disk# 4, auto detect */
    {5, 0}    /* "7:" <== Disk# 5, auto detect */
};
#endif


- т.е., оно должно открываться при мультипартишион. Что-то запилили совсем...
zeycon
У меня нету такого.
У вас какая версия ?

а еще вот такой момент есть
disk_timerproc(); /* Disk timer process */

эта функция должна вызываться каждые 10мс
но в моих драйверах нету такого.

может в этом дело ?
хотя и без этого посекторно карта читается !
Genadi Zawidowski
У меня disk_timerproc нет вообще. Никаких асинхронных процессов не происходит. Есть get_fattime - её при создании/модификации файла вызывают чтобы текущее время узнать.
Использую
Код
/*----------------------------------------------------------------------------/
/  FatFs - FAT file system module  R0.11                 (C)ChaN, 2015
/-----------------------------------------------------------------------------/


в Ваших исходниках кто-то таблицу разделов удалил. В прототипе от Чана было.
zeycon
Отсюда скачал.

Не моглибы вы скинуть вашу версию сюда ?
Genadi Zawidowski
Я оттуда же качал. Файлы без модификаций (кроме diskio.c, который заменен sdcard.c и конфигурационного) - все лежит в SVN, на который ссылк ф давал уже выше.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.