如何从传感器的FIFO寄存器(先进先出)中以二进制补码访问和解释数据?

时间:2017-03-10 19:30:38

标签: arduino sensor

我想从ADXL355传感器获取加速度数据。

enter image description here enter image description here

代码:

void readFIFO (){
    long data[3];
    byte data2 [9];

    digitalWrite(chipSelectPin, LOW);
    SPI.transfer( (FIFO<<1) | 1);
    for (int i = 0 ; i < 9; i++){
        data2[i] = SPI.transfer(0x00);
    }
    digitalWrite(chipSelectPin, HIGH);

    Serial.println("Byte data in hex and binary");
    for (int j = 0 ; j < 9 ; j++){
        Serial.print("element "+String(j) +": ");
        Serial.print(data2[j],HEX);
        Serial.print(" ");
        Serial.println(data2[j],BIN);
    }
    for (int z = 0 ; z < 3; z++){
        data[z] = ((data2[z*3]<<12) | (data2[z*3 +1] << 4) | (data2[z*3+2]  >>4));
    }
    Serial.println("concatenated values: ");
    for (int i = 0 ; i < 3 ; i++){
        Serial.println(data[i]);
    }
}

示例输出:

# Byte data in hex and binary

element 0: 8 1000
element 1: 75 1110101
element 2: F1 11110001
element 3: 3 11
element 4: E9 11101001
element 5: 60 1100000
element 6: 3E 111110
element 7: 7C 1111100
element 8: 30 110000

# concatenated values: 

-30881
16022
-6205

这些值是两个补码。这些是正确的值吗?如果不是我做错了什么?

0 个答案:

没有答案