Проблема с подключением SD карты.
- Войдите на сайт для отправки комментариев
Чт, 15/08/2019 - 11:34
Код:
#include <SPI.h> #include <SD.h> void setup() { Serial.begin(9600); while(!Serial); pinMode(4, OUTPUT); Serial.println(SD_CHIP_SELECT_PIN); Serial.println(SPI_MOSI_PIN ); Serial.println(SPI_MISO_PIN ); Serial.println(SPI_SCK_PIN ); if(!SD.begin(4)){ Serial.println("SD-card not found"); return; } } void loop() { }
Вывод:
17
16
14
15
SD-card not found
Распиновка китайского аналога:
Почему SD_CHIP_SELECT_PIN принимает значение "17", если на плате даже нет такого пина?
потому что вы запрашиваете его до процедуры SD.begin(), в этот момент никакого SD_CHIP_SELECT_PIN в системе еще нет вовсе
а почему SD-card not found?
Написал "Serial.println(SD_CHIP_SELECT_PIN);" после "SD.begin(4)". SD_CHIP_SELECT_PIN всёравно равен 17
а почему SD-card not found?
Это, как говорится в анекдоте, уже второй вопрос.
Причин может быть много. Результат SD.begin() зависит не только от подключения модуля, но и от того, вставлена ли карта, правильно ли она отформатирована и есть ли доступ к корневой файловой системе
Написал "Serial.println(SD_CHIP_SELECT_PIN);" после "SD.begin(4)". SD_CHIP_SELECT_PIN всёравно равен 17
и что с того? Вы в библиотеку заглядывали? Дефайн SD_CHIP_SELECT_PIN используется как значение по умолчанию для cs_pin, который вы переопределяете, когда запускаете begin() с параметром.
Я в ответе #1 не вполне точно написал - это значение до begin() не неопределено, оно установлено по умолчанию. В момент запуска процедуры begin вы его переопределяете на нужное вам и с этим новым значением работаете. Значение SD_CHIP_SELECT_PIN в библиотеке в дальнейшем не используется и остается тем же - по умолчанию - 17.
То, что такого пина на платне нет - ничего не значит, он просто не выведен на внешний контакт, а на чипе он есть.