kan35 7 21 февраля, 2014 Опубликовано 21 февраля, 2014 · Жалоба Сразу приношу извинения, что тема несколько косвенно связана с микроконтроллером, но для памяти отдельной ветки не нашел. Проблема следующая. STM32 и uSD карта коммуницируются по SPI. Проекту лет 5, последнее время юзаю SDIO порт, отказавшись от SPI, и очень рад такому переходу, так как: оказалось, что карты SanDisk в большинстве не работают в этом режиме. А именно, команды CMD0 (перевод в режим SPI) CMD8 CMD58 отрабатывают штатно а далее следует связка из CMD55/ACMD41 котоые собственно не включают карту, она продолжнает находиться в IDLE остоянии. Повторы ничего не дают. Проект мелкосерийный и карты попадлись не сандиск и о проблеме даже не знал никто. А тут вот открылся сюрприз. Карт уже куплено много, не хотелось бы их выкидывать, так что если у кого то имеется опыт работы с ними, прошу поделиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 21 февраля, 2014 Опубликовано 21 февраля, 2014 · Жалоба и карты попадлись не сандиск и о проблеме даже не знал никто. Хм. Интересно, можете про эти карточки поподробнее? Сколько всякого переделал на сд-картах в спи-режиме - все было корректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 21 февраля, 2014 Опубликовано 21 февраля, 2014 · Жалоба Хм. Интересно, можете про эти карточки поподробнее? Сколько всякого переделал на сд-картах в спи-режиме - все было корректно. Стояло много разных - никаких проблем, а тут SanDisk попался 8G, потом попробовал 2G, потом даже 128Mb откопал - и все так вот не работают. Все - uSD. Потом смотрю, что все они SanDisk, и тут просветлело. Ставлю Transcend - все работает отлично. Драйвер взял из пакета IAR, IAR-STM32-SK: sd_ll_spi2.c и т д - без изменений (правда и изменения не помогают - хочу подсказки). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 22 февраля, 2014 Опубликовано 22 февраля, 2014 (изменено) · Жалоба SanDisk попался 8G, потом попробовал 2G, потом даже 128Mb Да, интересно, надо будет тоже где-нить откопать и проверить свои творения Помнится когда-то давно тоже что-то не работало - пришлось отлаживать покомандно,долго мучался, но получилось. Кстати,а на своем сайте у них нет каких-либо ограничений? Не смотрели? Изменено 22 февраля, 2014 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 22 февраля, 2014 Опубликовано 22 февраля, 2014 · Жалоба Вероятно, проблема именнов в микроSD картах. Так как знаю про массовое использование обычных SD карт сандисков (конкретно- 2-гиговой SD Sandisk копплектуют один прибор, а там SPI) - проблем не возникало. Еще возможно, что просто какой-то параметр на грани допустимого или не соблюден, а в разных фирмах по разному оно на это реагирует. Ну, например, инициализируете на 2 мегагерцах тактовой. Ну и классика жанра: линии притянуты, в воздухе не болтаются? Питание в норме, ток не сильно зажимаете? Инициализация соответствует спецификации? "Работает с ZZZ "- не аргумент, гляньте по исходникам, или лучше осциллографом/логанализатором реальную картинку. Чудес не бывает (почти не бывает :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 22 февраля, 2014 Опубликовано 22 февраля, 2014 · Жалоба ... CMD58 отрабатывают штатно а далее следует связка из CMD55/ACMD41 котоые собственно не включают карту, она продолжнает находиться в IDLE остоянии. Именно idle, или inactive? И как соотносится прочитанное содержимое OCR и аргумента ACMD41 (собственно OP_COND)? Есть еще различия в разных версиях стандартов. Например, по версии 1.0 при чтении регистров CSD и CID блок данных отстоит от ответа как минимум на один байт (Ncr и Nac соответственно), а уже в версии 1.01 этот период может быть и нулевым (переименован в Ncx). Подавляющее большинство карт работают по правилам более ранней версии, но есть и такие, что передают CID/CSD сразу после R1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 23 февраля, 2014 Опубликовано 23 февраля, 2014 · Жалоба Статус - 0x01 - это вроде IDLE. OCR считывается успешно по битам на-память не скажу, то четко - от 2.7 до 3.6 и старший бит вроде 1. ACMD даю аргумент 0x40000000 (точнее не я, а тот самый иаровский драйвер) и ответ - опять 0x01. Когда драйвер по второму кругу хочет запустить инит, CMD8 возвращает уже статус 0x05 - +ILLIGAL OP CODE и инит прерывается. Далее опять CMD0 и 0x01... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться