Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу прочесть ММС
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
b-volkov
Карта ММС+ Transcend 1гиг и LPC2148. Инициализация проходит, содержимое CSD и CID читается, а вот прочитать блок данных не могу. На команду чтения блока (17) приходит нормальный ответ (0), а данные так и не идут, т.е. постоянно принимается 0хFF сколько не читай. Пробовал читать статус (ком 13), ошибок нет (r2=0). Пробовал задавать разную длину блока и читать по разным адресам – бесполезно. Писать пока не пробовал.
Может быть, у этих карт есть какие-то хитрости с обменом? К сожалению, маленькой карты под рукой нет.
etoja
Карточки MMC+ Transcend 1Гбайт и 2Гбайта лучшие по надёжности и пожалуй единственные, работающие при температуре от -25С. Порядок обмена с ними не отличается от обмена с карточками маленького объёма, например MMC 64Мбайта. Проверено на практике с процессорами ADSP2189 и LPC2138.
KAlex
А точно инициализация проходит до конца? Ничего не упущено?
CMD7 проходит?.
zltigo
Цитата(etoja @ Jan 24 2008, 07:43) *
Карточки MMC+ Transcend 1Гбайт и 2Гбайта лучшие...

Насколько я сталкивался с Transcend продукцией - это имя просто наклейка на произвольном OEM изделии. Тем не менее с ними, как и с другими карточками никаких особых проблем не наблюдалось.
Нюансы вообще были характерны для "старинных" карточек в диапазоне 16-256Mb. Со свежими, как-то все более устаканилось.
Sawik
Маялся недавно с такой же проблемой. Вроде все хорошо а в ответ только $FF. Оказалось все просто:
1 - Перестал пользоваться командой 17 до лучших времен, начал использовать команду 18
2 - Послал команду 18 с адресом $00000000, читаю карту пока не придет в ответе $FE.
3 - Только после этого ответа карта начинает передавать данные
4 - Важно! Адрес $00000000 - это физический 0, как правило здесь начинаются скрытые сектора.
5 - Чтобы найти логический 0 - с которого и начинают располагаться Boot Sector, FAT1-FAT...n, Root Directory и т.д. Я считываю по одному байту с каждого сектора, пока не получу $EB. Это и есть Boot Sector. Далее используешь это смещение для вычисления всех адресов


Не уточнил - это все при условии нормального сброса и инициализации, но я думаю это и так понятно
b-volkov
Всем большое спасибо!
Причина оказалась куда банальнее - флешка сдохла, с другой все заработало. Но после того, как заработало возникла еще куча вопросов:

1. С какой максимальной частотой клока вам, уважаемые, удвалаось работать? (понятно, речь о SPI) Мене выше 5 МГц не удается. На 5 работает стабильно, а на 6 даже инициализируется через раз. Осциллом смотрел - вроде все нормально, фронты хорошие.

2. Какая должна получаться скорость записи? У меня сектор пишется порядка 2.5 мс, т.е. 200кв/с. Не маловато будет?

3.Если сектора предварительно стереть, то быстрее будет писАться? Или ММС всегда стирает сектор перед записью?

4.Можно ли в процессе обмена с картой делать между байтами паузы произвольной длины?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.