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

 
 
> И снова STM32F10x, SD-Карты, SDIO и файловые системы., FatFS vs. KEIL и "драйверы" ST vs. KEIL
KnightIgor
сообщение Sep 10 2014, 14:14
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Коллеги,

я понимаю, что на тему уже говорено-переговорено, но столкнулся я со странным поведением составляющих и прошу помощи.

Имеем:
- железяки с STM32F103 и с SD-картой на SPI либо SDIO.
- KEIL Flash-FS (из 4.х) и родными "драйверами" для SPI и SDIO.
- FatFS, конкретно с diskio.c, где пользуется "драйвер" SDIO из примеров от ST (часто как файл sdcard.c).
- познание в сравнении.

Итак, до сего момента работало все отлично либо как KEIL Flash-FS через SPI | SDIO с "драйверами" от KEIL, а также FatFS через SPI. Причем в последнем случае я переписал diskio.c от Martin Thomas, чтобы работа с SPI также велась через SPI-драйвер из KEIL.

Теперь возникла тема запустить FatFS через SDIO. Здесь я не стал пользовать управление SDIO от KEIL, а обратился к примерам, где diskio.c пользует sdcard.c из примеров от ST.

В принципе, заработало, но наблюдается следующий эффект: если в процессе отладки после УСПЕШНОЙ инициализации карты, сделать сброс отладки (начать сначала), то на последующем проходе карта не инициализируется, т.к. после CMD0 уже команда CMD8 (которая 0x1AA передает) не получает ответа вообще, и устанавливается бит таймаута в ->STATUS. Если карточку обесточить (вынуть и вставить), то инициализации пройдет успешно. Такое же поведение и при "нормальной" работе устройства: карту вставил, устройству дал сброс, карта прочиталась. Не вынимая карту и не снимая питания, снова устройство пересбросил - карта не прочиталась. Карту вынул-вставил, устройство перестартанул - карта прочлась. KEIL Flash-FS на том же устройстве при таких же экспериментах работает уверенно, карта готова всегда.

Мое подозрение: либо изнутри KEIL Flash-FS карта инициализируется иначе, чем это реализовано в diskio.c + sdcard.c, либо где-то временнЫе соотношения иные. Предварю вопрос: частоты тактирования SDIO идентичны как под KEIL, так и под ST-драйверами.

Куда смотреть еще?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Sep 10 2014, 19:45
Сообщение #2


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



И с новыми картами всё работет без непонятных задержек...
Вот кусок:
Код
// set MMC in Idle mode
// Вызывается, подразумевая что CS установлен
static char mmcGoIdle(void)
{
    unsigned char response;
    unsigned long cmd58answer, cmd8answer = 0;

    SDCARD_CS_HIGH();
    spi_read_byte(targetsdcard, 0xff);
    SDCARD_CS_LOW();

    spi_read_byte(targetsdcard, 0xff);
    //Send Command 0 to put MMC in SPI mode
    mmcSendCmdCRC7(MMC_GO_IDLE_STATE, 0);    // CMD0 - Обязательно с правильным CRC
    //Now wait for READY RESPONSE
    if ((response = mmcGetResponseR1()) != 0x01)
    {
        return MMC_INIT_ERROR;
    }

    spi_read_byte(targetsdcard, 0xff);

    mmcSendCmdCRC7(MMC_SEND_IF_COND, 0x000001aa);    // CMD8 - Обязательно с правильным CRC. 3.3 Volt VCC
    response = mmcGetResponseR7(& cmd8answer);
    if ((response & 0x04) != 0)    // illegal command or pattern not match
    {
        mmcAddressMultiplier = MMC_SECTORSIZE;
        mmcCardVersion2 = 0;

        // if no responce
        // Ver2.00 or later SD Memory Card(voltage mismatch)
        // or Ver1.X SD Memory Card
        // or not SD Memory Card
        debug_printf_P(PSTR("Ver1.X SD Memory Card or not SD Memory Card\n"));

        // check voltage range here
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Sep 10 2014, 21:20
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Genadi Zawidowski @ Sep 10 2014, 21:45) *
И с новыми картами всё работет без непонятных задержек...
Вот кусок:

Я так понял, это SPI. С SPI проблем нет. Есть проблемы с SDIO.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:31
Рейтинг@Mail.ru


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