【问题标题】:SPI sends same data no matter which register I read无论我读取哪个寄存器,SPI 都会发送相同的数据
【发布时间】:2018-06-17 23:44:52
【问题描述】:

我正在做一个机器人项目,我有一个机器人,其中包括几个不同的传感器和一个 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 到数据表

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

【问题讨论】:

    标签: arduino spi


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-01-10
      • 1970-01-01
      • 2014-10-15
      • 2021-06-17
      • 2020-07-15
      • 2018-09-25
      • 1970-01-01
      • 2019-11-07
      • 2017-05-07
      相关资源
      最近更新 更多