Обсуждение Работа модуля с SD картой

Victor

Administrator
Команда форума
С появлением модуля ESP-12-E

мы имеем SPI.

Попробует кто-нибудь прикрутить SD карту?
Можно использовать как логгер или даже грузится с SD. Вариантов применений - масса.
 

ugsm

New member
а разве на модуле ESP-201 их не было? 12е нашел только на ебее у двух продавцов и цены в 2.5 раза выше, чем на обычный 12й и выше, чем на более удобный 201й...
 

ugsm

New member
там микросхема исключительно для согласования уровней 5-3.3В (для ардуинщиков), поэтому в случае ESP8266 можно сразу цепляться к контактам SD карты.
 

anakod

Moderator
Команда форума
Но ведь один из SPI интерфейсов был и раньше доступен, начиная с ESP-03 (как я понимаю SPI2?).

PS Оффтоп: А какая флеш память стоит в ESP-12-E? Тоже 512Кб, или наконец что-то больше?
 

Discriminator

New member
Тема незаметно заглохла или как, какое резюме ?
У кого то успешный опыт есть ? В каком формате грузим ? SD пишем отдельно ? Или можно выпаять флэшь и напаять слот SD ? А подгружать через UART ?

PS: Иноязычные сайты пока не копал...
Но это видел: https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process
 

nikolz

Well-known member
дней через 10 придет плата для SD тогда можно будет обсуждать
 

pvvx

Активный участник сообщества
дней через 10 придет плата для SD тогда можно будет обсуждать
Что-то я не нашел в BIOS-ROM кода загрузки с SD.
Все коды работы с QSPI из ROM-BIOS приведены в Web_Base\xlam\libs\bios\SpiFlash.c.
Садитесь и пишите драйвер, который будет грузиться с flash для работы с SD.
"SD Specifications Version 4.10"
 
Последнее редактирование:

Discriminator

New member
nikolz, Придет что ? Шилд SD-SPI ?
Я вообщето спрашиваю в свете существования модулей типа ESP-201(в которых, вроде как, все или почти все выводы чипа продублированы на ножках)... Ну и пункт: "ESP Boot Modes" в приведенной мной ссылке. Как я понимаю - это подразумевает прямое подключение SD к чипу, ну или с применением преобразователей уровня...
 

pvvx

Активный участник сообщества
Я вообщето спрашиваю в свете существования модулей типа ESP-201(в которых, вроде как, все или почти все выводы чипа продублированы на ножках)... Ну и пункт: "ESP Boot Modes" в приведенной мной ссылке. Как я понимаю - это подразумевает прямое подключение SD к чипу, ну или с применением преобразователей уровня...
Напрямую. Но выводы у модуля сделаны для этого:
http://esp8266.ru/forum/attachments/flash_download_tool-1-0-0-png.506/
Espressif считает, что надо ставить две малых flash, вместо одной большой.
 

Andy Korg

Moderator
Команда форума
Как я понимаю - это подразумевает прямое подключение SD к чипу
Нет, так не будет работать. Дело в том, что для работы с SD-картой нужны вполне определенные команды подавать и они сильно отличаются от управления чип-памятью. Вот например инициализация SD-карты в библиотеке PetitFatFS от Chain
Код:
DSTATUS disk_initialize (void)
{
    BYTE n, cmd, ty, ocr[4];
    WORD tmr;

    INIT_SPI();
    if NoSDCard() return STA_NOINIT;
#if _WRITE_FUNC
    if (MMC_SEL) disk_writep(0, 0);                            // Finalize write process if it is in progress
#endif
    for (n = 100; n; n--) rcv_spi();                        // Dummy clocks

    ty = 0;
    if (send_cmd(CMD0, 0) == 1) {            // Enter Idle state
        if (send_cmd(CMD8, 0x1AA) == 1) {    // SDv2
            for (n = 0; n < 4; n++) ocr[n] = rcv_spi();        // Get trailing return value of R7 resp
            if (ocr[2] == 0x01 && ocr[3] == 0xAA) {                // The card can work at vdd range of 2.7-3.6V
                for (tmr = 12000; tmr && send_cmd(ACMD41, 1UL << 30); tmr--) ;    // Wait for leaving idle state (ACMD41 with HCS bit)
                if (tmr && send_cmd(CMD58, 0) == 0) {        // Check CCS bit in the OCR
                    for (n = 0; n < 4; n++) ocr[n] = rcv_spi();
                    ty = (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2;    // SDv2 (HC or SC)
                }
            }
        } else {                            // SDv1 or MMCv3
            if (send_cmd(ACMD41, 0) <= 1)     {
                ty = CT_SD1; cmd = ACMD41;    // SDv1
            } else {
                ty = CT_MMC; cmd = CMD1;    // MMCv3
            }
            for (tmr = 25000; tmr && send_cmd(cmd, 0); tmr--) ;    // Wait for leaving idle state
            if (!tmr || send_cmd(CMD16, 512) != 0)            // Set R/W block length to 512
                ty = 0;
        }
    }
    CardType = ty;
    release_spi();

    return ty ? 0 : STA_NOINIT;
}
Так, что можно попробывать адаптировать это дело для хранения файлов, но и все, т.к. быстродействия SD недостаточно для исполнения кода чипом. Или вы что-то другое имели в виду?
 

Sergi

New member
Ну на счет быстродействия. В основном ограничено самим SPI ESP. Штатная флешь работает до 70МГц клока, что соответствует 10 классу T-flash. И это только в 1бит режиме, но можно запустить и в 4бит(не поддерживается ESP?).
 

Discriminator

New member
Ну на счет быстродействия. В основном ограничено самим SPI ESP. Штатная флешь работает до 70МГц клока, что соответствует 10 классу T-flash. И это только в 1бит режиме, но можно запустить и в 4бит(не поддерживается ESP?).
Почему не поддерживается ? Стр.8 "ESP8266_Module Application Design Guide"
 

Sergi

New member
Я только готовлюсь к приходу ESP :) .Доподлинно не изучил документацию. Опыт с T-flash есть не большой,но если указан класс 6 то выше и не работает (ну может чуть-чуть). Естественно это только на запись,чтение быстрее.
 

Andy Korg

Moderator
Команда форума
Штатная флешь работает до 70МГц клока, что соответствует 10 классу T-flash.
Хмм, тогда я не прав. Остается только сделать, грубо говоря, драйвер для работы с ICACHE_FLASH_ATTR. И будет у нас flash хоть залейся. :) Но че-то сомневаюсь, что это будет работать.
 

Sergi

New member
Сейчас ремонтирую планшет 7". Там прошивка лежит на 4Гб T-Flash и все работает, в проце только загрузчик.
 

Andy Korg

Moderator
Команда форума
что это за режим загрузки с SD карты (GPIO15 = "H").
То же интересно, подскажите плиз место в доках.
Там прошивка лежит на 4Гб T-Flash и все работает, в проце только загрузчик.
Может быть загрузчик затаскивает в память все целиком или оверлеями, можно ли так сделать на esp не могу точно сказать.
 
Сверху Снизу