• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

pvvx

Активный участник сообщества
Нет, я хотел взять HSPI, который все и используют для подключения sd-карточек.
Тогда не все современные SD карточки работают с одиночным каналом SPI... Ищите какую старую карточку... Лучше наверно MMC
 
Последнее редактирование:

pvvx

Активный участник сообщества
Я пробую на 128 МБ карточке родом из середины 2000х. Думаю, что она меня понимает, если судить по осциллограмме.
Гадать сложно. :) Вашей схемы и кода нет.

У меня, к примеру, не очень-то хотел пускаться контролер SDIOH в RTL по началу. Длинные провода, частота 43 MHz на 6-ти проводах… Добавил питание ему в регистрах на 0.05В (он там в чипе питается от один с чем-то вольтов и своим стабилизатором) и тогда он поехал, пересиливая сигналы от SD :) Потом это убрал, т.к. исправил ошибку в инициализации контроллера…

Вот как догадаться что там у вас? :)
 
Последнее редактирование:

af1283

New member
Гадать сложно. :) Вашей схемы и кода нет.

У меня, к примеру, не очень-то хотел пускаться контролер SDIOH в RTL по началу. Длинные провода, частота 43 MHz на 6-ти проводах… Добавил питание ему в регистрах на 0.05В (он там в чипе питается от один с чем-то вольтов и своим стабилизатором) и тогда он поехал, пересиливая сигналы от SD :) Потом это убрал, т.к. исправил ошибку в инициализации контроллера…

Вот как догадаться что там у вас? :)
Поставил я другой модуль, прошил той прошивкой, которую я в своём первом посте указывал и проблема не то что бы совсем пропала, она перешла как бы в более позитивное русло.

Схема настолько проста, что можно объяснить двумя словами. Подключена SD по HSPI, питание SD отвязано от питания модуля, и как оказалось, не напрасно.

Теперь со свежеспаянным модулем имеем следующее:
1) При запуске карта инициализируется не сразу,а после нескольких перезапусков модуля. Надо проверять тактирование SPI, на осциллограмме иногда было видно, что фронт по каналу данных от SD съезжал относительно CS и синхропосылки.
2) Если карта инициализировалась, то выключение питания на модуле ESP никак не повлияет на последующую инициализацию карты с первого раза. Если отключить питание на карте, то инициализация опять будет проходить не с первого раза.

Ещё раз прилагаю тему, откуда была взята прошивка:
ESP8266 + SD/MMC + FAT16/32 Demo
 

pvvx

Активный участник сообщества
Теперь со свежеспаянным модулем имеем следующее:
1) При запуске карта инициализируется не сразу,а после нескольких перезапусков модуля. Надо проверять тактирование SPI, на осциллограмме иногда было видно, что фронт по каналу данных от SD съезжал относительно CS и синхропосылки.
Это значит, что неверная реализация обмена по SPI и не более.
2) Если карта инициализировалась, то выключение питания на модуле ESP никак не повлияет на последующую инициализацию карты с первого раза. Если отключить питание на карте, то инициализация опять будет проходить не с первого раза.
А это - что неверный алгоритм инициализации карты - последовательность команд...
Ещё раз прилагаю тему, откуда была взята прошивка:
ESP8266 + SD/MMC + FAT16/32 Demo
Это совсем не интересно - там нет поддержки длинных имен файлов/каталогов. Только обгрызанные в формате 8.3 от первых версий MSDOS.
 
Последнее редактирование:

af1283

New member
Это значит, что неверная реализация обмена по SPI и не более.
А это - что неверный алгоритм инициализации карты - последовательность команд...
Это совсем не интересно - там нет поддержки длинных имен файлов/каталогов. Только обгрызанные в формате 8.3 от первых версий MSDOS.
Большое спасибо, проверю по вашим догадкам. Отсутствие поддержки длинных имён не критично.

Кстати, внимательно посмотрев библиотеку файловой системы можно обнаружить любопытные настройки для длины имёни файлов:
Код:
#define    _USE_LFN    0        /* 0 to 3 */
#define    _MAX_LFN    255        /* Maximum LFN length to handle (12 to 255) */
/* The _USE_LFN option switches the LFN feature.
/
/   0: Disable LFN feature. _MAX_LFN has no effect.
/   1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
/   2: Enable LFN with dynamic working buffer on the STACK.
/   3: Enable LFN with dynamic working buffer on the HEAP.
/
/  When enable LFN feature, Unicode handling functions ff_convert() and ff_wtoupper()
/  function must be added to the project.
/  The LFN working buffer occupies (_MAX_LFN + 1) * 2 bytes. When use stack for the
/  working buffer, take care on stack overflow. When use heap memory for the working
/  buffer, memory management functions, ff_memalloc() and ff_memfree(), must be added
/  to the project. */
 
Последнее редактирование:

Elik

New member
Подключаю СД напрямую к SPI, пины 12 по 15, скорость ну очень низкая, картинку весом 1мег грузит за 46 секунд. Подскажите как с этим бороться? Нужна приемлемая скорость загрузки с СД карточки...
 
Сверху Снизу