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

 
 
 
Reply to this topicStart new topic
> LPC2478 и SD карта
Xeon
сообщение Oct 30 2013, 15:35
Сообщение #1


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Всем привет! На выше упомянутом проце запустил SD и FatFS, с 1Гиговой флешкой всё работает норм, а вот с 2Гиговой чет не хочет... может кто то встречался с такой ситуацией? Флешка точно работает и отформатирована как надо. При вызове disk_initialize возвращается всё время STA_NOINIT.
Go to the top of the page
 
+Quote Post
Xeon
сообщение Oct 31 2013, 08:54
Сообщение #2


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Находил несколько схожих тем

http://electronix.ru/forum/lofiversion/index.php/t98209.html
http://electronix.ru/forum/lofiversion/index.php/t65532.html

Но окончательного решения проблемы там так и не появилось...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Oct 31 2013, 12:05
Сообщение #3


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Xeon @ Oct 31 2013, 00:35) *
Всем привет! На выше упомянутом проце запустил SD и FatFS, с 1Гиговой флешкой всё работает норм, а вот с 2Гиговой чет не хочет... может кто то встречался с такой ситуацией? Флешка точно работает и отформатирована как надо. При вызове disk_initialize возвращается всё время STA_NOINIT.

Надо разбираться с драйвером сдэшки, а точнее со стандартами флешки. FatFS тут точно не причём rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
xor.kruger
сообщение Oct 31 2013, 12:37
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647



haker_fox абсолютно прав. 99 % что отличаются ревизии SD карт. Вставьте карты в картридер ПК считайте с них двоих служебную информацию и сравните.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Oct 31 2013, 13:16
Сообщение #5


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Что-то кажется мне, что всё дело в буковках HC на второй карте ;-)


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Xeon
сообщение Oct 31 2013, 13:41
Сообщение #6


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Буклвак HC не нашёл) буду сравнивать служебную инфу, если что найду отпишусь
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 31 2013, 19:15
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Xeon @ Oct 31 2013, 16:41) *
Буклвак HC не нашёл) буду сравнивать служебную инфу, если что найду отпишусь


с 1Гиговой флешкой всё работает норм, а вот с 2Гиговой чет не хочет...

Скорее всего карта 2го типа, 1й тип - самые старинные флешки, работают с упрощенной инициализацией, как ММС. 2й тип требует дополнительной ACMD, а НС еще и CMD8. Посмотрите в эту сторону...
Возможно еще то, что флешки бывают "медленные", в смысле их контроллер. Раз такое бывало, проверил так - пробовал инициализацию 3 раза через секунду, так некоторые со 2го, а одна даже только с 3го раза запускалась.

Сообщение отредактировал mantech - Oct 31 2013, 19:18
Go to the top of the page
 
+Quote Post
Xeon
сообщение Nov 1 2013, 05:13
Сообщение #8


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Пробовал увеличить время между попытками инициализации, не помогло. Буду копать в сторону 2-го типа флешки... Интересно, а FatFS со вторым типам флешки вообще не работает или надо где настраивать...т
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 1 2013, 12:44
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Xeon @ Nov 1 2013, 08:13) *
Пробовал увеличить время между попытками инициализации, не помогло. Буду копать в сторону 2-го типа флешки... Интересно, а FatFS со вторым типам флешки вообще не работает или надо где настраивать...т

FatFS все равно какой тип флешки. Это решается на уровне disk initialize в этой процедуре флешка инициализируется на низком уровне, в дальнейшем файловую систему интересуют только функции чтения, записи и состояния диска.
Когда я только начал освоение флешек и фатфс, то чановская функция инициализации мне не понравилась (трудна в понимании и использует таймера, я писал для аврки, а там таймеры на вес золота rolleyes.gif ) плюс небыло поддержки НС карт.
Go to the top of the page
 
+Quote Post
Xeon
сообщение Nov 2 2013, 06:51
Сообщение #10


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Цитата(mantech @ Nov 1 2013, 16:44) *
FatFS все равно какой тип флешки. Это решается на уровне disk initialize в этой процедуре флешка инициализируется на низком уровне, в дальнейшем файловую систему интересуют только функции чтения, записи и состояния диска.
Когда я только начал освоение флешек и фатфс, то чановская функция инициализации мне не понравилась (трудна в понимании и использует таймера, я писал для аврки, а там таймеры на вес золота rolleyes.gif ) плюс небыло поддержки НС карт.


А можете скинуть исходники с инициализацией?
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 2 2013, 07:09
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Xeon @ Nov 2 2013, 09:51) *
А можете скинуть исходники с инициализацией?


Вот пример инициализации с поддержкой всех типов карт(MMC SD SD2.0 SDHC)
Использую в своем микроПЛК уже 2 года, люди вставляют разные карточки и вроде как не жалуются biggrin.gif

Сообщение отредактировал mantech - Nov 2 2013, 07:34
Прикрепленные файлы
Прикрепленный файл  sdmmc.txt ( 3.6 килобайт ) Кол-во скачиваний: 28
 
Go to the top of the page
 
+Quote Post
Xeon
сообщение Nov 2 2013, 10:40
Сообщение #12


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Большое спасибо!) Буду изучать)
Go to the top of the page
 
+Quote Post
Xeon
сообщение Nov 2 2013, 12:13
Сообщение #13


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Посмотрел Ваши исходники и то что использую (исходники Martin THOMAS для инициализации), команды отсылаются в одинаковом порядке. Начал снова дебажить, в функции MCI_disk_initialize()

инициализация самой флешки проходит нормально (в выше написанной функции дергаются MCI_CardInit() и MCI_Check_CID, и они возвращают true), а вот дальше при вызове MCI_Set_Address() уже начинаются косяки. Вот как выглядит сама функция:

Код
DWORD MCI_Set_Address(void) {
    volatile DWORD i; // mthomas - volatile
    DWORD retryCount;
    DWORD respStatus;
    DWORD respValue[4];
    DWORD CmdArgument;

    /* If it's a SD card, SET_RELATIVE_ADDR is to get the address
     from the card and use this value in RCA, if it's a MMC, set default
     RCA addr. 0x00010000. */
#if 1
    // mthomas:
    if (MCI_CardType & MMC_CARD) {
        /* If it's unknown or MMC_CARD, fix the RCA address */
        CmdArgument = 0x00010000;
    } else {
        CmdArgument = 0;
    }
#else
    // NXP original:
    if ( MCI_CardType == SD_CARD )
    {
        CmdArgument = 0;
    }
    else /* If it's unknown or MMC_CARD, fix the RCA address */
    {
        CmdArgument = 0x00010000;
    }
#endif

    retryCount = 0x20; /* reset retry counter */
    while (retryCount > 0) {
        /* Send CMD3 command repeatedly until the response is back correctly */
        MCI_SendCmd( SET_RELATIVE_ADDR, CmdArgument, EXPECT_SHORT_RESP, 0);
        respStatus = MCI_GetCmdResp( SET_RELATIVE_ADDR, EXPECT_SHORT_RESP, (DWORD *)&respValue[0]);
        /* bit 0 and bit 2 must be zero, or it's timeout or CRC error */
        /* It should go to IDEN state and bit 8 should be 1 */
        if ( !(respStatus & MCI_CMD_TIMEOUT) && ((respValue[0] & (0x0F << 8))
                == 0x0500)) {
            CardRCA = respValue[0] & 0xFFFF0000; /* Save the RCA value from SD card */
            return ( TRUE ); /* response is back and correct. */
        }
        for (i = 0; i < 0x20; i++) {
        ;
        }
        retryCount--;
    }
    return ( FALSE );
}


когда пытаемся прочитать ответ
Код
respStatus = MCI_GetCmdResp( SET_RELATIVE_ADDR, EXPECT_SHORT_RESP, (DWORD *)&respValue[0]);

MCI_GetCmdResp возвращает -1
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 2 2013, 13:05
Сообщение #14


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Xeon @ Nov 2 2013, 15:13) *
Посмотрел Ваши исходники и то что использую (исходники Martin THOMAS для инициализации), команды отсылаются в одинаковом порядке. Начал снова дебажить, в функции MCI_disk_initialize()


MCI_GetCmdResp возвращает -1


Карта подключена по SPI или в режиме SD(4битном)? Просто команды инициализации разные. То, что в файле исходников работало в режиме SPI на аврках и стмах, думаю на лпсишках тоже должно работать. Может что еще недосмотрели?
Go to the top of the page
 
+Quote Post
Xeon
сообщение Nov 2 2013, 13:12
Сообщение #15


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

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Использую режим SD (MCI)... буду смотреть)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:09
Рейтинг@Mail.ru


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