我正在研究Raspberry Pi 3和Arduino Nano之间的通信 . Raspberry使用ISP引脚对Arduino进行编程 . 之后,两者都应通过SPI协议进行全双工通信,使用Qt环境下的WiringPi库 . 问题是SPI只在从机和主机侧都返回0 .

ISP编程器是否可能与SPI协议冲突,即使不同时使用?

主码:

GpioMachine::GpioMachine(QObject *parent) :
QObject(parent){

  wiringPiSetupGpio();
  wiringPiSPISetup(0,1000000);

  pinMode(CE0_PIN,OUTPUT);
}

void GpioMachine::sendSPI(int channel, int cmd,int arg)
{// send 2 bytes to slave

  unsigned char buffer[2];

  buffer[0]=cmd;
  buffer[1]=arg;

  wiringPiSPIDataRW(channel,buffer,2);

  int val;
  val=QChar(buffer[0]).toLatin1();
  int val2;
  val2=QChar(buffer[1]).toLatin1();

  qDebug()<<"spi get:"<<val<<val2;
}

奴隶代码:

#include <SPI.h>
#include "pins_arduino.h"

// SPI interrupt routine
ISR (SPI_STC_vect)
{
   byte c=SPDR;
   Serial.println(c);
   SPDR=5;// random testing value to send to master;
}

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

  pinMode(MISO, OUTPUT);
  pinMode(SS,INPUT);

 // turn on SPI in slave mode
 SPCR |= _BV(SPE);
 SPI.attachInterrupt();

}

void loop()
{
  delay(10);
}

两个代码只给出零 . 任何的想法?