Почему чип Bluetooth nrf8001 перестает работать при добавлении SD-карты в шину SPI? - PullRequest
1 голос
/ 07 мая 2019

Я работаю над проектом Arduino, в котором я использую плату Bluetooth для nrf8001 и плату SD-карт.Оба чипа используют SPI, поэтому я могу просто связать их с одной шиной.Они оба прекрасно работают сами по себе, но как только я подключаю контакты MISO к обоим микросхемам, Bluetooth не может вообще начать рекламу или связь с Arduino.

Я действительно не уверен, с чего начатьВот.Я попытался установить оба вывода SS для вывода из кода Arduino, просто чтобы быть уверенным, но это ничего не изменило.

Вот то, что я использую, чтобы проверить это

#include <SPI.h>
#include <SD.h>
#include "Adafruit_BLE_UART.h"

#define ADAFRUITBLE_REQ 10
#define ADAFRUITBLE_RDY 2
#define ADAFRUITBLE_RST 9

Adafruit_BLE_UART uart = Adafruit_BLE_UART(ADAFRUITBLE_REQ, ADAFRUITBLE_RDY, ADAFRUITBLE_RST);

void aciCallback(aci_evt_opcode_t event)
{
  switch(event)
  {
    case ACI_EVT_DEVICE_STARTED:
      Serial.println(F("Advertising started"));
      break;
    case ACI_EVT_CONNECTED:
      Serial.println(F("Connected!"));
      break;
    case ACI_EVT_DISCONNECTED:
      Serial.println(F("Disconnected or advertising timed out"));
      break;
    default:
      break;
  }
}

void rxCallback(uint8_t *buffer, uint8_t len)
{
  for(int i=0; i<len; i++)
   Serial.print((char)buffer[i]);
}

void setup() {
  Serial.begin(9600);

  Serial.print("Initializing SD card...");

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

  uart.setRXcallback(rxCallback);
  uart.setACIcallback(aciCallback);
  uart.begin();
}

void loop() {
  uart.pollACI();
}

И вотнастройка на макете

Настройка проводки макета

Выход последовательного монитора:

Initializing SD card...initialization done.

Но если бы Bluetooth работал правильно, он был бы

Initializing SD card...initialization done.
Advertising started
...