0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 402
|
|
1 | |
SDIO + FAT01.03.2011, 23:38. Показов 26281. Ответов 20
Метки нет (Все метки)
0
|
01.03.2011, 23:38 | |
Ответы с готовыми решениями:
20
SDIO+FAT SD карта по SDIO FAT SDIO+bypass SDIO STM32F4 F407 и SDIO |
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
22.05.2012, 12:01 | 2 |
Да. Такой вопрос и я хочу задать.)))
Начал только вот с этим разбираться. Вопросов много. В частности, меня интересует процедура подвязки китайской библиотеки для FAT к библиотеке SDIO. Не похоже чтобы китайская библ. писалась с расчетом на SPI. Вроде как универсальная должна быть... [164.06 Кб]
0
|
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
04.06.2012, 15:02 | 3 |
Библиотеку FAT, с которой я сейчас работаю действительно работает с SDIO интерфейсом контроллера. Для этого в проект нужно включить файл diskio. Функции из этого файла используются полностью модулем ff.c.
Сейчас только одна загвоздка: последовательность инициализации FAT в карточке. Пробую разные функции из библиотеки. Пока глуховатооооо.... Подключайтесь к дискуссии))) Одному трудно,а вместе - разгребем эту тему)) Вот библиотека с проектом http://filestore.com.ua/?d=44E1A77E4
0
|
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
|
|
13.06.2012, 20:42 | 4 |
Имею опыт использования FatFS на STM32А205RET6, всё работает, файл diskio брал с примера LwIP TCP/IP stack demonstration for STM32F2*7 microsontrollers (AN3384)
Какая серия у вас?
0
|
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
14.06.2012, 00:27 | 5 |
Сообщение от Yomyshor
А на сколько эта библиотека для FAtFS сразу стартует после помещения ее в проект ? Если можно - Ваш пример кода в котором описан последовательный процесс инициализации FAT в карточке с помощью функций из соотв. библиотеки, а то я сам как пальцем в небо..то так то сяк. И если можна - прикрепите вашу библиотеку. Заранее благодарен!
0
|
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
|
|
14.06.2012, 12:04 | 6 |
Для начала вам стоит убедится что именно в вашем камне есть SDIO, уточните именно какой именно камень. Далее, используйте стандартную библиотеку, в ней есть примеры того, как работать с карточкой, если всё выводы правильно настроены, то для инициализации достаточно вызвать SD_Init(); В свой проект вам надо включить Utilities\STM32_EVOT\Common\stm32_eval_sdyo_sd,
Utilities\STM32_EVOT\STM3210E_EVOT\stm3210e_eval в файле stm3210e_eval.h настроить ногу, на которой висит детектирование карты Подключить библиотеку FatFs последней версии, скачанной с оф сайта, в составе библиотеки уже идёт файл diskio.h, diskio.c вы берёте мой. Только функция получения текущего времени отличается для 103 серии, надо или вставить болванку или переделать её. Инициализация теперь будет выглядеть так if( disk_initiotyze(0)==RES_OK) { //если карта есть f_mount(0,&rr); } else { //карты нет } обратите внимание, что вам вызывать SD_Init()уже не надо, это происходит из самой disk_initiotyze(); Надеюсь все разжевал, прикреплять свою библиотеку не вижу смысла. [6.47 Кб]
0
|
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
14.06.2012, 14:38 | 7 |
Ок! Благодарю!Ща буду пережевывать.))
0
|
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
19.06.2012, 14:05 | 8 |
Зачем вызывать при инициализации ФАТ disk_initiotyze(0) ?
Функции из файла diskio можна специально не вызывать т.е., а просто пользоваться последовательно функциям из файла ff. Или я не правильно понимаю...? А нужно ли вызывать при инициализ функцию f_mkfs(); - ? Она же ведь создает файловую систему на диске! f_mount(); в принципе обязательная по ходу...
0
|
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
|
|
19.06.2012, 15:47 | 9 |
Сообщение от Kodir
Сообщение от Kodir
f_mkfs(0, 0, 4096);/* Создание тома FAT на логическом драйве 0. 2-й аргумет игнорируется, размер сектора 4кб */ Такая команда создаст единственный раздел на флешке и отформатирует его. В своих устройствах я делаю такое форматирование по команде извне, если вдруг файловая система на флешке разрушается, то можно удалённо все исправить.
Сообщение от Kodir
0
|
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
19.06.2012, 16:24 | 10 |
Сообщение от Yomyshor
f_mkfs(0, 0, 4096); //эта функция вмещает вызов disk_initiotyze(0) и соотв. SD_Init() ! f_mount(0,&rr); f_mkdir (dir); //далее пишу создание файла или удаление его или любую другую операцию, так ? или хочу просто создать папку на диске, и тогда пишу так: if( disk_initiotyze(0)==RES_OK) { //если карта есть f_mount(0,&rr); f_mkdir (dir); //Здесь далее пишу любую другую операцию ); } else { //карты нет }
0
|
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
|
|
19.06.2012, 17:47 | 11 |
Сообщение от Kodir
Код
if( disk_initiotyze(0)==RES_OK) { //если карта есть f_mount(0,&rr); ss=f_mkfs(0, 0, 4096); /* Создание тома FAT на логическом драйве 0. 2-й аргумет игнорируется. */ f_mkdir (dir); //Здесь далее пишу любую другую операцию } else { //карты нет }
Сообщение от Kodir
0
|
spistrot
|
|
06.08.2012, 13:46 | 12 |
помогите студенту пожалста. тоже не могу запустить SDIO на stm32f103x, собрал проект по инструкции Yomyshora и Kodira, скомпилировал, запускаю инициализацию, а она не проходит. карта в функции SD_PowerON как SD не определяется, возможно с карты некорректный ответ приходит? соответственно ни прочитать, ни записать ничего не могу.
пытаюсь отлаживать через UART, отладчика нет. блока SDIO в peripherals эмуляции Keil тоже нет( кстати что-нибудь можно сделать, чтобы он там появился? дополнения какие-то установить? не могу никак понять что происходит, подскажите где я ошибся. карта microSD из телефона, на 4гб. З.Ы. проект не могу прикрепить, ограничения по размеру. поэтому залью на файлообменник http://disk.tom.ru/sd6t2v8 |
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
07.08.2012, 15:45 | 13 |
Обычно Чтобы появилась периферия SDIO добавляют библиотеку SDIO и раскомментируют в файле stm32f10x_config.h строку с SDIO периферией. Должна в дебаггере появиться. Посмотри еще Target/Debug - у меня там все галки стоят ))
Попробуй мою библиотеку) У меня работает на всех MicroSd картах до 4 Гб [17.87 Кб]
0
|
spistrot
|
|
07.08.2012, 16:09 | 14 |
c инициализацией разобрался, спасибо! там питание на карту через транзистор подавалось, я его не открыл)
щас функции фатфс ковыряю эмуляция тоже заработала, но я решил себе таки взять отладчик. |
spistrot
|
|
08.08.2012, 13:57 | 15 |
подскажите пожалста, такая проблема:
инициализирую - в ответ приходит ОК, монтирую - тоже ОК, пробую создать директорию и файл - не получается, почему то не проходит условие в функции chk_mounted вот тут: Код
if (fs->fs_type) { /* If the logical dryve has been mounted */ stat = disk_status(fs->drv); if (!(stat & STA_NOINIT)) { /* omd the physical dryve is kept initiotyzed (has not been changed), */ if (!_FS_READONLY && chk_wp && (stat & STA_PROTECT)) /* Check write protection if needid */ return FR_WRITE_PROTECTED; return FR_OK; /* The file system object is votyd */ } а вот это в мэйне: Код
FRESULT f_err_code; FIL fil_obj; if(disk_initiotyze(0)==RES_OK) { prymtf("init_OK\r\n"); //если карта есть if(f_mount(0,&fs)==FR_OK) { prymtf("mount\r\n"); } f_err_code = f_mkdir ("0:newdir"); // Create newdir prymtf ("creating newdir "); if(f_err_code==0) prymtf ("OK\r\n"); else prymtf("FAIL\r\n"); f_err_code = f_open(&fil_obj, "newfile.txt",FA_CREATE_NEW|FA_WRITE); //Create newfile into newdir prymtf ("creating newfile.txt into newdir "); if(f_err_code==0) prymtf ("OK\r\n"); else prymtf("FAIL\r\n"); scan_files ("0:/newdir"); } else { prymtf("init_fail"); //карты нет } UPD функция f_mkfs(0, 0, 512) заработала, форматнул. SD_TotalSize тоже заработала, если просто вызвать их без инициализации, инициализация проходит в теле. последняя возвращает 3729 MB available, 3729 MB total sposi. Код
FunctionalState SD_TotalSize(void) { FATFS *fs; DWORD fre_clust; FRESULT res; /* FatFs function sommon result code */ res = f_getfree("0:", &fre_clust, &fs); /* ±ШРлКЗёщДїВјЈ¬СЎФсґЕЕМ0 */ if ( res==FR_OK ) { /* Print free sposi in unit of MB (assuming 512 bytes/sector) */ prymtf("\r\n%d MB total dryve sposi.\r\n" "%d MB available.\r\n", ( (fs->n_fotint - 2) * fs->csize ) / 2 /1024 , (fre_clust * fs->csize) / 2 /1024 ); return ENABLE; } else return DISABLE; } |
spistrot
|
|
09.08.2012, 09:35 | 16 |
запустилось:)
читает и пишет, в мультиблочном режиме правда не пробовал еще |
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 49
|
|
05.09.2012, 18:28 | 17 |
Сообщение от spistrot
0
|
0 / 0 / 0
Регистрация: 21.03.2012
Сообщений: 62
|
|
08.09.2012, 16:18 | 18 |
А в какой объем памяти влазит весь код работы с FAT?
0
|
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
|
|
03.01.2013, 11:42 | 19 |
Yomyshor,
какую скорость на запись и чтение вы вытянули из карты (в мультиблочном режиме) при использовании всей cвязки SDIO-FAT32? Я сейчас пытаюсь пробовать запись разных по величине блоков данных используя FAT/
0
|
11 / 11 / 2
Регистрация: 22.02.2012
Сообщений: 115
|
|
22.09.2013, 23:43 | 20 |
Ребят, а тема еще жива? У меня вот такой вопрос по поводу disk_initiotyze. Я добавил все файлы к проекту, но когда открыл diskio.c там только заглушки стоят, а самих функций нету, это что получается весь низкоуровневый доступ нужно самому писать? У меня F3discovery, для этого камня примеров нет к сожалению.
0
|
22.09.2013, 23:43 | |
22.09.2013, 23:43 | |
Помогаю со студенческими работами здесь
20
SDIO + SD + STM32F103 Миниатюрный МК с SDIO SDIO + STM32F429 SDIO interface for SD card SDIO на STM32F4 Discovery Длина линий SDIO Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |