Два интерфейса SD-карты на одном ESP8266?

Я знаю, что можно подключить несколько устройств SPI, но как получить доступ ко второму диску из скетча?

Глядя на пример SDWebServer.ino, я сомневаюсь в части SD.begin(SS);. Если я снова вызову begin() с другим выводом CS, кажется, что я потеряю ссылку на свой первый том или, возможно, он вообще не будет работать. Я бы создал другой экземпляр SD, но скетч никогда не создает экземпляр этого объекта, он сначала появляется в setup() с помощью SD.begin(SS);

Если я скопирую библиотеку (sd.h+sd.cpp) и заменю все буквальные экземпляры SD на SD2, смогу ли я затем включить и использовать SD2 точно так же, как оригинал (при условии другого .begin(pin))? Есть ли менее хакерский способ использования двух SD-карт в ESP8266 Arduino?

Если кому-то интересно, это для криптографического проекта, где одна карта будет содержать одноразовые блокноты с длиной открытого текста, а другая содержит зашифрованный текст XOR, оба загружаются через Wi-Fi, а максимальный размер файла должен быть больше, чем SPIFFS, поэтому мне действительно нужны две SD-карты...

, 👍1

Обсуждение

Разве вы не можете просто создать еще один экземпляр SDClass SD2 в скетче?, @KIIV

и, конечно же, выберите другой контакт для сигнала выбора ведомого, @Juraj


2 ответа


0

Вы должны (я не проверял) сделать это, если библиотека хорошо закодирована и не использует глобальные переменные, и вы делаете что-то вроде этого:

// Не знаю, как называется класс, поэтому замените TYPE на то, что должно быть.
TYPE SDCardOne;
TYPE SDCardTwo;

SDCardOne.begin(CS1);
SDCardTwo.begin(CS2);
....
,

Спасибо за редактирование, Юрай, теперь это имеет гораздо больше смысла :), @Code Gorilla

К сожалению, стандартная библиотека SD.h разработана как одноэлементная, поэтому код скетча не создает интерфейсы карт, как указал @Devidas в другом ответе., @Maple


1

Невозможно без изменения кода библиотеки. Потому что текущий код библиотеки написан для одной SD-карты, т.е. не предназначен для нескольких SD-карт, потому что это будет сложно сделать. Библиотека SPI также использует библиотеку FatFS, которая является узким местом в этом сценарии.

Стоит попробовать.

sdfatlib — это библиотека, написанная для Arduino. Я никогда не использовал его, но вы можете попробовать ESP.

Сообщите нам, если это сработает.

,