реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Инициализация SD, SDHC
AleksBa
сообщение Dec 4 2008, 10:01
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 7-03-07
Пользователь №: 25 952



Вот пробую инициализировать карту(microD) в SPI-режиме:
посылаю CMD0 - норм.(ответ 0x01)
посылаю CMD8 - норм.(ответ 0x01 0 0 0x01 0xaa)
т.е. карта версии 2.0 или выше. (?) Дальше посылаю ACMD41 - 0x69 0x00 0x40 0x00 0x00 0xff. (?) Получаю ILLEGAL COMMAND - 0x05 (ответ). Попробывал также вместо последней команды CMD5 (0x45 0x00 0xff 0x80 0x00 0xff) - аналогичный ответ. И лишь на команду CMD55(соотв. после CMD0 и CMD8) получаю ответ 0x01. Вопрос - что я делаю не так и какая все-таки верная последовательность инициализации microSD в SPI режиме. Спасибо.
Go to the top of the page
 
+Quote Post
AleksBa
сообщение Dec 4 2008, 11:07
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 7-03-07
Пользователь №: 25 952



Цитата(AleksBa @ Dec 4 2008, 14:01) *
Вот пробую инициализировать карту(microD) в SPI-режиме:
посылаю CMD0 - норм.(ответ 0x01)
посылаю CMD8 - норм.(ответ 0x01 0 0 0x01 0xaa)
т.е. карта версии 2.0 или выше. (?) Дальше посылаю ACMD41 - 0x69 0x00 0x40 0x00 0x00 0xff. (?) Получаю ILLEGAL COMMAND - 0x05 (ответ). Попробывал также вместо последней команды CMD5 (0x45 0x00 0xff 0x80 0x00 0xff) - аналогичный ответ. И лишь на команду CMD55(соотв. после CMD0 и CMD8) получаю ответ 0x01. Вопрос - что я делаю не так и какая все-таки верная последовательность инициализации microSD в SPI режиме. Спасибо.

Сейчас немного прояснилось( smile.gif ). ACMD41 ведь надо предшествовать CMD55 оказывается. Теперь вот так все идет:
CMD0;
CMD8;
в цикле с проверкой на READY ( CMD55 + ACMD41);
А далее пока не знаю. Так верно? И дальше как? Еще ошибся - у меня просто SD карта ver2.0 (не SHDC) - microSD 512MB. Подскажите как верно инициализировать(в SPI). Спасибо.
Go to the top of the page
 
+Quote Post
Cyber_RAT
сообщение Jan 14 2009, 09:53
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064



Разобрались с инициализацией?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 14 2009, 16:07
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Atmel в своих последних примерах делает так:

Код
//------------------------------------------------------------------------------
/// Run the SDcard SD Mode initialization sequence. This function runs the
/// initialisation procedure and the identification process, then it sets the
/// SD card in transfer state to set the block length and the bus width.
/// Returns 0 if successful; otherwise returns an SD_ERROR code.
/// \param pSd  Pointer to a SD card driver instance.
/// \param pSdDriver  Pointer to SD driver already initialized
//------------------------------------------------------------------------------
unsigned char SD_MCI_Init(SdCard *pSd, SdDriver *pSdDriver)
{
    unsigned int sdCid[4];
    unsigned char isCCSet;
    unsigned char error;
    unsigned int status;
    unsigned char cmd8Retries = 2;
    unsigned char cmd1Retries = 100;

    // The command GO_IDLE_STATE (CMD0) is the software reset command and sets card into Idle State
    // regardless of the current card state.
    error = Cmd0(pSd);
    if (error) {
        TRACE_ERROR("Error during initialization (%d)\n\r", error);
        return error;
    }

    // CMD8 is newly added in the Physical Layer Specification Version 2.00 to support multiple voltage
    // ranges and used to check whether the card supports supplied voltage. The version 2.00 host shall
    // issue CMD8 and verify voltage before card initialization.
    // The host that does not support CMD8 shall supply high voltage range...
    TRACE_DEBUG("Cmd8()\n\r");
    do {
        error = Cmd8(pSd, 1);
    }
    while ((error == SD_ERROR_NORESPONSE) && (cmd8Retries-- > 0));

    if (error == SD_ERROR_NORESPONSE) {
        // No response : Ver2.00 or later SD Memory Card(voltage mismatch)
        // or Ver1.X SD Memory Card
        // or not SD Memory Card

        TRACE_DEBUG("No response to Cmd8\n\r");

        // ACMD41 is a synchronization command used to negotiate the operation voltage range and to poll the
        // cards until they are out of their power-up sequence.
        error = Acmd41(pSd, 0, &isCCSet);
        if (error) {
            // Acmd41 failed : MMC card or unknown card
            error = Cmd0(pSd);
            if (error) {
                TRACE_ERROR("Error during initialization (%d)\n\r", error);
                return error;
            }
            do {
                error = Cmd1(pSd);
            }
            while ((error) && (cmd1Retries-- > 0));
            if (error) {
                TRACE_ERROR("Error during initialization (%d)\n\r", error);
                return error;
            }
            else {
                TRACE_DEBUG("CARD MMC\n\r");
                pSd->cardType = CARD_MMC;
            }
        }
        else {
            if(isCCSet == 0) {
                TRACE_DEBUG("CARD SD\n\r");
                pSd->cardType = CARD_SD;
            }
        }
    }
    else if (!error) {

        // Valid response : Ver2.00 or later SD Memory Card
        error = Acmd41(pSd, 1, &isCCSet);
        if (error) {
            TRACE_ERROR("Error during initialization (%d)\n\r", error);
            return error;
        }
        if (isCCSet) {
            TRACE_DEBUG("CARD SDHC\n\r");
            pSd->cardType = CARD_SDHC;
        }
        else {
            TRACE_DEBUG("CARD SD\n\r");
            pSd->cardType = CARD_SD;
        }
    }
    else {
        TRACE_ERROR("Error during initialization (%d)\n\r", error);
        return error;
    }

    // The host then issues the command ALL_SEND_CID (CMD2) to the card to get its unique card identification (CID) number.
    // Card that is unidentified (i.e. which is in Ready State) sends its CID number as the response (on the CMD line).
    error = Cmd2(pSd, sdCid);
    if (error) {
        TRACE_ERROR("Error during initialization (%d)\n\r", error);
        return error;
    }

    // Thereafter, the host issues CMD3 (SEND_RELATIVE_ADDR) asks the
    // card to publish a new relative card address (RCA), which is shorter than CID and which is used to
    // address the card in the future data transfer mode. Once the RCA is received the card state changes to
    // the Stand-by State. At this point, if the host wants to assign another RCA number, it can ask the card to
    // publish a new number by sending another CMD3 command to the card. The last published RCA is the
    // actual RCA number of the card.
    error = Cmd3(pSd);
    if (error) {
        TRACE_ERROR("Error during initialization (%d)\n\r", error);
        return error;
    }

    // The host issues SEND_CSD (CMD9) to obtain the Card Specific Data (CSD register),
    // e.g. block length, card storage capacity, etc...
    error = Cmd9(pSd);
    if (error) {
        TRACE_ERROR("Error during initialization (%d)\n\r", error);
        return error;
    }

    // At this stage the Initialization and identification process is achieved
    // The SD card is supposed to be in Stand-by State
    do {
        error = Cmd13(pSd, &status);
        if (error) {
            TRACE_ERROR("Error during initialization (%d)\n\r", error);
            return error;
        }
    }
    while ((status & STATUS_READY_FOR_DATA) == 0);

    // If the 4 bit bus transfer is supported switch to this mode
    // Select the current SD, goto transfer state
    error = Cmd7(pSd, pSd->cardAddress);
    if (error) {
        TRACE_ERROR("Error during initialization (%d)\n\r", error);
        return error;
    }

    if (pSd->cardType != CARD_MMC) {
        // Switch to 4 bits bus width (All SD Card shall support 1-bit, 4 bitswidth
        error = Acmd6(pSd, 4);
        if (error) {
            TRACE_ERROR("Error during initialization (%d)\n\r", error);
            return error;
        }
    }
    else {
        MCI_SetBusWidth((Mci *)pSdDriver, MCI_SDCBUS_1BIT);
    }
    return 0;
}
Go to the top of the page
 
+Quote Post
Андрей (Питер)
сообщение Feb 7 2009, 17:48
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 10-03-08
Пользователь №: 35 776



Может не очень в тему, но не подскажите где можно найти pdf-ник описание "Physical Layer Specification Version 2.00"?
Go to the top of the page
 
+Quote Post
Alex11
сообщение Feb 7 2009, 17:57
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Есть только simplified версии 2, взять можно на сайте SD. Или могу прислать. Пишите в личку.
Go to the top of the page
 
+Quote Post
Андрей (Питер)
сообщение Feb 8 2009, 16:43
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 10-03-08
Пользователь №: 35 776



Цитата(Alex11 @ Feb 7 2009, 20:57) *
Есть только simplified версии 2, взять можно на сайте SD. Или могу прислать. Пишите в личку.


simplified я скачал, спасибо.
Go to the top of the page
 
+Quote Post
ALEXANDER082
сообщение Feb 18 2009, 19:26
Сообщение #8





Группа: Новичок
Сообщений: 6
Регистрация: 18-02-09
Пользователь №: 45 058



Цитата(AleksBa @ Dec 4 2008, 13:01) *
Вот пробую инициализировать карту(microD) в SPI-режиме:
посылаю CMD0 - норм.(ответ 0x01)
посылаю CMD8 - норм.(ответ 0x01 0 0 0x01 0xaa)
т.е. карта версии 2.0 или выше. (?) Дальше посылаю ACMD41 - 0x69 0x00 0x40 0x00 0x00 0xff. (?) Получаю ILLEGAL COMMAND - 0x05 (ответ). Попробывал также вместо последней команды CMD5 (0x45 0x00 0xff 0x80 0x00 0xff) - аналогичный ответ. И лишь на команду CMD55(соотв. после CMD0 и CMD8) получаю ответ 0x01. Вопрос - что я делаю не так и какая все-таки верная последовательность инициализации microSD в SPI режиме. Спасибо.


При правильном CRC сработает
Go to the top of the page
 
+Quote Post
Angelo
сообщение Jun 29 2009, 17:19
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 1-12-07
Пользователь №: 32 871



Цитата
sergeeff:
Atmel в своих последних примерах делает так:


А можно по подробнее, что именно это за исходники?, хотелось бы их посмотреть, а то всё старые нахожу...
Go to the top of the page
 
+Quote Post
Атмег
сообщение Oct 6 2010, 14:52
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 17-05-07
Пользователь №: 27 787



Цитата(sergeeff @ Jan 14 2009, 20:07) *
Atmel в своих последних примерах делает так:

Код
//------------------------------------------------------------------------------
/// Run the SDcard SD Mode initialization sequence. This function runs the
.....
}


Работает как то странно. При первой инициализации все норм, ответ на Cmd8 приходит. При попытке инициализировать повторно (например, после сброса цпу) на Cmd8 карта не отвечает! Помогает только передернуть питание карты
Go to the top of the page
 
+Quote Post
roman_av
сообщение Oct 17 2012, 20:31
Сообщение #11





Группа: Участник
Сообщений: 11
Регистрация: 31-07-09
Пользователь №: 51 676



Та же проблема. Первый раз инициализация проходит нормально, повторная инициализация сразу, или после сброса процессора не проходит. Помогает только снятие питания с карточки, например вытаскивание ее из разъема. Как это рещить?
Go to the top of the page
 
+Quote Post
vladimir_orl
сообщение Oct 18 2012, 12:45
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591



А у меня SDH карточка при посылке sendOpCond подвисает. Даже не знаю, что делать. С SD всё нормально.


// Идентификация карт MMC и SD
Uint16 MMCSD_cardIdentification(MMCSD_ConfigData* config, Uint32* rca, MMCSD_cardStatusReg* cardStatus, Uint32 opTimeout){
Uint16 status;
Uint16 cardReg[8];
Uint8 mmc = 1;

if (status = MMCSD_goIdleState()) // Все карты в сброс
return status;


RESEND_CMD41:
EVMDM368_waitusec(100000); // Для медленных карт

status = MMCSD_appCmd(0); /* Send CMD55 with RCA = 0 */

if (status)
status = MMC_sendOpCond(MMCSD_VDD_32_34, opTimeout);
else {
// Experimenting with the whole supported voltage range
if (SD_sendOpCond(0x00ff8000, opTimeout))
goto RESEND_CMD41;
mmc = 0;
}
........
}

А у меня SDH карточка при посылке sendOpCond подвисает. Даже не знаю, что делать. С SD всё нормально.


// Идентификация карт MMC и SD
Uint16 MMCSD_cardIdentification(MMCSD_ConfigData* config, Uint32* rca, MMCSD_cardStatusReg* cardStatus, Uint32 opTimeout){
Uint16 status;
Uint16 cardReg[8];
Uint8 mmc = 1;

if (status = MMCSD_goIdleState()) // Все карты в сброс
return status;


RESEND_CMD41:
EVMDM368_waitusec(100000); // Для медленных карт

status = MMCSD_appCmd(0); /* Send CMD55 with RCA = 0 */

if (status)
status = MMC_sendOpCond(MMCSD_VDD_32_34, opTimeout);
else {
// Experimenting with the whole supported voltage range
if (SD_sendOpCond(0x00ff8000, opTimeout))
goto RESEND_CMD41;
mmc = 0;
}
........
}
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Nov 26 2013, 16:58
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



microSD карта 16 Гб на CMD8 c аргументом 0 и аргументом 1АА отвечает 7F . Как такое возможно ? Ведь карта такого объёма в любом случае должна давать правильный ответ на CMD8, судя вот по этой диаграмме.

Разобрался сам. Дело было в том что я не дожидался пока начнутся ответы FF на посланный FF перед каждой новой командой.
Возможно кому-то поможет, вот тут мой функция инициализации disk_initialize , которая проверена на 20 разных картах от 1 до 32Гб
Весь файл вместе - это аппаратно-зависимая часть для файловой системы FATFS
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  sd_hard.rar ( 5.11 килобайт ) Кол-во скачиваний: 110
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 5 2014, 16:57
Сообщение #14


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Подскажите, плиз, знающие люди, куда копать с инициализацией очень капризной SD-карты QUMO 8GB uSDHC class 10. Карта 100% рабочая и идеально работает в кардридерах.

Используя библиотеку Чена spi_sd_lpc17xx.c (MMC/SDSC/SDHC (in SPI mode) ver 0.8.0) наткнулся на карточку, которая зависала в Idle. В коде Чена, в котором уже после корректного ответа CMD8 отсылалась команда ACMD41 с аргументом HCS бита и проверкой выхода из Idle всю секунду карта отвечает 0x01 и в результате ПО карту не видит. После некоторых изменений кода удалось вывести карту из Idle, но всё-равно она не хочет работать и размер карты выдаёт неверный. Изменения такие - вместо непрерывного "долбления" в карту в течение секунды команды ACMD41 время уменьшено до 0.5 сек, потом отключение CS на вторые полсекунды, потом ACMD41 выдаёт 0. Потом CMD58 с чтением OCR. OCR при этом = 0x80 0xff 0x80 0x00, то есть в первом байте вместо ожидаемого 0xC0 стоит 0x80, что обозначает завершение инициализации (= готовность), но при этом отсутствует битг CCS. Далее чтение CSD (CMD9) выдаёт такие данные 00 7f 00 32 1f 59 83 ff f6 db bf bf 96 40 00 c9, CRC= 87 a4. Скорость SPI в них корректная (50 МГц), но размер карты видимо ограничивается 1 гигом. После такой инициализации чтение карты всё-равно не работает. Возможно, карте требуется какая-то дополнительная/нестандартная инициализация или проблема в SPI mode.

Стартовый обмен с картой происходит на 400 КГц. После секунды инициализации, на чтении CSD он повышен до 4 МГц. Выше пока не использовал. Изначально увеличивал время стартового "долбления" ACMD41 до 4 секунд. Никакого эффекта - ответ стабильно 0x01.

Сообщение отредактировал GetSmart - Feb 5 2014, 18:04


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 5 2014, 17:17
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(GetSmart @ Feb 5 2014, 20:57) *
Подскажите, плиз, знающие люди, куда копать с инициализацией очень капризной SD-карты QUMO 8GB uSDHC class 10. Карта 100% рабочая и идеально работает в кардридерах.


"Копать" некуда, только экспериментировать, основываясь на внимательном чтении документации.
По-моему вот эти документы основные, уже не помню, архив во вложении.
1) Part_1_Physical_Layer_Simplified_Specification_Ver3.01_Final_100518-1.pdf
2) productmanualsdcardv2.2final.pdf
3) spitiming-1.pdf
+ попробуйте запустить не изменяя мою функцию инициализации и записи/чтения. С последними доработками, во вложении. В сообщения выше старая версия, может работать плохо. Тестировалось со всеми картами что удалось купить в магазинах, 1-64Гб, несколько десятков шт, и проблем не было.
Прикрепленные файлы
Прикрепленный файл  sd_hard_2014_02_05.rar ( 6.59 килобайт ) Кол-во скачиваний: 109
Прикрепленный файл  Doc.rar ( 2.89 мегабайт ) Кол-во скачиваний: 112
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 5 2014, 18:08
Сообщение #16


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(MiklPolikov @ Feb 5 2014, 23:17) *
Тестировалось со всеми картами что удалось купить в магазинах, 1-64Гб, несколько десятков шт, и проблем не было.

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

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

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

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

Сообщение отредактировал GetSmart - Feb 5 2014, 18:27


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 5 2014, 18:26
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(GetSmart @ Feb 5 2014, 22:08) *
Спасибо, попробую. Указанный мной тип+производитель был?

Не помню.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 14 2014, 16:08
Сообщение #18


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(MiklPolikov @ Feb 6 2014, 00:26) *
Не помню.

Не помогло.

Цитата(GetSmart @ Feb 5 2014, 22:57) *
Скорость SPI в них корректная (50 МГц), но размер карты видимо ограничивается 1 гигом.

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

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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 1 2014, 22:18
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



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


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 1 2014, 22:29
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MiklPolikov @ Mar 2 2014, 02:18) *
Не будет такого что у какой-нибудь SD не окажется SPI интерфейса ?

Насколько мне известно, в стандарте нигде не сказано, что карта имеет права не поддерживать SPI.
Go to the top of the page
 
+Quote Post
octobus
сообщение Mar 2 2014, 02:56
Сообщение #21


Частый гость
**

Группа: Guests
Сообщений: 122
Регистрация: 9-10-13
Из: Дубна
Пользователь №: 78 671



Цитата(MiklPolikov @ Mar 2 2014, 02:18) *
Интересно, SD от microSD вообще ни чем не отличается ? Если все microSD работают по SPI , то и SD будут ? Не будет такого что у какой-нибудь SD не окажется SPI интерфейса ?


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

Сообщение отредактировал octobus - Mar 2 2014, 02:56
Go to the top of the page
 
+Quote Post
uvreg
сообщение Apr 7 2014, 08:42
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-02-11
Пользователь №: 62 740



2MiklPolikov, у Вас в коде массив определен как unsigned char cmd_ansver[6]; а записываете в него 17 элементов:
for(j=1;j<=16;j++)
ansver[j]=SD_SPI_TRANSMIT(0xFF);

Мина замедленного действия.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Apr 7 2014, 09:30
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



uvreg, спасибо !


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
mekashikuta
сообщение Aug 19 2014, 12:17
Сообщение #24





Группа: Участник
Сообщений: 14
Регистрация: 10-08-11
Пользователь №: 66 648



Всем добрый день! Начали работать с SD картой(microSDHC), хотим выполнив команду ACMD13 получить 512 бит статуса карты на шине DAT. ДЛя этого мы выполнzем такую последовательность команд: CMD9(приходит ответ, что все ок), CMD7(приходит ответ, что все ок), CMD13(приходит ответ, что все ок), CMD55(приходит ответ, что все ок),CMD6(приходит ответ, что все ок), CMD55(приходит ответ, что все ок), CMD13(приходит ответ, что все ок), но данные на шину DAT не выдает. При всем при этом в response карта отвечает, что находится в режиме tran, как того и требует команда ACMD13. Не подскажите, где мы могли ошибиться в нашем алгоритме или чего не учли при инициализации?
Go to the top of the page
 
+Quote Post
mekashikuta
сообщение Jan 30 2015, 15:16
Сообщение #25





Группа: Участник
Сообщений: 14
Регистрация: 10-08-11
Пользователь №: 66 648



Всем доброго дня! Вопрос по SD Host: Пытаемся подать команду CMD23 : последовательность байт такая 1-й байт -8'h57, 2-й байт -8'h00, 3-й байт -8'h00, 4-й байт -8'h00, 5-й байт -8'h03, 6-й байт -8'h19(CRC вместе с стоп битом). Карточка на это ничего не отвечает, в чем может быть причина ? Другие команды проходят на ура.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 30 2015, 15:23
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(mekashikuta @ Jan 30 2015, 18:16) *
Всем доброго дня! Вопрос по 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 .
Во-вторых из текста очень трудно воспринимать, напишите хотя бы в столбик, или без русских букв между кодами команды....


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
mekashikuta
сообщение Feb 2 2015, 06:08
Сообщение #27





Группа: Участник
Сообщений: 14
Регистрация: 10-08-11
Пользователь №: 66 648



Цитата(MiklPolikov @ Jan 30 2015, 18:23) *
Ну во-первых непонятно, по какому интерфейсу выработаете, SD или SPI , и включена ли в последнем случае CRC .
Во-вторых из текста очень трудно воспринимать, напишите хотя бы в столбик, или без русских букв между кодами команды....

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

В итоге карточка не отвечает на эту последовательность и мы выходим по таймауту.
Go to the top of the page
 
+Quote Post
mekashikuta
сообщение Feb 2 2015, 10:44
Сообщение #28





Группа: Участник
Сообщений: 14
Регистрация: 10-08-11
Пользователь №: 66 648



Всем спасибо за помощь, извините за потраченное время, оказалось все гораздо тривиальнее, из 5 карточек, которые пробовали, только 4 поддерживают команду CMD23.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 23 2015, 15:49
Сообщение #29


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(GetSmart @ Feb 14 2014, 20:08) *
И произошло чудо. Вторая карточка уже другого производителя начала себя так же вести, хотя до этого идеально работала.

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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
DeC_NN
сообщение Jul 8 2015, 11:24
Сообщение #30


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 13-07-06
Пользователь №: 18 791



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

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

Как только задал вопрос, сам сразу и разобрался sm.gif
Скачал с сайта www.sdcard.org утилиту SDformatter. Она увидела карту и отформатировала ее.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 22:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01642 секунд с 7
ELECTRONIX ©2004-2016