Nano, SD-card и SPI

Тема в разделе "Arduino & Shields", создана пользователем ivpo, 10 сен 2017.

Метки:
  1. ivpo

    ivpo Нуб

    Добрый день

    Имеется Nano, к которой по SPI подключен CAN-шилд.
    К ней же требуется подключить ещё и модуль для SD-карты (например, Тройка-модуль от Амперки).
    Вопросы:
    1) Как мне подключить модуль к SPI в качестве второго устройства? Как я понимаю, MISO, MOSI и SCK будут общие, а CS - разные, так?
    2) Также к Nano подключен GPIO expander. Можно ли подключить SD модуль к нему напрямую?

    Заранее спасибо!
     
  2. rkit

    rkit Гуру

    Да.
    Можно ss на него вынести. Остальное незачем.
     
  3. ivpo

    ivpo Нуб

    Сегодня пришел SD-адаптер от Амперки.
    Пробую в одиночном режиме, чтобы потом использовать два SPI-устройства на одной Nano.
    (вторым устройством будет MCP2515_CAN).

    Проверяю реакцию на сигнал по CS в одиночном режиме:

    Код (C++):

    01 #include <SD.h>
    02 #include <SPI.h>
    03 #define SD_CS_PIN 8
    04
    05 File TF1;
    06 int i = 0;
    07 String fname = "test3.txt";
    08
    09 void setup() {
    10    Serial.begin(9600);
    11    pinMode(SD_CS_PIN, OUTPUT);
    12    if (!SD.begin(SD_CS_PIN)) {
    13      Serial.println("Card failed, or not present");
    14      return;
    15    } else {
    16    Serial.println("Card initialized.");
    17    }
    18   }
    19
    20 void loop() {
    21
    22    digitalWrite(SD_CS_PIN, HIGH);
    23    TF1 = SD.open(fname, FILE_WRITE);
    24    TF1.println("CS HIGH");
    25    TF1.close();
    26
    27    digitalWrite(SD_CS_PIN, LOW);
    28    TF1 = SD.open(fname, FILE_WRITE);
    29    TF1.println("CS LOW");
    30    TF1.close();
    31
    32    delay(2000);
    33 }
    В файле - и "CS HIGH" и "CS LOW"

    Что-то делаю неправильно или это адаптер игнорирует управление по CS?
     
  4. rkit

    rkit Гуру

    Вам это вручную делать не надо. Вы в библиотеку уже передали номер пина.
     
    arkadyf нравится это.