私は、Raspberry Pi 2 B+ (マスター) と Arduino Uno Rev3 (スレーブ) の間の SPI 通信を成功させずに実装しようとしましたが、成功しませんでした。
チュートリアルを使用しました: http://mitchtech.net/raspberry-pi-arduino-spi/
ただし、そこで提供されるコードは正しく機能しません。私はすでに解決策を求めてインターネット全体を検索しましたが、見つけることができませんでした。サイトの arduino には同じコードを使用していますが、raspberry pi には次のコードを使用しています。
/**
* 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;
}
このコードはゴミを返すだけです。どうすればいいのかわかりません。