我正在查询 ADXL362 数字输出 MEMS 加速度计 的轴数据,它以两个 8 位寄存器的形式保存,这两个寄存器结合起来给出一个 12 位值,我正在尝试弄清楚如何结合这些值(value)观。我从来都不擅长按位操作,因此将不胜感激任何帮助。我想它是这样的:
number = Z_data_H << 8 | Z_data_L;
number = (number & ~(1<<13)) | (0<<13);
number = (number & ~(1<<14)) | (0<<14);
number = (number & ~(1<<15)) | (0<<15);
number = (number & ~(1<<16)) | (0<<16);
ADXL362 data sheet (第 26 页)
Z轴数据寄存器
最佳答案
你的第一行应该是你需要的:
int16_t number;
number = (Z_data_H << 8) | Z_data_L;
符号扩展位意味着您可以像读取 16 位带符号整数一样读取该值。 值 绝不会超出 12 位整数的范围。为了正确处理负值,请务必保持这些位不变。
关于c - 在 C 中将两个 8 位寄存器读入 ADXL362 的 12 位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51407372/