Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Микроконтроллер STM32 и uSD карта в SPI режиме
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
kan35
Сразу приношу извинения, что тема несколько косвенно связана с микроконтроллером, но для памяти отдельной ветки не нашел.
Проблема следующая.
STM32 и uSD карта коммуницируются по SPI. Проекту лет 5, последнее время юзаю SDIO порт, отказавшись от SPI, и очень рад такому переходу, так как:
оказалось, что карты SanDisk в большинстве не работают в этом режиме. А именно, команды
CMD0 (перевод в режим SPI)
CMD8
CMD58
отрабатывают штатно
а далее следует связка из CMD55/ACMD41
котоые собственно не включают карту, она продолжнает находиться в IDLE остоянии.
Повторы ничего не дают.
Проект мелкосерийный и карты попадлись не сандиск и о проблеме даже не знал никто. А тут вот открылся сюрприз. Карт уже куплено много, не хотелось бы их выкидывать, так что если у кого то имеется опыт работы с ними, прошу поделиться.
mantech
Цитата(kan35 @ Feb 21 2014, 15:18) *
и карты попадлись не сандиск и о проблеме даже не знал никто.


Хм. Интересно, можете про эти карточки поподробнее? Сколько всякого переделал на сд-картах в спи-режиме - все было корректно.
kan35
Цитата(mantech @ Feb 21 2014, 16:20) *
Хм. Интересно, можете про эти карточки поподробнее? Сколько всякого переделал на сд-картах в спи-режиме - все было корректно.

Стояло много разных - никаких проблем, а тут SanDisk попался 8G, потом попробовал 2G, потом даже 128Mb откопал - и все так вот не работают. Все - uSD. Потом смотрю, что все они SanDisk, и тут просветлело. Ставлю Transcend - все работает отлично. Драйвер взял из пакета IAR, IAR-STM32-SK: sd_ll_spi2.c и т д - без изменений (правда и изменения не помогают - хочу подсказки).
mantech
Цитата(kan35 @ Feb 21 2014, 16:28) *
SanDisk попался 8G, потом попробовал 2G, потом даже 128Mb


Да, интересно, надо будет тоже где-нить откопать и проверить свои творения biggrin.gif

Помнится когда-то давно тоже что-то не работало - пришлось отлаживать покомандно,долго мучался, но получилось. Кстати,а на своем сайте у них нет каких-либо ограничений? Не смотрели?
Ruslan1
Вероятно, проблема именнов в микроSD картах. Так как знаю про массовое использование обычных SD карт сандисков (конкретно- 2-гиговой SD Sandisk копплектуют один прибор, а там SPI) - проблем не возникало.

Еще возможно, что просто какой-то параметр на грани допустимого или не соблюден, а в разных фирмах по разному оно на это реагирует. Ну, например, инициализируете на 2 мегагерцах тактовой.

Ну и классика жанра: линии притянуты, в воздухе не болтаются? Питание в норме, ток не сильно зажимаете? Инициализация соответствует спецификации?
"Работает с ZZZ "- не аргумент, гляньте по исходникам, или лучше осциллографом/логанализатором реальную картинку. Чудес не бывает (почти не бывает sm.gif
aaarrr
Цитата(kan35 @ Feb 21 2014, 15:18) *
...
CMD58
отрабатывают штатно
а далее следует связка из CMD55/ACMD41
котоые собственно не включают карту, она продолжнает находиться в IDLE остоянии.

Именно idle, или inactive? И как соотносится прочитанное содержимое OCR и аргумента ACMD41 (собственно OP_COND)?

Есть еще различия в разных версиях стандартов. Например, по версии 1.0 при чтении регистров CSD и CID блок данных отстоит
от ответа как минимум на один байт (Ncr и Nac соответственно), а уже в версии 1.01 этот период может быть и нулевым (переименован в Ncx).
Подавляющее большинство карт работают по правилам более ранней версии, но есть и такие, что передают CID/CSD сразу после R1.
kan35
Статус - 0x01 - это вроде IDLE.
OCR считывается успешно по битам на-память не скажу, то четко - от 2.7 до 3.6 и старший бит вроде 1.
ACMD даю аргумент 0x40000000 (точнее не я, а тот самый иаровский драйвер) и ответ - опять 0x01.
Когда драйвер по второму кругу хочет запустить инит, CMD8 возвращает уже статус 0x05 - +ILLIGAL OP CODE и инит прерывается. Далее опять CMD0 и 0x01...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.