Подключите две SD-карты к одной плате Arduino и скопируйте с одной на другую

Я пытаюсь подключить 2 SD-карты к плате Arduino Uno.

  1. Мой первый вопрос: можно ли одновременно подключить две SD-карты к одному Arduino?
  2. Второй вопрос: если можно подключить 2 SD-карты, как я могу скопировать данные с карты 1 на карту 2?

Цель моего проекта — копирование данных из одной периферийной памяти в другую периферийную память при возникновении внешнего прерывания.
Кто-нибудь может мне помочь?

, 👍0

Обсуждение

Да, SD-карты используют шину SPI, поэтому вы можете подключить более одной. Каждому из них потребуется собственная линия выбора чипов. Чтобы скопировать, просто прочитайте с одного и напишите прочитанное на другом. Супер просто. Если ничего из этого не имеет смысла, изучите, как работать с одной SD-картой. Как только вы освоите основы, подключение двух будет тривиальным., @Delta_G

Просто будьте осторожны, потому что некоторые дешевые модули SD не освобождают линию, когда вы отменяете их выбор. Они не позволят ничему другому на шине SPI работать без небольших модификаций. Покупайте вещи хорошего качества, и это не должно быть проблемой, но если вы выберете самую дешевую вещь, которую сможете найти, вам также нужно будет изучить этот вопрос., @Delta_G

Спасибо за вашу помощь и хороший ответ :). На самом деле это не настоящий проект, и я должен смоделировать его с помощью симулятора Proteus. У вас есть хороший учебник по работе с SD-картами в Arduino? @Delta_G, @user67463

@user67463 user67463 вы пытались найти учебник в Google? Их тонны, @chrisl

В Интернете есть буквально сотни таких руководств. Найти его будет намного проще, чем писать этот код. Если вы откроете программное обеспечение Arduino и просмотрите примеры, вы увидите примеры использования SD-карты. Начните с этого. Или просто погуглите «Arduino SD» и начните читать., @Delta_G

Еще одна подсказка для вас, поскольку вы говорите, что хотите сделать это в ответ на прерывание. Не пытайтесь сделать это внутри обработчика прерывания. Пусть ISR установит флаг, и функция цикла увидит это и обработает там чтение и запись., @Delta_G


1 ответ


1

Вы не можете сделать это с вашей Arduino-Uno (и обычными SD-библиотеками).

SD-карты организованы в виде "секторов" по 512 байт. Вам нужен как минимум один сектор для самой файловой системы и один сектор для данных. Если вы попытаетесь одновременно открыть два файла, все ваши 2048 байт ОЗУ потребуются для буферов SD, и вы больше не сможете вернуться из вызова file open().

,

Вы можете сделать поблочную копию SD-карты вместо фактического чтения файловой системы. Недостатком является то, что SD-карта для копирования должна быть такого же размера или больше, чем исходная карта. И это копирование всегда занимает одинаковое (долгое) количество времени, независимо от того, «полная» ли карта., @Gerben

@ Гербен: правильно. (Это мое ограничение «обычных SD-библиотек»). Если у вас есть старые SD-карты на 64 МБ, вы можете сделать эту полную копию. Но предложение «при возникновении внешнего прерывания» заставляет меня думать, что пользователь 67463 пытается оседлать дохлую лошадь., @DataFiddler