de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
trset test
trset test
質問

ATMEL SAMD11 SPI(スレーブ)Arduino(マスタ)

私はAtmel SAMD11 XPLAINED PROとarduinoをSPIを使ってお互いに話すようにしています。私はマスターとしてarduinoを設定しました。SAMD11は奴隷です。 ATMELには、次のコードがあります。

http://asf.atmel.com/docs/latest/samd21/html /asfdoc_sam0_sercom_spi_slave_callback_use.html

本質的に、マスターがデータを送信し、データを期待どおりに比較し、それに応じてLEDを更新するまで待機します。 arduino側では、私は以下を持っています:

#include 

#define BUF_LENGTH 20
int slave_select = 10;

void setup (void)
{
 //Initialize serial for DEBUG.
  Serial.begin(9600);
  pinMode (slave_select, OUTPUT);
  digitalWrite(slave_select, HIGH); //ensure SS stays high for now
 //Put SCK, MOSI, SS pins into output mode
 //also put SCK, MOSI into LOW state, and SS into HIGH state.
 //Then put SPI hardware into Master mode and turn SPI on
  SPI.beginTransaction (SPISettings (4000000, MSBFIRST, SPI_MODE0)); //4 MHz clock, MSB first, mode 0
 //Master initialized.
  Serial.println("Master Initialized");
} //end of setup

void loop (void)
{
  static uint8_t buffer_expect[BUF_LENGTH] = {
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
     0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13
  };
 //enable Slave Select
  digitalWrite(slave_select, LOW);   //SS is pin 10

  //write the 20 bytes
  for (int I=0;I<20;I++)
  {
    SPI.transfer(buffer_expect[I]); //write data byte
    delay(20);
  }

 //disable Slave Select
  digitalWrite(slave_select, HIGH);

  delay (1000); //1 seconds delay 
} //end of loop

私がコードを実行すると、SAMD11のLEDは更新されません。つまり、arduinoコードの書き込みにもかかわらず、データの送信を待っていて、受信していません。ハードウェア側では、両方のボードにGNDを接続し、SAMのVCCをarduinoの5Vに接続し、SPI_SS_A、MOSI、MISOおよびSCKをarduinoのピン10,11,12および13にそれぞれ接続します。

-1 2016-03-14T17:36:48+00:00 1
trset test
trset test
編集された質問 15日 3月 2016 в 3:02
Arduino
spi
DaffyDuc
14日 3月 2016 в 6:52
2016-03-14T18:52:24+00:00
さらに
ソース
編集
#56788797

SSピンをコード内の任意の場所に出力するように設定していません。

あなたがリンクしているarduinoのページには、

AVRベースのボードのスレーブセレクト(SS)ピンについての注意

     

すべてのAVRベースのボードには、SSピンがあります。   外部マスターによって制御されるスレーブ。このライブラリは、   マスタモードのみで、このピンは常にOUTPUTとして設定する必要があります   SPIインタフェースを自動的にスレーブモードにすることができます。   ライブラリを動作不能にします。しかしながら、それは可能である   任意のピンをデバイスのスレーブセレクト(SS)として使用できます。例えば、   Arduinoイーサネットシールドはピン4を使用してSPI接続を制御します   オンボードのSDカードに接続し、ピン10は   イーサネットコントローラ。

あなたがリンクしている他のページのティーンズボードに与えられているサンプルコードは次のとおりです:

pinMode (slaveSelectPin, OUTPUT); 

そのsetup()関数内にあります。

それがあなたの欠けているものです。
ピンをハイまたはローに設定すると、出力ではない場合は何も達成されません。

SPIは、同じMOSI/MISO/SCKピンを使用して多くの異なるデバイスにアクセスできますが、各スレーブデバイスにはマスターが個別に駆動する必要がある独自のスレーブ選択ピンがあります。 したがって、マスターにはさまざまなSSピンがあり、すべてが出力に設定されています。このための単一の標準ピンはありません。


0
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 15時間前
2
Hideo Nakagawa
登録済み 1日前
3
Sergiy Tytarenko
登録済み 3日前
4
shoxrux azadov
登録済み 5日前
5
Koreets Koreytsev
登録済み 1週間前
© de-vraag :年
ソース
arduino.stackexchange.com
ライセンス cc by-sa 3.0 帰属