ISP与Raspberry Pi / Arduino SPI通信冲突

时间:2018-01-25 08:34:41

标签: arduino raspberry-pi spi

我正在研究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);
}

两个代码仅给出零。有什么想法吗?

0 个答案:

没有答案