我正在开发一个机器人项目,我有一个包含几个不同传感器和Arduino的机器人。我的一个传感器是通过SPI进行通信的陀螺仪。我已经想出了如何与陀螺仪进行通信和获取数据,但问题是,在我获得几个字节的数据后,陀螺仪只是反复发送相同的字节,无论我读取哪个寄存器。
串口控制台上陀螺仪的数据:
我不确定如何不断获取刷新的数据。在我读取数据之前,每次将SS引脚从高电平拉到低电平,但它似乎没什么帮助。
这是我的代码:
#include <SPI.h>
const int slavePin = 10;
// set up the speed, data order and data mode
SPISettings settings(3000000, MSBFIRST, SPI_MODE0); //mode_0
void setup() {
// set the Slave Select Pins as outputs:
SPI.beginTransaction(settings);
pinMode (slavePin, OUTPUT);
Serial.begin(9600);
// initialize SPI:
SPI.begin();
}
byte stat, val1, val2, result;
void loop() {
digitalWrite(slavePin, LOW);//select slave
SPI.transfer(0x08);//register to read
stat = SPI.transfer(0);//store data
val1 = SPI.transfer(0);
val2 = SPI.transfer(0);
result = val1 + val2;//combine the input data
Serial.print(stat);
Serial.print(":");
Serial.print(result);
// Serial.print(val1); //was sending data to console seperatly
// Serial.print(":");
// Serial.print(val2);
Serial.println();
digitalWrite(slavePin, HIGH);//deselect slave
}
Link到数据表
另外,作为一个小问题,我不确定我应该将字节加在一起以获得正确的值。而且,我不确定如何处理有符号的字节。