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

Не могу прочесть ММС

Карта ММС+ Transcend 1гиг и LPC2148. Инициализация проходит, содержимое CSD и CID читается, а вот прочитать блок данных не могу. На команду чтения блока (17) приходит нормальный ответ (0), а данные так и не идут, т.е. постоянно принимается 0хFF сколько не читай. Пробовал читать статус (ком 13), ошибок нет (r2=0). Пробовал задавать разную длину блока и читать по разным адресам – бесполезно. Писать пока не пробовал.

Может быть, у этих карт есть какие-то хитрости с обменом? К сожалению, маленькой карты под рукой нет.

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


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

Карточки MMC+ Transcend 1Гбайт и 2Гбайта лучшие по надёжности и пожалуй единственные, работающие при температуре от -25С. Порядок обмена с ними не отличается от обмена с карточками маленького объёма, например MMC 64Мбайта. Проверено на практике с процессорами ADSP2189 и LPC2138.

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


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

Карточки MMC+ Transcend 1Гбайт и 2Гбайта лучшие...

Насколько я сталкивался с Transcend продукцией - это имя просто наклейка на произвольном OEM изделии. Тем не менее с ними, как и с другими карточками никаких особых проблем не наблюдалось.

Нюансы вообще были характерны для "старинных" карточек в диапазоне 16-256Mb. Со свежими, как-то все более устаканилось.

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


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

Маялся недавно с такой же проблемой. Вроде все хорошо а в ответ только $FF. Оказалось все просто:

1 - Перестал пользоваться командой 17 до лучших времен, начал использовать команду 18

2 - Послал команду 18 с адресом $00000000, читаю карту пока не придет в ответе $FE.

3 - Только после этого ответа карта начинает передавать данные

4 - Важно! Адрес $00000000 - это физический 0, как правило здесь начинаются скрытые сектора.

5 - Чтобы найти логический 0 - с которого и начинают располагаться Boot Sector, FAT1-FAT...n, Root Directory и т.д. Я считываю по одному байту с каждого сектора, пока не получу $EB. Это и есть Boot Sector. Далее используешь это смещение для вычисления всех адресов

 

 

Не уточнил - это все при условии нормального сброса и инициализации, но я думаю это и так понятно

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


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

Всем большое спасибо!

Причина оказалась куда банальнее - флешка сдохла, с другой все заработало. Но после того, как заработало возникла еще куча вопросов:

 

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

 

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

 

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

 

4.Можно ли в процессе обмена с картой делать между байтами паузы произвольной длины?

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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