Перейти к содержанию
    

Микроконтроллер STM32 и uSD карта в SPI режиме

Сразу приношу извинения, что тема несколько косвенно связана с микроконтроллером, но для памяти отдельной ветки не нашел.

Проблема следующая.

STM32 и uSD карта коммуницируются по SPI. Проекту лет 5, последнее время юзаю SDIO порт, отказавшись от SPI, и очень рад такому переходу, так как:

оказалось, что карты SanDisk в большинстве не работают в этом режиме. А именно, команды

CMD0 (перевод в режим SPI)

CMD8

CMD58

отрабатывают штатно

а далее следует связка из CMD55/ACMD41

котоые собственно не включают карту, она продолжнает находиться в IDLE остоянии.

Повторы ничего не дают.

Проект мелкосерийный и карты попадлись не сандиск и о проблеме даже не знал никто. А тут вот открылся сюрприз. Карт уже куплено много, не хотелось бы их выкидывать, так что если у кого то имеется опыт работы с ними, прошу поделиться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и карты попадлись не сандиск и о проблеме даже не знал никто.

 

Хм. Интересно, можете про эти карточки поподробнее? Сколько всякого переделал на сд-картах в спи-режиме - все было корректно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм. Интересно, можете про эти карточки поподробнее? Сколько всякого переделал на сд-картах в спи-режиме - все было корректно.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SanDisk попался 8G, потом попробовал 2G, потом даже 128Mb

 

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

 

Помнится когда-то давно тоже что-то не работало - пришлось отлаживать покомандно,долго мучался, но получилось. Кстати,а на своем сайте у них нет каких-либо ограничений? Не смотрели?

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Ну и классика жанра: линии притянуты, в воздухе не болтаются? Питание в норме, ток не сильно зажимаете? Инициализация соответствует спецификации?

"Работает с ZZZ "- не аргумент, гляньте по исходникам, или лучше осциллографом/логанализатором реальную картинку. Чудес не бывает (почти не бывает :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

CMD58

отрабатывают штатно

а далее следует связка из CMD55/ACMD41

котоые собственно не включают карту, она продолжнает находиться в IDLE остоянии.

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

 

Есть еще различия в разных версиях стандартов. Например, по версии 1.0 при чтении регистров CSD и CID блок данных отстоит

от ответа как минимум на один байт (Ncr и Nac соответственно), а уже в версии 1.01 этот период может быть и нулевым (переименован в Ncx).

Подавляющее большинство карт работают по правилам более ранней версии, но есть и такие, что передают CID/CSD сразу после R1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Статус - 0x01 - это вроде IDLE.

OCR считывается успешно по битам на-память не скажу, то четко - от 2.7 до 3.6 и старший бит вроде 1.

ACMD даю аргумент 0x40000000 (точнее не я, а тот самый иаровский драйвер) и ответ - опять 0x01.

Когда драйвер по второму кругу хочет запустить инит, CMD8 возвращает уже статус 0x05 - +ILLIGAL OP CODE и инит прерывается. Далее опять CMD0 и 0x01...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...