Jump to content

    
Sign in to follow this  
Nosaer

Зависает в f_mkfs (STM32)

Recommended Posts

Здравствуйте.
МК зависает при вызове функции:
f_mkfs("", FM_FAT32, 0, work, sizeof work);

Зависает в функции HAL_SD_WriteBlocks, в этом цикле:
while(!__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_TXUNDERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DATAEND | SDIO_FLAG_STBITERR))

Монтирование, создание файлов и запись в них выполняется нормально, но с форматированием проблема.

Пробовал всевозможные файловые системы, в половине случае так же зависает, в половине возвращает: FR_INVALID_PARAMETER

Пробовал разные MicroSD, результат везде один.

 

Где то год назад я уже пробовал работать с MicroSD, и тогда никаких проблем у меня не возникало.
Возможно причина связана с новым обновлением CubeMX или с тем, что в CubeMX в настройках FATFS появился пункт BSP (Detect_SDIO)

 

Возможно кто то сталкивался с подобным и подскажет решение

 

МК: STM32F4

Проект генерирую в кубе

Связка FATFS+SDIO
 

Share this post


Link to post
Share on other sites
15 hours ago, Nosaer said:

Зависает в функции HAL_SD_WriteBlocks, в этом цикле:

Неужели этот куб так хорош, что его стали использовать везде, где только можно?! Зависает, без таймаута, без выдачи каких-либо отладочных сообщений... Может быть это всё можно включить в нём, и он расскажет о проблемах сам?

32 minutes ago, golf2109 said:

первое, что я бы сделал-попробовал другие типы карточек

А второе - отказаться от куба, и написать дрова и стек карточки самостоятельно, если, конечно проект не одноразовый.

Share this post


Link to post
Share on other sites
7 hours ago, golf2109 said:

первое, что я бы сделал-попробовал другие типы карточек

Другие MicroSD я пробовал, проблема та же. Через SDIO на прямую я спокойно работаю с картой, могу считывать все ее параметры, записывать, считывать. Тоже самое в принципе и с FATFS, кроме функции форматирования.

Карт SD, под рукой к сожалению пока нет.

 

haker_fox, моего уровня знаний пока не достаточно чтобы прицепить FATFS самостоятельно.

Если бы у меня сейчас получилось инициализировать все с помощью куба, чтобы все конкретно заработало. Я бы со временем с этими настройками все переписал бы под себя. Как в принципе я поступаю со всей другой периферией: освоил на HAL, посмотрел как все инициализируется, посмотрел как все работает, перехожу на CMSIS.

Во всяком случае для меня, это на много упрощает освоение STM.

Share this post


Link to post
Share on other sites
4 hours ago, Nosaer said:

haker_fox, моего уровня знаний пока не достаточно чтобы прицепить FATFS самостоятельно.

Как раз FatFS подключить очень просто. Нужно всего-лишь поправить с пяток функций в diskio.c, да и на сайте у Чана всё расписано. Другое дело - драйвер SDIO. Но здесь лучше начать разбираться постепенно, приглядывая в спецификацию физического уровня с sdcard.org.

4 hours ago, Nosaer said:

Я бы со временем с этими настройками все переписал

Ну чтож, я вас понимаю. Сам так до недавнего времени поступал) Хотя вот недавно осваивал периферию в одном МК для которого нигде примеров драйвера не было, только огрызки в инете. Пришлось конкретно сесть за мануал на МК, и разбираться. И делать, по-сути, с нуля.

Share this post


Link to post
Share on other sites
On 1/3/2019 at 2:51 PM, Nosaer said:

МК зависает при вызове функции:
f_mkfs("", FM_FAT32, 0, work, sizeof work); 

Во время вызова f_mkfs, заходит в disk_initialize?
Какой размер имеет массив work?

 

On 1/3/2019 at 2:51 PM, Nosaer said:

в половине случае так же зависает

Нужно спускаться ниже и смотреть на каком условии висит...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this