0

私は、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;
 }

このコードはゴミを返すだけです。どうすればいいのかわかりません。

4

2 に答える 2

0

コードを実行したときに得られる出力を投稿すると、問題の原因を突き止めるのに役立ちます。また、参照しているチュートリアルでは、pi モデル B で回路図のセットアップを使用しているようです。b+ には 15 個の追加の gpio ピンがあり、したがってピン配置が異なると思われるため、すべての物理接続が適切であることを再確認することをお勧めします。作る。

于 2015-08-19T22:24:31.220 に答える