SD-карта не смогла инициализироваться
У меня есть плата Pro Micro, и я пытаюсь составить список моих файлов, как в примере с Arduino IDE. Я использую следующие контакты:
board micro sd module
D4 ---> CS
D15 ---> SCK
D14 ---> MISO
D16 ---> MOSI
GND ---> GND
VCC ---> VCC
На последовательном мониторе появляется сообщение «Ошибка инициализации».
Что не так с моей настройкой?
Это работающий код:
#include <SPI.h>
#include <SD.h>
File root;
void setup() {
// Открытие последовательной связи и ожидание открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта. Требуется только для собственного порта USB
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
root = SD.open("/");
printDirectory(root, 0);
Serial.println("done!");
}
void loop() {
// после завершения установки ничего не происходит.
}
void printDirectory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (! entry) {
// больше нет файлов
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs + 1);
} else {
// у файлов есть размеры, у каталогов нет
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}
А это моя проводка:
@George Sp, 👍1
Обсуждение2 ответа
Лучший ответ:
Библиотека SD работает только с форматами FAT и FAT32. SD.begin() считывает «тома диска» и открывает корневую папку. Если карта не отформатирована или отформатирована с использованием другого стандарта файловой системы, функция Begin() завершается неудачей.
РЕДАКТИРОВАНИЕ: разъемы контактов должны быть припаяны
Да, я понял. Я только что отформатировал его в FAT32, и он тоже не работал. Что еще это может быть?, @George Sp
Вот мой код настройки SD-карты для небольшой схемы, в которой я записывал на карту данные о температуре.
const int SD_CS = 10;
const long SLEEP_TIME = 60000; // запись на карту каждую минуту
long multiplier = 0;
LiquidCrystal_I2C lcd(0x3F, 20, 4);
void setup() {
lcd.begin();
lcd.setCursor(2,0);
lcd.print("Hello, LCD!");
if (SD.begin(SD_CS)) { // инициализация SD
lcd.setCursor(2,2);
lcd.print("SD card init");
}
}
Я установил контакт CS на D10.
Попробуйте переключить его на другой контакт вот так и посмотрите, получите ли вы другой результат. Кажется, у меня возникла проблема, когда я использовал контакт 4, но не могу точно вспомнить.
Примечание. И, конечно же, не забудьте подключить провод CS к контакту D10 или к тому, который вы используете.
проблема раскрывается в чате, @Juraj
@Juraj Разъёмы не припаяны! Угу! Я давно задал соответствующий вопрос по этому поводу - https://electronics.stackexchange.com/questions/249140/how-can-i-make-connection-on-pcb-circuit-board-holes-without-solder-for. -прото Отличный улов!, @raddevus
- Arduino Pro Micro, получить данные с контакта Tx?
- Как увеличить скорость записи на SD-карту в Ардуино
- SD-карта не инициализируется
- Что означают эти контакты? Куда мне их подключить?
- Отправка мультимедийных клавиш клавиатуры с помощью библиотеки клавиатур
- Режимы открытия файлов на SD-карте Arduino добавление/перезапись
- Распиновка аналога Arduino Pro Micro
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
Пожалуйста, добавьте свой код., @Michel Keijzers
возможно, ваша программа состоит только из этих двух команд.....
Serial.begin(9600); Serial.println("инициализация не удалась");
..... это даст вам наблюдаемый результат, @jsotolaты карту вставил?, @Juraj
какое напряжение на плате и модуле SD?, @Juraj
@jsotola Я изучаю информатику, чувак, это не одна из моих возможных ошибок. Но спасибо за ваш комментарий, @George Sp
@Юрай Да, я вставил карту. Как посмотреть напряжения?, @George Sp
в спецификации. pro micro — 5 В или 3,3 В. Модули SD-карт имеют преобразование напряжения до 5 В или только держатель для SD-карты с собственным напряжением 3,3 В., @Juraj
То есть напряжения в порядке? Я подключаю его к компьютеру через USB. Как я могу посмотреть на это дальше? Я уверен, что это уже должно было сработать., @George Sp
@MichelKeijzers Да, есть предположения?, @George Sp
подключение к USB ничего не говорит о напряжении. добавьте ссылки на то, где вы их купили, если не знаете характеристики, @Juraj
И плату, и модуль я купил давно на Ebay. Модуль от Catalex и имеет версию v1.0. Моя SD-карта стандартная (Kingston 4 ГБ), а модуль, наверное, самый дешевый Pro Micro на ebay., @George Sp
Модуль Catalex SD рассчитан на напряжение 5 В. На pro micro вы можете измерить напряжение на выводе OUTPUT HIGH., @Juraj
Как мне это сделать?, @George Sp
SD-карта отформатирована в FAT или FAT32?, @Juraj
Я не уверен. Может ли это быть проблемой?, @George Sp
это определенно будет проблемой. вставь карту в комп и проверь, @Juraj
Я уверен, что это была NTFS, сейчас форматирую ее в FAT. Но это должна быть проблема на уровне программного обеспечения, не так ли? Из-за моего эскиза кажется, что он не запускается, @George Sp
есть ли у вас вольтметр/мультиметр для измерения напряжения VCC или контакта?, @Juraj
Нет, не сейчас. Я заказал мультиметр, но он еще не пришел., @George Sp
что-то написано на нижней стороне pro micro?, @Juraj
Давайте [продолжим обсуждение в чате](https://chat.stackexchange.com/rooms/85130/discussion-between-george-sp-and-juraj)., @George Sp
Я бы подумал только о том, чтобы вставить SD-карту, используя карту, отформатированную в FAT (не NTFS), и, при необходимости, попробовать другую SD-карту (у меня возникли проблемы в зависимости от SD-карты). Также я бы посоветовал купить (около 5 долларов) логический анализатор на Ebay, чтобы вы могли относительно легко узнать, что происходит через перемычки., @Michel Keijzers
@MichelKeijzers, прочитай финал чата, @Juraj