从MMA7455L传感器i2c获取数据

时间:2018-06-27 10:19:54

标签: c stm32 i2c

我成功连接了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位响应。但是我不明白的是负号。

提前谢谢

1 个答案:

答案 0 :(得分:0)

我的猜测是,返回的值是16位带符号整数(int16_t),因此您的读数将是-32767到0到+32767。 谁使用您正在使用的加速度计示例代码设计电路板,都希望这些值能以电路板的正常方向正确读取,因此结果取反

例如:-(i2cbuf[1]<<8 | i2cbuf[2]); 如果两个i2c值都为0xFF,则得到0xFFFF,即为-1(如果类型为int16)

取而代之,您将获得+1,这应表示应用程序正加速运行