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

 
 
> Интерфейс SD-карты., Вопрос по модулю FATFS.
JohnKorsh
сообщение May 31 2013, 12:35
Сообщение #1


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

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Пытаюсь работать с SD картой, в первый раз используя известную библиотеку FATFS.
Не поможет ли кто разобраться?
У меня версия FATFS R0.09 24 Jan 2013.
Не инициализируется карта (Ппоцедура disk_initialize (0)).
Прописал физическое соединение в модуле mmcbb.c.
Обмен по SPI идёт - посылается 80 тактов при CS=1, затем CS=0.
Посылается команда CMD0 с параметром 0x0, ответ 1.
Посылается команда CMD8 с параметром 0x01AA, ответ 0x000001AA.
Далее, карта не выходит из Iddle состояния, в ответ на циклически посылаемую команду ACMD41 с аргументом 1UL << 30 получаю 01, а не 0.
Менял скорость обмена. Менял карты. Форматировал карты на PC. Тот же эффект.
Стал ковыряться в исходниках FATFS и спецификации на SD.
Как то странно в FATFS выглядит функция посылки команды, точнее её часть, относящаяся к приёму ответа:

Код
    /* Receive command response */
    if (cmd == CMD12) rcvr_mmc(&d, 1);    /* Skip a stuff byte when stop reading */
    n = 10;                                /* Wait for a valid response in timeout of 10 attempts */
    do
        rcvr_mmc(&d, 1);
    while ((d & 0x80) && --n);

    return d;            /* Return with the response value */


по спецификации на команду ACMD41 должен быть 6-байтный ответ. Бит окончания инициализации - старший во втором байте. А приведённый код, насколько я понимаю, вернёт последний из 6 байт.
Вопроса у меня два:
1. В чём причина того, что нет имнициализации карты?
2. Не даст ли кто ссылку на последнюю версию спецификации на SD?
Go to the top of the page
 
+Quote Post



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

 


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


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