Проблема с подключением SD карты.

bepis666
Offline
Зарегистрирован: 15.08.2019

Код:

#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", если на плате даже нет такого пина?

 

b707
Offline
Зарегистрирован: 26.05.2017

bepis666 пишет:

Почему SD_CHIP_SELECT_PIN принимает значение "17", если на плате даже нет такого пина?

 

потому что вы запрашиваете его до процедуры SD.begin(), в этот момент никакого SD_CHIP_SELECT_PIN в системе еще нет вовсе

bepis666
Offline
Зарегистрирован: 15.08.2019

а почему SD-card not found?

bepis666
Offline
Зарегистрирован: 15.08.2019

Написал "Serial.println(SD_CHIP_SELECT_PIN);" после "SD.begin(4)". SD_CHIP_SELECT_PIN всёравно равен 17

b707
Offline
Зарегистрирован: 26.05.2017

bepis666 пишет:

а почему SD-card not found?

Это, как говорится в анекдоте, уже второй вопрос.

Причин может быть много. Результат SD.begin() зависит не только от подключения модуля, но и от того, вставлена ли карта, правильно ли она отформатирована и есть ли доступ к корневой файловой системе

b707
Offline
Зарегистрирован: 26.05.2017

bepis666 пишет:

Написал "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.

То, что такого пина на платне нет - ничего не значит, он просто не выведен на внешний контакт, а на чипе он есть.