MementoMori 4 22 декабря, 2020 Опубликовано 22 декабря, 2020 · Жалоба STM32F746, Код сгенерирован калокубом. Есть такая функция в нем SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_APP_CMD, SDMMC_CMDTIMEOUT); Так вот когда в теле этой функции проверяется регистр SDMMCx->STA, то проверка идет очень долго, так как бит CMDACT в единице. Спустя 20-30 секунд бит сбрасывается и карта работает идеально. Что характерно, время инициализации может быть и меньшим, иногда все сразу проходит. режим 4 битный, частота 48 МГц. Куда копать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 22 декабря, 2020 Опубликовано 22 декабря, 2020 (изменено) · Жалоба 17 минут назад, MementoMori сказал: Куда копать? Рискну нарваться на гнев, но копать в документацию и использовать не "калокуб" а свои собственные интеллектуальные ресурсы. Пару лет назад делал карту на обычном SPI для Cortex-M4F. Инициализация точно проходила в течение времени меншь, чем секунда. К сожалению подробности уже не помню. С тех пор с картами больше не работал. Но совет даю по собственному опыту. Вам это понадобится хотя бы и для того, чтобы понять, почему этот бит так долго висит в лог. 1. Ну и анализатор на шину совсем не будет лишним. Только скорость возможно придётся вам снизить, т.к. начинаются сбои в передаче данных с подключенными хвостами анализатора. Изменено 22 декабря, 2020 пользователем MrBearManul Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 декабря, 2020 Опубликовано 22 декабря, 2020 · Жалоба 22 минуты назад, MementoMori сказал: Куда копать? Цитата Setting the busy bit to 0 indicates that the card is still initializing. Setting the busy bit to 1 indicates completion of initialization. Card initialization shall be completed within 1 second from the first ACMD41. The host repeatedly issues ACMD41 for at least 1 second or until the busy bit are set to 1. Инициализация может занимать до секунды. Попробуйте другие карточки, других производителей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 22 декабря, 2020 Опубликовано 22 декабря, 2020 · Жалоба Just now, adnega said: Инициализация может занимать до секунды. Попробуйте другие карточки, других производителей. Пробовал, все то же самое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 22 декабря, 2020 Опубликовано 22 декабря, 2020 (изменено) · Жалоба 4 минуты назад, adnega сказал: Инициализация может занимать до секунды. Человек пишет про 29 минут назад, MementoMori сказал: 20-30 секунд А значит, явно проблема в коде. Ну или в железе. Или и там и там. Почитайте таки документацию. Там не очень сложный алгоритм инициализации карты. Ну и проверьте адекватность драйвера периферийного модуля MMC/SD. Для этого уже надо будет в документацию на микроконтроллез заглянуть, включая errata. Изменено 22 декабря, 2020 пользователем MrBearManul Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 декабря, 2020 Опубликовано 22 декабря, 2020 · Жалоба 27 минут назад, MrBearManul сказал: Там не очень сложный алгоритм инициализации карты. А что насчет питания карты? Какое оно? Есть ли ключик для "power cycle"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба Таки я бы всё-таки взял дешманский анализатор с али, и записал весь обмен с картой. К сожалению в программе нет декодера для карт, по крайней мере в моей версии. Придётся ручками анализировать. Но это хотя бы позволит проверить соответствие диаграмме, которую любезно привёл @adnega. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба 1 hour ago, MrBearManul said: Таки я бы всё-таки взял дешманский анализатор с али, и записал весь обмен с картой. К сожалению в программе нет декодера для карт, по крайней мере в моей версии. Придётся ручками анализировать. Но это хотя бы позволит проверить соответствие диаграмме, которую любезно привёл @adnega. Я бы в дополнение еще отметил интересный факт. Если включать на "холодную", то это происходит всегда. Если же подключаться отладчиком, то первый раз - долго, а потом можно долго ресетить контроллер, прежде чем такая ситуация возникнет вновь. Кстати.... у меня нет резисторов на линиях, но есть внутренние подтяжки, а кабель короткий - 7 см. Так можно делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 23 декабря, 2020 Опубликовано 23 декабря, 2020 (изменено) · Жалоба 30 минут назад, MementoMori сказал: Так можно делать? Мы обычно ставим 47 Ом. Но я не стесняюсь поглядеть осциллографом (именно им) форму сигналов на линии. Иногда бывает звон, если драйверы могут выдать хороший ток в линию, и он может вызвать срабатывание TVS-защиты, если таковая имеется. И вот вам будет глюк - бит считан/передан неверно. И у меня такая ситуация была. Поэтому здесь вам нужно решать проблему комплексно: сначал убедиться, что железо рабочее. А потом уже разбираться с кодом. 30 минут назад, MementoMori сказал: но есть внутренние подтяжки, Мы ставим внешние. С давних пор не делаем ставки на внутренние, т.к. они от микроконтроллера к микроконтроллеру меняются. Плюс они часто высокоомные, что не всегда подходит под условия. 30 минут назад, MementoMori сказал: Если включать на "холодную", то это происходит всегда. Ну как вы понимаете, здесь мильон причин может приводить к такому поведению: ошибка в периферии (читайте errata), ошибка в коде (изучайте код и мануал на микроконтроллер). З.Ы. Именно по этому драйвера периферии выгодно писать самому. В своём коде всегда проще разобраться, а занимаясь написанием, вычитываешь даташиты, мануалы, ерраты, и прочую документацию до дыр. И становишь автоматически профессионалом, да ещё и конкрурентноспособным)) З.Ы.Ы. В общем, вряд ли вам можно вот так просто помочь. Толлько если у кого-то не было точно такой же ситуации с кубом. Берите в руки осциллограф, анализатор, доку и решайте проблему)) Изменено 23 декабря, 2020 пользователем MrBearManul Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба На CMD есть внешняя подтяжка? 1 hour ago, MementoMori said: Кстати.... у меня нет резисторов на линиях, но есть внутренние подтяжки, а кабель короткий - 7 см. Так можно делать? Конденсатор по питанию в конце кабеля рядом с картой есть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 23 декабря, 2020 Опубликовано 23 декабря, 2020 (изменено) · Жалоба @MementoMori, приведите, пожалуйста, схему подключения вашей карты, раз мы уж взялись за неё. Изменено 23 декабря, 2020 пользователем MrBearManul Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба 11 minutes ago, MrBearManul said: @MementoMori, приведите, пожалуйста, схему подключения вашей карты, раз мы уж взялись за неё. Спасибо. Вечером доберусь до дома. Приведу схему, трассировку, даже кабель и плату разъёма сфоткаю. 42 minutes ago, _4afc_ said: На CMD есть внешняя подтяжка? Нет. А эта линия наиболее критична? У меня платка китайская для 3д принтера, на ней 4 линии, конденсатор, резисторов нет. Подключеная к контроллеру 3д принтера она работает. Ладно, остальная информация вечером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба 13 минут назад, MementoMori сказал: У меня платка китайская для 3д принтера, на ней 4 линии, конденсатор, резисторов нет. Ах... делайте всё по документации) Это наиболее выгодная стратегия: потратив пару часов, потом за пять минут заведёте) Извините, что повторяюсь неоднократно, но говорю опять же по собственному опыту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба 2 hours ago, MementoMori said: Нет. А эта линия наиболее критична? Она может работать в режиме открытого коллектора и тогда без резистора не работать. Начиная с некоторого времени некоторые карточки стали требовать этот резистор, хотя раньше и так заводились... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 23 декабря, 2020 Опубликовано 23 декабря, 2020 · Жалоба Друзья, спасибо за советы, но хочу напомнить - проблема именно с инициализацией. Чтение идёт нормально. Как мне кажется, если бы были проблемы с железом, то это отражалось бы на всех этапах работы. Если я не прав - поправьте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться