Nosaer 0 Posted January 3, 2019 · Report post Здравствуйте. МК зависает при вызове функции: 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 Quote Ответить с цитированием Share this post Link to post Share on other sites
golf2109 0 Posted January 4, 2019 · Report post первое, что я бы сделал-попробовал другие типы карточек Quote Ответить с цитированием Share this post Link to post Share on other sites
haker_fox 0 Posted January 4, 2019 · Report post 15 hours ago, Nosaer said: Зависает в функции HAL_SD_WriteBlocks, в этом цикле: Неужели этот куб так хорош, что его стали использовать везде, где только можно?! Зависает, без таймаута, без выдачи каких-либо отладочных сообщений... Может быть это всё можно включить в нём, и он расскажет о проблемах сам? 32 minutes ago, golf2109 said: первое, что я бы сделал-попробовал другие типы карточек А второе - отказаться от куба, и написать дрова и стек карточки самостоятельно, если, конечно проект не одноразовый. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nosaer 0 Posted January 4, 2019 · Report post 7 hours ago, golf2109 said: первое, что я бы сделал-попробовал другие типы карточек Другие MicroSD я пробовал, проблема та же. Через SDIO на прямую я спокойно работаю с картой, могу считывать все ее параметры, записывать, считывать. Тоже самое в принципе и с FATFS, кроме функции форматирования. Карт SD, под рукой к сожалению пока нет. haker_fox, моего уровня знаний пока не достаточно чтобы прицепить FATFS самостоятельно. Если бы у меня сейчас получилось инициализировать все с помощью куба, чтобы все конкретно заработало. Я бы со временем с этими настройками все переписал бы под себя. Как в принципе я поступаю со всей другой периферией: освоил на HAL, посмотрел как все инициализируется, посмотрел как все работает, перехожу на CMSIS. Во всяком случае для меня, это на много упрощает освоение STM. Quote Ответить с цитированием Share this post Link to post Share on other sites
haker_fox 0 Posted January 4, 2019 · Report post 4 hours ago, Nosaer said: haker_fox, моего уровня знаний пока не достаточно чтобы прицепить FATFS самостоятельно. Как раз FatFS подключить очень просто. Нужно всего-лишь поправить с пяток функций в diskio.c, да и на сайте у Чана всё расписано. Другое дело - драйвер SDIO. Но здесь лучше начать разбираться постепенно, приглядывая в спецификацию физического уровня с sdcard.org. 4 hours ago, Nosaer said: Я бы со временем с этими настройками все переписал Ну чтож, я вас понимаю. Сам так до недавнего времени поступал) Хотя вот недавно осваивал периферию в одном МК для которого нигде примеров драйвера не было, только огрызки в инете. Пришлось конкретно сесть за мануал на МК, и разбираться. И делать, по-сути, с нуля. Quote Ответить с цитированием Share this post Link to post Share on other sites
Integro 0 Posted January 8, 2019 · Report post 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: в половине случае так же зависает Нужно спускаться ниже и смотреть на каком условии висит... Quote Ответить с цитированием Share this post Link to post Share on other sites