27.11.2015, 01:11
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Всё правильно, там и это есть, просто не так выразился. Пауза стоит именно перед ожиданием выхода из программирования, а если её убрать, то вылетает с ошибкой. Если её туда воткнули - значит что-то не так просто. В любом случае если там много времени тратится, то всё же лучше попробовать решить проблему скорости существенным увеличением длины мультиблоков.
|
|
|
|
27.11.2015, 12:45
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
В той выжимке из SPL, что предложил Easyrider действительно есть задержка в виде цикла, но вот я смотрю в самой SPL которая есть у меня и там нет такой задержки. После окончания передачи всех данных, сразу проверяется статус и ожидание выхода из состояния программирования.
|
|
|
|
27.11.2015, 17:26
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Сама SPL у меня вообще не заработала толком, даже на этапе инициализации когда передается первая команда CMD55 после СMD8 (она без ошибок проходит) почему-то выпадает с ошибкой SD_ILLEGAL_CMD, если этот кусок пройти в дебаге по шагам, то нормально, а если в реалтайме то вот ошибка. Так что изначально SPL нерабочая в принципе. Она вероятно работает на каком-то малом проценте флешек. А уже в посдедних выжиках вот пауз понаставили - видимо без таких костылей не работает толком.
|
|
|
|
27.11.2015, 19:26
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Сообщение от black27512
|
Так что изначально SPL нерабочая в принципе. Она вероятно работает на каком-то малом проценте флешек. А уже в посдедних выжиках вот пауз понаставили - видимо без таких костылей не работает толком.
|
Я не знаю что изначально было, но в моей версии SPL, все работает и с разными картами.
|
|
|
|
04.12.2015, 03:06
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Наконец-то разобрался. Уже стал пробовать разделять функцию записи мультиблока на части с целью продолжения передачи, но и там ждал облом, т.к. модуль SDIO в начале передачи не проверяет BUSY карты, ну и в итоге ничего не вышло.
За то понял причину всех этих глюков и вставки этих пауз в конец функции. Как обычно всё банально, в даташите на МК есть такой рисунок:
И вот получается так, что не всегда между опросами карты проходит этих самых минимум 8 тактов...
В итоге происходит черти что, карта подвисает, глючит, не воспринимает команды (не возвращает код команды). И происходит это именно если частота ядра МК высокая, а частота SDIO нет, либо если не используется RTOS, т.к. с ней возможно процесс притормозится и глюк не проявится.
Проблема решилась просто вставкой мизерной задержки между проверками состояния карты (CMD13), что бы гарантированно эти 8 тактов прошли, ну и эту огромную задержку убрал. Теперь скорость записи возросла значительно.
Вот почему эти грабли проявляются не у всех и не на всех картах...
|
|
|
Сказали "Спасибо" black27512
|
|
|
07.12.2015, 12:50
|
|
Частый гость
Регистрация: 23.10.2011
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Добрый день!
Использую библиотеку FatFs ChaN.
Вопрос следующий: как проверить готовность SD к записи?
При постоянной записи на некоторых картах возникает проблема записи некорректных данных. Однако если принудительно ставить задержки между циклами записи в 250 мс (встречал на форумах, что по новой спецификации и все 500 мс), тогда все нормально. Но это накладно - ждать так долго, если контроллер карты будет готов раньше. Кроме того большинство SD не подходят под спецификацию и имеют гораздо большие задержки при больших размерах карты - около 1 с.
Либо это контроллер карты возвращает некорректные данные о готовности, так как операции записи происходят?
Спасибо!
|
|
|
|
07.12.2015, 13:45
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Проблем может быть сколько угодно, даже в просадке питания на SD карте, потому как во время записи она потребляет приличный ток. Посмотрите в этом направлении. Емкости непосредственно на питании карты, длину проводников.
Ну а так если функции ошибок не возвращают, то тут уже надо искать закономерности, пробовать другие версии библиотеки и т.д. Вообще реализация работы с картами по SDIO стабильностью не блещет...
Если конкретно, то покажите именно ту библиотеку с которой не работает, потому как под FatFS ChAN можно много чего понимать. Их реализаций, допилов и перепилов много.
|
|
|
|
07.12.2015, 14:03
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Сообщение от Vitaliki
|
Использую библиотеку FatFs ChaN.
|
Сообщение от black27512
|
потому как под FatFS ChAN можно много чего понимать
|
А что тут понимать? FatFs ChaN это библа файловой системы, к работе с SD она не имеет непосредственного отношения, только косвенное.
|
|
|
|
07.12.2015, 14:18
|
|
Частый гость
Регистрация: 23.10.2011
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Спасибо за ответ!
За основу брал пример: http://mikrocontroller.bplaced.net/w...s/?page_id=621
Однако сейчас убрал дополнительные функции-обертки и работаю напрямую с библиотекой Chan'a.
Библиотека: FatFs module R0.09b (C)ChaN, 2013
Библиотека работает нормально, если писать с задержками, а не постоянно или через промежутки времени (раз в секунду). Если знаете, подскажите: как проверить готовность.
Пробовал новую библиотеку (FatFs R0.11a). Но здесь появляется ошибка при открытии файла/директории (FR_INT_ERR либо FR_NO_FILESYSTEM). Поэтому работаю с прежней.
Провода достаточно длинные (около 5 см), но меньше нельзя, такая конструкция. Думаю, что в связи с этим и 4-битный режим не идёт. А что можно поправить по схемотехнике?
Спасибо!
|
|
|
|
07.12.2015, 14:22
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: STM32+SDIO+SDHC16Gb
Сообщение от Vitaliki
|
Если знаете, подскажите: как проверить готовность.
|
Читать тему сначала не пробовали?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:41.
|
|