Arduino 当sd卡添加到SPI总线时,为什么nrf8001蓝牙芯片停止工作?

Arduino 当sd卡添加到SPI总线时,为什么nrf8001蓝牙芯片停止工作?,arduino,sd-card,spi,Arduino,Sd Card,Spi,我正在进行一个arduino项目,在该项目中,我使用了一个nrf8001蓝牙转接板和一个SD卡转接板。两个芯片都使用SPI,所以我应该能够将它们链接到同一条总线上。它们各自都能正常工作,但只要我将MISO引脚连接到两个芯片上,蓝牙就无法启动广告或与arduino通信 我真的不知道从哪里开始。我尝试将两个SS引脚都设置为arduino代码的输出,只是为了确保这一点,但这并没有改变任何事情 这是我用来测试它的 #include <SPI.h> #include <SD.h>

我正在进行一个arduino项目,在该项目中,我使用了一个nrf8001蓝牙转接板和一个SD卡转接板。两个芯片都使用SPI,所以我应该能够将它们链接到同一条总线上。它们各自都能正常工作,但只要我将MISO引脚连接到两个芯片上,蓝牙就无法启动广告或与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.
Advertising started

是否有任何引脚或外围设备共享?@domen MISO、MOSI和SCK引脚共享,但它们都有自己的芯片选择引脚。您可以使用示波器或逻辑探针(或至少是伏特计,甚至LED)来确认
CS
是否按预期工作。你也可以只在其他断开连接的CS上尝试上拉,然后看看BT/SD是否会干扰另一个。是的,CS引脚似乎工作正常。即使我的sd卡上有CS,但蓝牙芯片总是拉高,似乎SPI总线共享在sd卡上很棘手(基本上,CS高时它不是完全不活动的)。如果有帮助,请参阅和链接文章。是否有任何管脚或外围设备共享?@domen MISO、MOSI和SCK管脚是共享的,但它们都有自己的芯片选择管脚。您可以使用示波器或逻辑探针(或至少是伏特计,甚至LED)来确认两个
CS
是否按预期工作。你也可以只在其他断开连接的CS上尝试上拉,然后看看BT/SD是否会干扰另一个。是的,CS引脚似乎工作正常。即使我的sd卡上有CS,但蓝牙芯片总是拉高,似乎SPI总线共享在sd卡上很棘手(基本上,CS高时它不是完全不活动的)。如果有帮助,请参阅和链接文章。
Initializing SD card...initialization done.
Advertising started