我成功地连接了MMA-7455L传感器,我正在从它获取数据。不过我有一个问题如果有人能帮我的话。
有人能帮我理解这段代码吗?我用它来获取数据。
i2cbuf[1] = 0x00;
HAL_I2C_Master_Receive(&hi2c1, 0x1D<<1, &i2cbuf[1], 6, 10);
ax = -(i2cbuf[1]<<8 | i2cbuf[2]);
ay = -(i2cbuf[3]<<8 | i2cbuf[4]);
az = -(i2cbuf[5]<<8 | i2cbuf[6]);我正在获取数据,外坑是8位的。我知道我正在组合两个8位响应,使其成为16位响应。但我不明白的是它的负面部分。
提前谢谢你
发布于 2018-06-28 19:35:32
我的猜测是,返回的值是16位有符号整数(int16_t),因此读数的范围是-32767到0到+32767。无论是谁用您正在使用的加速度计示例代码设计了电路板,都希望这些值在电路板的法线方向上能够正确读取,所以他们否定了结果
例如:-(i2cbuf[1]<<8 | i2cbuf[2]);如果两个i2c值都是0xFF,你会得到0xFFFF,它是-1 (如果类型是int16)
否定它,你会得到+1,这应该表示对应用程序的正加速
https://stackoverflow.com/questions/51060295
复制相似问题