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);
}