Initializing SD card...initialization failed! MEGA2560 + SD модуль
- Войдите на сайт для отправки комментариев
Доброго времени суток, помогите разобраться с подключением SD модуля к Mega2560 v3. Никак не хочет работать, то ли мега глючит то ли делаю что-то не так.
Подключаю таким макаром(ниже) - не пашет
MISO (D0) соединяем с 50 pin (12 pin для других)
MOSI (D1) — c 51 pin (11 pin для других)
SCK — c 52 pin (13 pin для других)
CS (SS) — c 53 pin (10 pin для других)
GND (земля) — с GND pin
5V (или 3.3v) — c 5V pin (или 3.3v)
в скече меняю 10 и 4 на 53 пин, всё равно не пашет. танцы с бубном не помогают. на УНО всё работает, на меге не хочет.
pinMode(53, OUTPUT);
if (!SD.begin(53)) {
Может что-то делаю не так? как только не пробовал. Третий вечер бьюсь... Я в отчаяние....

а чего это увас за такая красивая перемычка между 53 пином и10? художествами занимаетесь? а просто воткнуть на пины которые с номерами вам религия не позволяет?
И куда воткнут белый провод? Уберите зеленый провод и воткните белый в 53 вывод.
У меня на Ethernet Sheild была такая беда, оказывается был неправильно указан SS вывод
и вообще в стандартной библиотеке вот такая процедура
if (!card.init(SPI_HALF_SPEED, chipSelect)) { Serial.println("initialization failed. Things to check:"); Serial.println("* is a card is inserted?"); Serial.println("* Is your wiring correct?"); Serial.println("* did you change the chipSelect pin to match your shield or module?"); return; } else { Serial.println("Wiring is correct and a card is present."); }в одном из примеров....
а чего это увас за такая красивая перемычка между 53 пином и10? художествами занимаетесь? а просто воткнуть на пины которые с номерами вам религия не позволяет?
Да говорю же, чего только не делал,куда только непихал, про перемычку нашёл в соседних темах и решил попробовать, но увы, с ней тоже не работает.
а SPI вы по центру для красоты прицепили?
Заработало??
у меня темка была про это, где-то в темах,
тогда забил, временно разместил массив с инфой в проге, для отладки,
а сейчас пробую подключать...
http://arduino.ru/Reference/Library/SPI
Что интересно темы MЕГА+СД переодически всплывают и без результатно
http://www.arduino.ru/forum/obshchii/mega-2560-sd-card-zapisyvaetsya-musor
http://dso.seeedstudio.com/viewtopic.php?p=15632
http://www.arduino.ru/forum/programmirovanie/chto-nepravilno-delayu-pri-rabote-s-sd
http://forums.adafruit.com/viewtopic.php?f=31&t=22796&sid=0
кое где написано But on MEGA2560 board they are 53(SS),51(MOSI),50(MISO),52(SCK).
Open the file …\Arduino\libraries\SD\utility\Sd2Card.h and changed “#define MEGA_SOFT_SPI 0” to “#define MEGA_SOFT_SPI 1”. Then added “pinMode(53, OUTPUT); in the Setup() function.
пробовал, всё равно не идёт, казалось бы, 4 проводка подсоеденить...
получилось!
вставил просто строки в прогу
и увидел что константы 10,11,12,13, хотя в среде 1.0.1 выставлена Мега.
в файле Sd2Card.h поменял
далее всё это работает!
if (!SD.begin(53)) {
...
myFile = SD.open("1.ajx", FILE_READ);
Спасибо! Поправил в файле Sd2Card.h порты и заработало! Только есть баг. Файл создаёт и читает, но почему-то в него ничего не пишет, файл остаётся пустым.
myFile.println("testing 1, 2, 3."); не работает.
открыт правильно? SD.open("test.txt", FILE_WRITE);
закрытие есть? myFile.close();
Всё верно, пример SD/ReadWrite, писать в файл не хочет.
/* SD card read/write This example shows how to read and write data to and from an SD card file The circuit: * SD card attached to SPI bus as follows: ** MOSI - pin 11 ** MISO - pin 12 ** CLK - pin 13 ** CS - pin 4 created Nov 2010 by David A. Mellis updated 2 Dec 2010 by Tom Igoe This example code is in the public domain. */ #include <SD.h> File myFile; void setup() { Serial.begin(9600); Serial.print("Initializing SD card..."); // On the Ethernet Shield, CS is pin 4. It's set as an output by default. // Note that even if it's not used as the CS pin, the hardware SS pin // (10 on most Arduino boards, 53 on the Mega) must be left as an output // or the SD library functions will not work. pinMode(4, OUTPUT); if (!SD.begin(53)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // open the file. note that only one file can be open at a time, // so you have to close this one before opening another. myFile = SD.open("test.txt", FILE_WRITE); // if the file opened okay, write to it: if (myFile) { Serial.print("Writing to test.txt..."); myFile.println("testing 1, 2, 3."); // close the file: myFile.close(); Serial.println("done."); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } // re-open the file for reading: myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); // read from the file until there's nothing else in it: while (myFile.available()) { Serial.write(myFile.read()); } // close the file: myFile.close(); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } } void loop() { // nothing happens after setup }а это в скретче оставлено?? pinMode(4, OUTPUT);
и 53 ставил и 4, работает одинаково.
Блин, что же делать? никак не хочет работать правильно =)
Когда вставляешь чистую отформатированную карту в SD модуль, и включаю ардуину, на ней создаётся вот такая хрень
а когда открываю сириал порт, то там вот такое:
а другую карточку?
Поменял флэшку и вдруг всё заработало =)
Не все карточки поддерживают SPI. Тоже сталкивался.
Не все карточки поддерживают SPI. Тоже сталкивался.
ну я бы еще сказал что некоторые карточки не поддерживают скорость обращения к ним :) частота SPI задается при инициализации
Но странно всё-таки, на уно-то карта работает без проблемм, а на меге глючит. Карта SD древняя на 64 мб.
видими мега ей слишком большую скорость просила и она не успевала :)
Добрый день, не стал плодить новую тему, так как проблема схожая. Имею на руках Freeduino ADK 2.2 и вот такой SD Module, при попытке инициализировать карту выдает: "Initializing SD card...initialization failed!". Модуль подключен по схеме 53(SS),51(MOSI),50(MISO),52(SCK) на моей плате это 53(CS),51(D1),50(D0),52(CK), замену в файле Sd2Card.h сделал, пытаюсь выполнить скетч:
#include <SD.h> File myFile; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); Serial.println(SD_CHIP_SELECT_PIN); //53 Serial.println(SPI_MOSI_PIN); //51 Serial.println(SPI_MISO_PIN); //50 Serial.println(SPI_SCK_PIN); //52 while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print("Initializing SD card..."); // On the Ethernet Shield, CS is pin 4. It's set as an output by default. // Note that even if it's not used as the CS pin, the hardware SS pin // (10 on most Arduino boards, 53 on the Mega) must be left as an output // or the SD library functions will not work. pinMode(53, OUTPUT); if (!SD.begin(53)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // open the file. note that only one file can be open at a time, // so you have to close this one before opening another. myFile = SD.open("test.txt", FILE_WRITE); // if the file opened okay, write to it: if (myFile) { Serial.print("Writing to test.txt..."); myFile.println("testing 1, 2, 3."); // close the file: myFile.close(); Serial.println("done."); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } // re-open the file for reading: myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); // read from the file until there's nothing else in it: while (myFile.available()) { Serial.write(myFile.read()); } // close the file: myFile.close(); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } } void loop() { // nothing happens after setup }Что за 53(CS), 51(D1), 50(D0), 52(CK) ? И что за замену в файле Sd2Card.h вы сделали?
Замены сделал следующие:
01#else // SOFTWARE_SPI02// define software SPI pins so Mega can use unmodified GPS Shield03/** SPI chip select pin */04uint8_tconstSD_CHIP_SELECT_PIN = 53;05/** SPI Master Out Slave In pin */06uint8_tconstSPI_MOSI_PIN = 51;07/** SPI Master In Slave Out pin */08uint8_tconstSPI_MISO_PIN = 50;09/** SPI Clock pin */10uint8_tconstSPI_SCK_PIN = 52;11#endif // SOFTWARE_SPI53(CS), 51(D1), 50(D0), 52(CK) - обозначение контактов на моем модуле
Может кто знает почему не видно, что microSD отформатирова?
использую стандартный пример CardInfo
соответственно
chipSelect = 53; ... pinMode(53, OUTPUT); ... f (!card.init(SPI_HALF_SPEED, chipSelect)) { ....В резульате:
PS мое решение тут
Может кто знает почему не видно, что microSD отформатирова?
использую стандартный пример CardInfo
...
из рабочего проекта
схема
код
//art100 писать 20140608 #include <SPI.h> #include <Ethernet.h> #include <SD.h> #define REQ_BUF_SZ 60// Размер буфера, используемого для перехвата HTTP-запросов byte mac[] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xED};// MAC-адрес Ethernet shield наклейка по борту IPAddress ip(192, 168, 0, 20); // IP-адрес, могут изменяться в зависимости от сети EthernetServer server(80); // создаем сервер на порт 80 Файлов webFile; // Веб-страница файл на SD card char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP-запрос, хранятся в виде null terminated string char req_index = 0; // индекс в HTTP_req буфера boolean LED_state[4] = {0}; // магазины состояний светодиодов //-------------------------------------------- void setup(){ // отключить Ethernet / init SD pinMode(10, OUTPUT); digitalWrite(10, HIGH); Serial.begin(115200); // для отладки Serial.begin(9600); // для отладки Serial.println("SD init fat32 32 Гб, максимальная..."); if (!SD.begin(4) ) { Serial.println("SD-карта не виделись"); return; }// init failed Serial.println("SD OK."); // проверка index.htm файл if (!SD.exists("index.htm")) { Serial.println("index.htm не виделись"); return; }// не могу найти файл индекса Serial.println("index.htm найден");У меня скеч кривой не могу никак понять что мешает SKC (52 pin) - с уно SKC (13 pin) всё отлично.
Что то ни как не могу добится чтоб модуль нормально работал с Мегой.
Тут пишут : http://profmason.com/?p=1956 что надо подключать через резисторы - завтра попробую
CS, MOSI, MISO и SCK подключить через делители резисторы 5,1 кОм и 10 кОм
ПС: У меня на модуле только подтягивающие резисторы ( видно предназначена для DUE и тп 3,3 Вольта)
dachnik - У Вас такой же кривой модуль как и у меня.
Не понимаю я китайцев - зачем тогда ставить стабилизатор на 3,3В и делать дополнительный VCC на 5В.
The SPI lines are uni-directional so you can replace MOSFETs with diodes (use something fast-switching with low capacitance as the circuit imitates the Open-Drain outputs with 10K pull-ups)
Какие диоды нужны ? (есь в наличии 1N4148 и 1N5819 но по мойму они не подойдут)
Попробуйте 5819, мне кажется пойдут. В сущности его задача не пустить 5В на вход.
Попробуйте 5819, мне кажется пойдут. В сущности его задача не пустить 5В на вход.
Ответил наконец то хозяин схемы:
1N5819 junction capacitance is 110pF. Taking into account the pull-up resistance of 10kOhm this gives limiting clock frequency ~100kHz. If you need higher clocks you could use lower resistors connected in parallel (1kOhm means ~1MHz) but this leads to increased power ripples. Or you could use 1N4005...4007 (8pF junction capacitance).
Попробуйте 5819, мне кажется пойдут. В сущности его задача не пустить 5В на вход.
Ответил наконец то хозяин схемы:
1N5819 junction capacitance is 110pF. Taking into account the pull-up resistance of 10kOhm this gives limiting clock frequency ~100kHz. If you need higher clocks you could use lower resistors connected in parallel (1kOhm means ~1MHz) but this leads to increased power ripples. Or you could use 1N4005...4007 (8pF junction capacitance).
Пасиб, про скорость не подумал.
Как всегда, купил 4006 - искал резистор и наткнулся на десяток 4007.
Ура - отлично работает :)
Прошаманил два дня.... Вот это помогло.... Инициализация проходит...
Arduino 2560 R3 + Ethernet Shield R3
The ethernet w5100 SPI Slave Select is digital pin 10. HIGH is disabled. LOW is enabled.
The microSD SPI slave select is digital pin 4. HIGH is disabled. LOW is enabled.
To communicate with the SD card, disable the w5100 SPI (pin 10 HIGH) and enable SD SPI (pin 4 LOW).
To communicate with the w5100 ethernet IC, disable SD SPI (pin 4 HIGH) and enable the w5100 SPI (pin 10 LOW).
Доброго времени суток! Уменя проблема такого характера. подключен sd shield, иницализация sd проходит нормально при подключении через usb. Когда подлючаешь 12вольт инициализация sd не проходит. Подскажите в чем может быть проблемма?
Так как вы сочли неважным написать что у вас за плата и что за шилд, то предположить можно, например, это:
Прошу прощение плата Arduino mega 2560 и sd подключино vcc к 5в
Попробуйте измерить напряжение на выводе 5V, когда подключаете блок питания.
не буду плодить темы..
господа, приобрел дисплей QVGA 240*320, вот ссылка
http://ru.aliexpress.com/item/Wholesale-1PC-2-2-Inch-240-320-Dots-SPI-TFT-LCD-Serial-Port-Module-Display-ILI9341/1961375225.html?isOrigTitle=true
на платке имеется картридер, так вот уперся - не получается его запустить.
использую мегу2560, сам дисплей цеплял через 561ПУ4, коннектил таким образом
MISO - 50, дисплей работает и без него
LED - 3,3v
SCK - 52
MOSI - 51
D/S - 49
RST - 48
CS - 53
библиотеку использую Adafruit.
теперь пытаюсь запустить картридер, перепробовал уже много чего..
питание у них общее3,3v
SCK - 52, так-же как и дисплей
MISO - 50, так-же как и дисплей
MOSI - 51, так-же как и дисплей
и наконец CS, вот здесь уже что только не пробовал.. 53, 10, 4, 8 и т.д.
в файле Sd2Card.h номера пинов менял,
строку pinMode(53, OUTPUT); добавлял, пины в ней менял
в общем ничего не выходит.
так вот сам вопрос, именно с этим дисплеем и картридером на нем кто нибудь сталкивался?
может пригодиться кому..
разобрался с этим дисплеей и SD модулем на нем, QVGA 240*320.
на плате резисторы по 1 кОму на mosi, miso и scr установлены, поэтому подключать нужно было не перекидывая на 3.3v, cs на 10 ногу (указываем сами). Все прямо на мегу, паралельно выводам от дисплея, которые необходимо преобразовать с 5v на 3.3v