在ADXL345数字加速度计中注册地址



我对ADXL345数字加速度计中的寄存器感到困惑。

让我困惑的第一件事是,我必须在哪里写入数据来设置+/-2g的分辨率。我在数据表中没有发现任何关于这个寄存器的内容。

其次,有两个寄存器,其中存储X轴的测量值。如何从两个寄存器读取数据?我需要同时发送寄存器的地址吗?

首先让我感到困惑的是,我必须在哪里写入数据来设置+/-2g的分辨率。我在数据表中没有发现任何关于这个寄存器的内容。

您可以在数据表的第26页找到此信息(至少在数据表修订版E中(。范围由寄存器0x31(DATA_FORMAT(中的位0和1控制。

寄存器0x31-DATA_FORMAT(读/写(

DATA_FORMAT寄存器控制数据的显示到寄存器0x32到寄存器0x37。所有数据,除了±16 g范围内,必须夹住以避免侧翻。

SELF_TEST位

SELF_TEST位中的设置为1会向传感器,导致输出数据的偏移。值为0将禁用自检力。

SPI位

SPI位中的值1将设备设置为3线SPI模式,并且值0将设备设置为4线SPI模式。

INT_INVERT位

INT_INVERT位中的值0将中断设置为活动并且值1将中断设置为有效低。FULL_RES位

当此位设置为值1时,设备处于全分辨率模式,其中输出分辨率随着g范围的增加而增加由范围位设置以保持4mg/LSB比例因子。什么时候FULL_RES位设置为0,设备处于10位模式,并且范围比特确定最大g范围和比例因子。

调整位

正当位中的1的设置选择左正当(MSB(模式,并且设置为0选择具有符号扩展的右对齐模式。

范围位

这些比特设置g范围,如表21中所述。

表21。g量程设置

╔═════════╦══════════╗
║ Setting ║          ║
╠════╦════╣  g Range ║
║ D1 ║ D0 ║          ║
╠════╬════╬══════════╣
║ 0  ║ 0  ║ +/- 2 g  ║
╠════╬════╬══════════╣
║ 0  ║ 1  ║ +/- 4 g  ║
╠════╬════╬══════════╣
║ 1  ║ 0  ║ +/- 8 g  ║
╠════╬════╬══════════╣
║ 1  ║ 1  ║ +/- 16 g ║
╚════╩════╩══════════╝

因此,您要做的是读取寄存器0x31的当前值,屏蔽位0和1,设置您想要的值(根据表21(,然后将新值写入寄存器0x31。


其次,有两个寄存器存储X轴的测量值。如何从两个寄存器读取数据?我需要同时发送寄存器的地址吗?

否,您按顺序读取每个寄存器。

寄存器0x32保存x轴值的最低有效位,寄存器0x33保存x-轴值的最高有效位。它们结合在一起,形成一个x轴读数,精度为13(最大(位,采用二进制补码格式。如果只需要8位精度,则可以从寄存器0x33中只读取MSB,这将比读取两个寄存器略快。

数据表确实提出了一个你应该注意的额外建议:

建议对所有寄存器执行多字节读取,以防止顺序寄存器读取之间的数据发生变化。

多字节读取的具体方式各不相同,具体取决于您使用的是SPI还是I2C总线,但无论哪种方式,都在数据表中进行了描述。对于SPI:

要在一次传输中读取或写入多个字节多字节位,位于第一个字节传输中R/W位之后(图37至图39中的MB(。寄存器之后寻址和数据的第一个字节,每个后续的时钟集脉冲(八个时钟脉冲(使ADXL345指向下一个读或写寄存器。这种转变一直持续到时钟脉冲停止并且CS被解除断言。执行读取或写入在不同的非顺序寄存器上,CS必须被取消断言在传输和新寄存器之间必须寻址分别地

最新更新