· 

Seeeduino XIAOを使ってみる 2

Seeeduino XIAOでSPIを撃ってみたいと思います。

によると、

#define SPI_CS   7

#define SPI_MOSI 10

#define SPI_CLK  8

#define SPI_MISO 9

な感じでいけそうです。

参考ページによるとSPI.begin():だけでもいけそうですが、少し真面目に記述してみます。参考ページの下のほうにある回路図を見てみると

D9(MISO)<-pin10<-Sercom0PAD1

D10(MOSI)<-pin11<-Sercom0PAD2

D8(SCK)<-pin12<-Sercom0PAD3

 

となっているようです。

ということは、

SPIClass mySPI(&sercom0,SPI_MISO,SPI_CLK,SPI_MOSI,SPI_PAD_2_SCK_3,SERCOM_RX_PAD_0);

となるのでしょう。では、スケッチはこんな感じで。

  1. #include "SPI.h"
  2.  
  3. #define SPI_CS   7
  4. #define SPI_MOSI 10
  5. #define SPI_CLK  8
  6. #define SPI_MISO 9
  7.  
  8. SPIClass mySPI(&sercom0,SPI_MISO,SPI_CLK,SPI_MOSI,SPI_PAD_2_SCK_3,SERCOM_RX_PAD_0);
  9. void setup() {
  10.   pinMode(SPI_CS,OUTPUT);
  11.   mySPI.begin();}
  12.  
  13. uint8_t i=0;
  14. void loop() {
  15.   digitalWrite(SPI_CS,LOW);
  16.   mySPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
  17.   mySPI.transfer(i++);
  18.   mySPI.endTransaction();
  19.   digitalWrite(SPI_CS,HIGH);
  20.   delay(10);
  21. }

 

よしきた