Jump to content

    
Sign in to follow this  
AleksBa

Инициализация SD

Recommended Posts

Тестировалось со всеми картами что удалось купить в магазинах, 1-64Гб, несколько десятков шт, и проблем не было.

Спасибо, попробую. Для какого процессора код?

 

Указанный мной тип/производитель был?

 

---------------

 

Ещё интересует вопрос. С режимом SPI = 3 (0-активный SCK) SD-карты нормально дружат?

Edited by GetSmart

Share this post


Link to post
Share on other sites
Не помню.

Не помогло.

 

Скорость SPI в них корректная (50 МГц), но размер карты видимо ограничивается 1 гигом.

Слегка ошибся. 25 МГц.

 

И произошло чудо. Вторая карточка уже другого производителя начала себя так же вести, хотя до этого идеально работала.

Share this post


Link to post
Share on other sites

Интересно, SD от microSD вообще ни чем не отличается ? Если все microSD работают по SPI , то и SD будут ? Не будет такого что у какой-нибудь SD не окажется SPI интерфейса ?

Share this post


Link to post
Share on other sites
Не будет такого что у какой-нибудь SD не окажется SPI интерфейса ?

Насколько мне известно, в стандарте нигде не сказано, что карта имеет права не поддерживать SPI.

Share this post


Link to post
Share on other sites
Интересно, SD от microSD вообще ни чем не отличается ? Если все microSD работают по SPI , то и SD будут ? Не будет такого что у какой-нибудь SD не окажется SPI интерфейса ?

 

Там есть SPI, но по сбросу она находится в режиме MMC и чтобы перевести ее в режим SPI для начала все равно придется пройти процедуру инициализации.

Edited by octobus

Share this post


Link to post
Share on other sites

2MiklPolikov, у Вас в коде массив определен как unsigned char cmd_ansver[6]; а записываете в него 17 элементов:

for(j=1;j<=16;j++)

ansver[j]=SD_SPI_TRANSMIT(0xFF);

Мина замедленного действия.

 

Share this post


Link to post
Share on other sites

Всем добрый день! Начали работать с SD картой(microSDHC), хотим выполнив команду ACMD13 получить 512 бит статуса карты на шине DAT. ДЛя этого мы выполнzем такую последовательность команд: CMD9(приходит ответ, что все ок), CMD7(приходит ответ, что все ок), CMD13(приходит ответ, что все ок), CMD55(приходит ответ, что все ок),CMD6(приходит ответ, что все ок), CMD55(приходит ответ, что все ок), CMD13(приходит ответ, что все ок), но данные на шину DAT не выдает. При всем при этом в response карта отвечает, что находится в режиме tran, как того и требует команда ACMD13. Не подскажите, где мы могли ошибиться в нашем алгоритме или чего не учли при инициализации?

Share this post


Link to post
Share on other sites

Всем доброго дня! Вопрос по SD Host: Пытаемся подать команду CMD23 : последовательность байт такая 1-й байт -8'h57, 2-й байт -8'h00, 3-й байт -8'h00, 4-й байт -8'h00, 5-й байт -8'h03, 6-й байт -8'h19(CRC вместе с стоп битом). Карточка на это ничего не отвечает, в чем может быть причина ? Другие команды проходят на ура.

Share this post


Link to post
Share on other sites
Всем доброго дня! Вопрос по SD Host: Пытаемся подать команду CMD23 : последовательность байт такая 1-й байт -8'h57, 2-й байт -8'h00, 3-й байт -8'h00, 4-й байт -8'h00, 5-й байт -8'h03, 6-й байт -8'h19(CRC вместе с стоп битом). Карточка на это ничего не отвечает, в чем может быть причина ? Другие команды проходят на ура.

 

Ну во-первых непонятно, по какому интерфейсу выработаете, SD или SPI , и включена ли в последнем случае CRC .

Во-вторых из текста очень трудно воспринимать, напишите хотя бы в столбик, или без русских букв между кодами команды....

Share this post


Link to post
Share on other sites
Ну во-первых непонятно, по какому интерфейсу выработаете, SD или SPI , и включена ли в последнем случае CRC .

Во-вторых из текста очень трудно воспринимать, напишите хотя бы в столбик, или без русских букв между кодами команды....

Сорри, за неполную информацию. Работаем в режиме SD, инициализация была проведена и были произведены одиночные обмены и блочные обмены с использованием команды CMD12. Пробуем команду CMD23 последовательность следующая в HEX:

8'h57

8'h00

8'h00

8'h00

8'h03

8'h19

 

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

Share this post


Link to post
Share on other sites

Всем спасибо за помощь, извините за потраченное время, оказалось все гораздо тривиальнее, из 5 карточек, которые пробовали, только 4 поддерживают команду CMD23.

Share this post


Link to post
Share on other sites
И произошло чудо. Вторая карточка уже другого производителя начала себя так же вести, хотя до этого идеально работала.

Проблема прояснилась. Переходник глючный. Карточки обе питалась от паразитного питания и не могли полноценно проинициализироваться. Сейчас обе нормально работают по SPI.

Share this post


Link to post
Share on other sites

Добрый день!

Разобрался с инициализацией SD карты по SPI. Попробовал писать, читать данные. Теперь компьютер не вилит карту ни через один кард ридер. Видимо я сбил в ней какие то сектора или что то там еще. При этом карта рабочая, т.к. на микроконтроллере проходит и инициализация и чтение/запись.

Подскажите, можно ли как то вернуть карту к такому состоянию, чтобы ее увидел ПК?

 

-----------------

 

Как только задал вопрос, сам сразу и разобрался :)

Скачал с сайта www.sdcard.org утилиту SDformatter. Она увидела карту и отформатировала ее.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this