Как установить CS-пин на Beetle BLE/Bluno Beetle на Adafruit SD Card Breakout - Ошибка инициализации!

Здравствуйте, у меня есть Beetle BLE (https://www.dfrobot.com/wiki/index. php/Bluno_Beetle_SKU:DFR0339), и я пытаюсь подключить коммутационную плату Adafruit MicroSD+ (https://www.adafruit .com/product/254) через соединения SPI. Я пробую следующий код, но у меня возникают проблемы с выбором контакта CS с помощью D4, так как у Beetle нет D10. Кто-нибудь знает, правильно ли я выбираю D4, сохраняя при этом контакт 10 в качестве выхода. Я продолжаю получать сообщение об ошибке инициализации! В моей настройке используется 6-контактная конфигурация ICSP:

5В --> 5В

МИСО --> ДЕЛАТЬ

SCK -->CLK

Земля --> Земля

MOSI --> DI

D4 --> СС

RST отсутствует

Вот мой код:

#include <SPI.h>

#include <SD.h>

File myFile;

void setup()
{
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  // На плате Ethernet Shield CS — это контакт 4. По умолчанию он установлен как выход.
  // Обратите внимание, что даже если он не используется в качестве вывода CS, аппаратный вывод SS
  // (10 на большинстве плат Arduino, 53 на Mega) нужно оставить как выход
  // или функции библиотеки SD не будут работать.
// pinMode(4, OUTPUT);
   pinMode(10, OUTPUT);
// цифровая запись(4, ВЫСОКИЙ); // Добавляем эту строку

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // открываем файл. обратите внимание, что одновременно может быть открыт только один файл,
  // так что вы должны закрыть это, прежде чем открывать другое.

  myFile = SD.open("test.txt", FILE_WRITE);

  // если файл открылся нормально пишем в него:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
  // закрываем файл:
    myFile.close();
    Serial.println("done.");
  } else {
    // если файл не открылся, вывести ошибку:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
  // после настройки ничего не происходит
}

, 👍0

Обсуждение

Схему жука Bluno можно найти здесь: https://www.dfrobot.com/product-1259.html Atmega подключена с rx и tx через резистор 4k7 к чипу bluetooth, а чип bluetooth подключен к usb. Шина spi на модуле не используется, поэтому с другими чипами проблем нет. Установка контакта 10 в качестве выхода и использование контакта 4 в качестве выбора микросхемы должны работать., @Jot


3 ответа


Лучший ответ:

1

Правильный ICSP был справа, ICSP1. Однако ориентация этих контактов была слева направо на ВЕРХНЕМ: SCK, 5V, MISO; слева направо ВНИЗУ: MOSI, RESET, GND. В Wiki они поменяли местами метки ICSP 1 и 2, но правильно в тексте ниже. https://www.dfrobot.com/wiki/index.php/Bluno_Beetle_SKU:DFR0339

Поэтому в коде не было ничего неправильного, только подключение к правильным контактам!

,

1

Заголовок ICSP метки на странице Wiki неверны. На схеме здесь разъем ICSP имеет ту же распиновку, что и другие платы Arduino. Легенда не соответствует картинке на вики-странице, но соответствует действительности:

  • ICSP1: Atmega 328P
  • ICSP2: CC2540

Заголовок ICSP является внутренним. Правильно на картинках. У вывода 1 на плате угол белого квадрата вокруг кеглей перекошен. Штыри слева направо первый ряд Eeset, CLK, MISO, второй ряд Земля, MOSI, 5 В.

схема платы в формате pdf

,

Привет, Юрай, спасибо за ответ. На этой странице много ссылок, включая ту, которую я вам отправил. Не могли бы вы прислать прямую ссылку на правильную диаграмму ICSP? Ценить это., @Conrad Addo

добавил в ответ, @Juraj

Юрай и @Jot, как это соответствует контактам на плате на этом рисунке? Я не знаю, как это сказать: [Пин-картинка ICSP](https://i.imgur.com/MQTGSIx.jpg), @Conrad Addo

отмечен один угол. это контакт 1 MISO, @Juraj

Извини, Юрай, я этого не вижу. Можно поподробнее о порядке и ориентации?, @Conrad Addo

я отредактировал ответ, @Juraj

Привет @Juraj. Сегодня вечером я припаял провода, но все равно получаю сообщение «Ошибка инициализации». Что касается контактов, как вы поняли, что схема на странице Wiki изначально неверна? PS: та же настройка работает на моем Arduino Pro Mini, но я определенно хочу, чтобы она работала на Beetle для моего проекта., @Conrad Addo

Я подключал ICSP-разъем AVR с помощью перемычек DuPont столько раз, что знаю распиновку без схемы. А плата Atmega 328 не может иметь другую распиновку разъема ICSP, потому что разъем программатора AVR не будет совпадать., @Juraj

Я все еще получаю сообщение об ошибке инициализации. Есть идеи, в чем может быть проблема? Я проверил свои провода, они такие, как вы сказали., @Conrad Addo

вопрос какой из двух заголовков Atmega. что с 3,3 В это не ICSP. в схеме это JP2. так что вполне возможно, что правильный заголовок - это правильный заголовок, @Juraj

Я отредактировал ответ. https://github.com/Arduinolibrary/DFRobot_Bluno_Bettle/raw/master/Bluno%20beetle%20V1.0%20layout%20ground.pdf, @Juraj

Да, я уже подключаюсь к правильному, который находится слева (ICSP2), так что, похоже, проблема здесь не в этом. Будут ли ориентация и порядок ICSP2 такими же, как у вашего AVR, или они могут отличаться?, @Conrad Addo

Может быть, проблема в коде, который я не делаю?, @Conrad Addo

право есть право. ICSP1. ICSP2 — это не ICSP., @Juraj

Протестировано с другими контактами ICSP1. Это определенно не сработало, поскольку скетч даже не вошел в setup(), потому что «Инициализация SD-карты...» не распечаталась. Спасибо за вашу постоянную помощь., @Conrad Addo

если плата не загружается, сброс подключается к земле. или короткое замыкание где-то есть, @Juraj

Привет, Юрай, правильный ICSP был справа, ICSP1. Однако ориентация этих контактов была сверху слева направо: SCK, 5V, MISO; слева направо ВНИЗУ: MOSI, RESET, GND. В Wiki метки ICSP 1 и 2 перепутаны, но в тексте ниже они верны. https://www.dfrobot.com/wiki/index.php/Bluno_Beetle_SKU:DFR0339, @Conrad Addo

тогда они не должны называть его заголовком ICSP, потому что вы не можете использовать с ним программатор ICSP AVR https://www.olimex.com/Products/AVR/Programmers/AVR-ISP-MK2/open-source-hardware, @Juraj

Я думал, что ICSP — это просто протокол и не имеет ничего общего с конкретным программистом AVR., @Conrad Addo

у программаторов есть кабель с разъемом 2х3, @Juraj

лол, позже я проверю твои выводы на своем устройстве, но спасибо за этот пост. Ух ты, их документация не только бесполезна, но и к тому же испорчена!, @Scott


0

Вот что я вижу на своем мультитестере:

CC2540 — это микросхема SMD, расположенная на той же стороне, что и контактные площадки ICSP. Atmega328p находится на противоположной стороне платы

,