Arduino не видит sd карту (модуль)
- Войдите на сайт для отправки комментариев
Вс, 14/10/2018 - 09:42
При запуске скетча пишет: Initializing SD card...initialization failed. Things to check:
Притом подключено всё правильно, карта отформатирована в FAT32, другая карта тоже не читается. В других темах/форумах пишут, что переподключили CS на другой пин и всё заработало, но мне это не помогло. Пробовал 10, 9, сейчас 4 пин. Заметил, что между 11-м пином и ножкой самого МК, отвечающей за MOSI есть падение напряжения. То же самое с 12-м и MISO. Так и должно быть?
Скетч cardinfo
Ну раз схемы подключения и указания на используемые компоненты - нет, то и помочь нечем. Тем более, что у других всё работает. Единственное, что могу посоветовать - обратиться к другим, к тем, у кого работает.
Le_mur - у меня настроение хорошее, поэтому распишу подробнее, что хотел сказать DIYMan
Чтобы что-то обсуждать, нужны скетч и схема.
Если вы думаете, что короткого указания "Скетч cardinfo" достаточно - то вы ошибаетесь. Если вы даже ради решения СВОЕЙ проблемы поленились указать в сообщении ссылку на скетч - то уж наивно рассчитывать, что мы полезем лихорадочно рыть гугль, чтобы помочь незнакомому лентяю. И к тому же скетчей с этим названием может быть много - как узнать, каким именно вы пользуетесь? Добавлю - что ссылка на скетч имеет смысл ТОЛЬКО если вы не меняли в нем ни буквы. Если же вы его редактировали - выкладывайте конкретно свой скетч в виде программного кода.
Теперь по схеме. Опять же - вы пишете "все подключено правильно". Такие заявления никого не интересуют, потому что им грош цена. Если бы вы все правильно подключили - у вас бы работало. А раз не работает - начит вам только кажется, что все подключено как надо. Так что схема (именно вашего включения) - абсолютно необходима.
/* SD card test This example shows how use the utility libraries on which the' SD library is based in order to get info about your SD card. Very useful for testing a card when you're not sure whether its working or not. The circuit: * SD card attached to SPI bus as follows: ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila ** CS - depends on your SD card shield or module. Pin 4 used here for consistency with other Arduino examples created 28 Mar 2011 by Limor Fried modified 9 Apr 2012 by Tom Igoe */ // include the SD library: #include <SPI.h> #include <SD.h> // set up variables using the SD utility library functions: Sd2Card card; SdVolume volume; SdFile root; // change this to match your SD shield or module; // Arduino Ethernet shield: pin 4 // Adafruit SD shields and modules: pin 10 // Sparkfun SD shield: pin 8 // MKRZero SD: SDCARD_SS_PIN const int chipSelect = 4; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.print("\nInitializing SD card..."); // we'll use the initialization code from the utility libraries // since we're just testing if the card is working! if (!card.init(SPI_HALF_SPEED, chipSelect)) { Serial.println("initialization failed. Things to check:"); Serial.println("* is a card 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."); } // print the type of card Serial.print("\nCard type: "); switch (card.type()) { case SD_CARD_TYPE_SD1: Serial.println("SD1"); break; case SD_CARD_TYPE_SD2: Serial.println("SD2"); break; case SD_CARD_TYPE_SDHC: Serial.println("SDHC"); break; default: Serial.println("Unknown"); } // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32 if (!volume.init(card)) { Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card"); return; } // print the type and size of the first FAT-type volume uint32_t volumesize; Serial.print("\nVolume type is FAT"); Serial.println(volume.fatType(), DEC); Serial.println(); volumesize = volume.blocksPerCluster(); // clusters are collections of blocks volumesize *= volume.clusterCount(); // we'll have a lot of clusters volumesize *= 512; // SD card blocks are always 512 bytes Serial.print("Volume size (bytes): "); Serial.println(volumesize); Serial.print("Volume size (Kbytes): "); volumesize /= 1024; Serial.println(volumesize); Serial.print("Volume size (Mbytes): "); volumesize /= 1024; Serial.println(volumesize); Serial.println("\nFiles found on the card (name, date and size in bytes): "); root.openRoot(volume); // list all files in the card with date and size root.ls(LS_R | LS_DATE | LS_SIZE); } void loop(void) { }Ардуина-то точно такая же, синяя, без доп.стабилизатора на 3.3V?
One is that they are strictly 3.3V devices and the power draw when writing to the card can be fairly high, up to 100mA (or more)! That means that you must have a fairly good 3.3V power supply for the card. Secondly you must also have 3.3V logic to interface to the pins. We've found that SD cards are fairly sensitive about the interface pins - the newest cards are edge triggered and require very 'square' transitions - things like resistor dividers and long wires will have a deleterious effect on the transition speed, so keep wires short, and avoid using resistor dividers for the 3.3V logic lines. We suggest instead using level shifters, such as HEF4050, 74LVX245 or 74AHC125 chips.
Такая же
Тогда читайте выше выдержку с сайта Adafruit
Хорошо