繁体   English   中英

无论我读取哪个寄存器,SPI都会发送相同的数据

[英]SPI sends same data no matter which register I read

我正在一个机器人项目中,我有一个机器人,其中包括一些不同的传感器和一个Arduino。 我的传感器之一是通过SPI通信的陀螺仪。 我已经弄清楚了如何通信并从陀螺仪获取数据,但是问题是,在我获取了一些字节的数据之后,陀螺仪会反复发送相同的字节,无论我读取哪个寄存器。

串行控制台上来自陀螺仪的数据:

串行控制台上来自陀螺仪的数据

我不确定如何持续获取刷新的数据。 每次读取数据之前,我都会将SS引脚从HIGH下拉至LOW,但这似乎无济于事。

这是我的代码:

#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
}

链接到数据表

另外,作为一个小问题,我不确定应该按什么顺序将字节加在一起以获得正确的值。 而且,我不确定如何处理带符号的字节。

我在arduino论坛上找到了解决方案! http://forum.arduino.cc/index.php?topic=95901.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM