Connect the FSM-9 with an arduino

22 views
Skip to first unread message

Adrian Cuellar

unread,
Aug 29, 2018, 12:36:33 PM8/29/18
to libfreespace

Hello everyone.

I am trying to connect the FSM-9 with an arduino. Through the SPI interfaces. I recive the following line of the FSM-9 on the monitor serial. 
Has anyone used the SPI interface on this module. The arduino code i have is as below.

6 22 0 4 9 194 3 3 129 162 152 0 15 0 0 0 0 0 0 0 1 0

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

#include <SPI.h>

const int PIN_RR = 9;
const int PIN_SS = 8;
byte dataRead = 0x00;

void setup() {
  digitalWrite(PIN_SS,HIGH);
  Serial.begin(115200);
  SPI.begin();
  pinMode(PIN_RR, INPUT);
  pinMode(PIN_SS, OUTPUT);
  delay(1000);

//BOOT INFO
  Serial.println("Waiting for boot...");
  while(digitalRead(PIN_RR) == HIGH);
  digitalWrite(PIN_SS,LOW);
  SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE3));
  for(int i = 0; i < 2; i++){
    dataRead = SPI.transfer(0x00);
    Serial.print(dataRead);
    Serial.print("\t");
  }
  int dataLength = dataRead;
  while(dataLength > 2){
    dataRead = SPI.transfer(0x00);
    Serial.print(dataRead);
    Serial.print("\t");
    dataLength--;
  }
  digitalWrite(PIN_SS,HIGH);
  SPI.endTransaction();
  Serial.println();
  Serial.println("Boot Complete");
  delay(1000);

//ID REQUEST
  Serial.println("ID Request");
  digitalWrite(PIN_SS,LOW);
  while(digitalRead(PIN_RR) != LOW);
  SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE3));
  SPI.transfer(0x07);
  SPI.transfer(0x06);
  SPI.transfer(0x04);
  SPI.transfer(0x00);
  SPI.transfer(0x09);
  SPI.transfer(0x00);
  digitalWrite(PIN_SS,HIGH);
  SPI.endTransaction();
  delay(1000);

  Serial.println("Waiting for response...");
  while(digitalRead(PIN_RR) != LOW);
  digitalWrite(PIN_SS,LOW);
  SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE3));
  for(int i = 0; i < 2; i++){
    dataRead = SPI.transfer(0x00);
    Serial.print(dataRead);
    Serial.print("\t");
  }
  dataLength = dataRead;
  while(dataLength > 2){
    dataRead = SPI.transfer(0x00);
    Serial.print(dataRead);
    Serial.print("\t");
    dataLength--;
  }
  digitalWrite(PIN_SS,HIGH);
  SPI.endTransaction();
  Serial.println();
  delay(1000);

Serial.println("End Setup");
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(PIN_RR) == LOW){
    digitalWrite(PIN_SS,LOW);
    SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE3));
    for(int i = 0; i < 2; i++){
      dataRead = SPI.transfer(0x00);
      Serial.print(dataRead);
      Serial.print("\t");
    }
    int dataLength = dataRead;
    while(dataLength > 2){
      dataRead = SPI.transfer(0x00);
      Serial.print(dataRead);
      Serial.print("\t");
      dataLength--;
    }
    digitalWrite(PIN_SS,HIGH);
    SPI.endTransaction();
    Serial.println();
  }
  delay(50);
}
 
Reply all
Reply to author
Forward
0 new messages