Инициализация SD-карты не удалась

Я использую пример скетча SD-карты, представленный в Arduino IDE. Все работает хорошо, но когда я перезагружаю Adruino Mega с помощью кнопки сброса, инициализация SD-карты не удалась. Чтобы это исправить, мне нужно вытащить SD-карту, вставить ее в гнездо и снова перезагрузить плату. После этого инициализация SD-карты прошла успешно. Как я могу обновить свой код, чтобы попытаться инициализировать SD-карту, пока инициализация не пройдет успешно? И еще, не могли бы вы мне объяснить, откуда взялся этот баг?

См. пример установки SD-карты на Arduino Mega:

Serial.print("Initializing SD card...");

  if (!SD.begin(53)) {
    Serial.println("initialization failed!");
    while (1);
  }
  Serial.println("initialization done.");

, 👍0

Обсуждение

Вероятно это не баг, не все сд карты совместимы с сд библиотекой. Вы перезагружаете Arduino, пока SD-карта занята? Возможно гнездо на его модуле не подходит на 5в. Возможно, вы используете макетную плату. Возможно, провода слишком длинные. Возможно, на ардуино мега не хватает напряжения из-за дешевого USB-кабеля. Есть еще много вещей, которые могут быть неправильными., @Jot

подключено ли какое-то другое устройство SPI?, @Juraj

Никакое другое устройство SPI не подключено. Я использую USB-кабель и провода длиной 20 см для подключения SD-карты к Arduino. Попробую поработать с внешним блоком питания 9В и возможно до скорой встречи..., @Teddol

После использования внешнего питания инициализация работает хорошо после 10 перезагрузок!!! Вы пишете Jot, используя только USB-кабель, напряжение на выводе CS устройства SD-карты составляет около 4,5 В. При внешнем напряжении 5 В для Arduino, контакт CS устройства SD-карты составляет 4,99 В. Я думаю, что проблема возникла отсюда. Спасибо !, @Teddol

SD-карта имеет напряжение 3,3 В (или, по крайней мере, совместима с 3,3 В). Можете показать фото модуля с разъемом? Есть ли в модуле чип для преобразования сигналов 3,3 В с SD-карты в сигналы 5 В от Arduino?, @Jot

Не знаю как сюда разместить фотки, но регулятор на аппарате есть. Я могу измерить напряжение 4,99 В на одном из контактов и 3,29 В на другом., @Teddol

Сигналы SPI для SD-карты должны быть преобразованы в сигналы 3,3 В. В этом модуле имеется hc4050 для преобразования сигналов: https://www.adafruit.com/product/254., @Jot

Моя плата оснащена SN74LVC125A, буфером на 3,3 В. Модель платы можно найти здесь: https://www.amazon.fr/SKYNET-Lecteur-Reader-ARDUINO-RASPBERRY/dp/B01DNXWVES, @Teddol


1 ответ


Лучший ответ:

0

Я просто добавляю внешний источник питания 9 В к моей Arduino Mega. Устройство SD питается от распиновки Arduino 5 В.

,