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

Вопрос таков: все ли SPI у SD карт одинаковые ?

Столкнулся со следующей проблемой: пытался инициализировать SD карту (взял 2 разные, как оказалось ответы на команды инициализации CMD8, ACMD41 и CMD55 у них тоже разные).

 

одна (от NOKIA) говорит что много ошибок

а вот от Kingston на CMD55 (55+0x40) выдаёт 5 (Idle + Error Comand)

так же как и на ACMD41 и CMD1

 

(может я что не так делаю) ?

 

Алгоритм инициализации следующий:

 

1. отправляю 16 байт 0xFF

2. отправляю CMD0 получаю 1

3. отправляю CMD1 или CMD55 + ACMD41(0xC0+41) - получаю 5 на каждую команду

 

при отправке всех команд CS опускается и поднимается

после нескольких опытов карточка стала возвращать 0xe0 на все команды

 

Вопрос: может проще MMC использовать ?

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


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

Зайдите на сайт Atmel'а. Там в разделе 32-разрядных ARM'ов есть свежие библиотеки, в том числе и по работе с SD. У меня проблем с инициализацией карт не возникало.

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


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

1. отправляю 16 байт 0xFF

2. отправляю CMD0 получаю 1

3. отправляю CMD1 или CMD55 + ACMD41(0xC0+41) - получаю 5 на каждую команду

- Для SDHC перед ACMD41 обязательно должна идти CMD8

- Код ACMD41(0x40 + 41)

Между окончанием ответа на предыдущую команду и началом передачи следующей должен быть 1 пустой цикл (NRC).

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


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

Зайдите на сайт Atmel'а. Там в разделе 32-разрядных ARM'ов есть свежие библиотеки, в том числе и по работе с SD. У меня проблем с инициализацией карт не возникало.

 

работа с картой производилась по SPI ?

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


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

Я как раз тоже занялся изучением SD и мини-SD карт. Шастаю по интернету, никак не могу найти документ с полным описанием того как они работают (одна реклама). Поделитесь подобным документом, прочитав который, можно будет освоить работу с SD-картами. Заранее спасибо.

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


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

Шастаю по интернету, никак не могу найти документ....

Как только я вижу отмазки про искал в интернете и не нашел, я сразу понимаю, что они гнилые :(. Вот только поиск по этому форуму - тема поднималась несчетное число раз.

http://www.google.com/search?hl=en&cli...mp;oq=&aqi=

Учитесь пользоваться поисковиками - это много проще, нежели программировать...

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


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

Огромное вам спасибо.

Просто опытному разработчику сразу в голову приходит нужно решение, а когда начинаешь, то так легко запутаться :(

Можете ответить ещё на один, последний вопрос. В чем разница между SD-card и MicroSD-card? Везде пишут, что разница только в габаритах, но так ли это? Волнует вопрос поддерживает ли Micrо-SD режим SPI?? А то фраза "опционально" очень смущает.

Заранее спасибо за советы и помощь.

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

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


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

microSD Kingston-ы на 2 Гб поддерживают SPI. Проверено.

За остальных сказать не могу.

Но что точно можно сказать это то, что SD карты чувствительны к целостности сигналов и как и все микрухи не любят овершутингов и фазовых сдвигов клока.

Поэтому стоит тестировать всегда на минимальной скорости и с последовательными резаками.

 

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

Был случай когда японские карты не читались к картридерах оставшихся от тайваньских.

Есть другой USB кардридер, так тот тоже иные карты берет сразу как их вставишь, а для других у кардридера надо питание перетыкать.

Исследования показали что вроде как некоторые карты плохо реагируют на повторную команду CMD0.

 

Волнует вопрос поддерживает ли Micrо-SD режим SPI?? А то фраза "опционально" очень смущает.

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


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

Все-таки задам маленький последний вопросик. Если у микроконтроллера нет аппаратной поддержки интерфейса SD, то сложна ли программная её реализация?

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


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

Все-таки задам маленький последний вопросик. Если у микроконтроллера нет аппаратной поддержки интерфейса SD, то сложна ли программная её реализация?

Не то чтобы сложна, главное, крайне неэффективна.

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


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

Я понял, значит если нет аппаратного SD-интерфейса, тогда только SPI остается.

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


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

Есть вопрос относительно скорости записи/чтения MMC-card в SPI mode...ф. Apacer 1Гб, на карте 13 ног, название MMC mobile. Конкретно на эту карту параметров не нашел, но в документе от SanDisk "NAND MMC and SD-based Products" нашел следующее: для MultiMediaCard макс скорость обмена по SPI составляет 2,5MB/s, максимальная частота CLK=20MHz. Но на практике максимальное значение F clk=600 кГц (по осцил.), если увеличть скорость обмена появляется ошибка "Parameter error".Подскажите в чем может быть проблема?

SPI реализован на ADSP 21375, взял пример с Analog.com для ADSP 21369 + ММС и адаптировал на 75 проц. Все вроде работает, но очень медленно...

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


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

Подскажите в чем может быть проблема?

В Вашем железе и/или диаграмме.... 20MHz это вообще обыденная частота. А конкретную, Вы можете и у карточки спросить :) - читайте документацию.

P.S.

Надеюсь, Вы не пытаетесь сразу ДО инициализации работать на мегагерцах?

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


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

...читайте документацию.

P.S.

Надеюсь, Вы не пытаетесь сразу ДО инициализации работать на мегагерцах?

Прочитал MultiMediaCard™ User’s Manual Hitachi - нет там (или не заметил) такого регистра в котором хранилось бы заводское значение макс частоты для девайса.Единственное что нашел:"there are two communication protocol modes—MMC (MultiMediaCard™) mode and SPI mode. The maximum clock operating frequency in both modes is 20 MHz". Также сказано (ежу понятно), что после инициализации можно повысить Fclk до 20Мгц, так и делаю:

CMD0->CMD1->[responce=0 - увеличиваю Fclk с 400кГц->1Мгц]->mmc_set_block_length(512)->....ошибка. :(

Может какую команду еще пропустил? Если работать на той же скорости то все нормально.

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


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

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

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

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

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

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

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

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

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

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