我一直在尝试实现 Raspberry Pi 2 B+(主)与 Arduino Uno Rev3(从)之间的 SPI 通信,但没有成功。
我使用了教程: http: //mitchtech.net/raspberry-pi-arduino-spi/
但是,那里提供的代码无法正常工作。我已经在整个互联网上搜索解决方案,但我找不到。我在网站上对 arduino 使用相同的代码,但我对树莓派使用以下代码:
/**
* Hello, SPI!
*/
#include <stdio.h> // printf()
#include <signal.h> // signal()
#include <errno.h> // strerro
#include <string.h>
#include <wiringPi.h> // GPIO
#include <wiringPiSPI.h> // SPI
int volatile interrupt = 0;
#define len_max 100
int volatile len = 0;
unsigned char buffer[len_max];
static const int speed = 500000;
int const CE0 = 0;
void sig_handler(int signo)
{
if(signo == SIGINT)
{
interrupt = 1;
}
}
void setup(void)
{
signal(SIGINT, sig_handler);
wiringPiSetupGpio () ;
if(wiringPiSPISetup(CE0, speed) < 0)
{
printf("SPI setup failed: %s\n", strerror(errno));
interrupt = 1;
}
printf("System ready.\n");
}
void loop(void)
{
memcpy(buffer, "Hello world!\n", sizeof buffer);
len = 12;
if( wiringPiSPIDataRW (CE0, buffer, len) < 0)
printf("Error while recieving mesage\n");
printf("Received mesage: %s \n", buffer);
delay(1000);
}
void close(void)
{
printf("Ending activities.\n");
}
int main(void)
{
setup();
while(!interrupt) loop();
close();
return 0;
}
这段代码只会给我返回垃圾。我不知道该怎么做。