2

我刚刚使用 i2c 从 PIC 微控制器 (dsPIC33) 成功读取 ADXL345 加速度计。到目前为止,我所做的只是正确读取设备 ID,它是一个字节。

以前使用过 ADXL345 的任何人都知道,要从 X、Y 或 Z 轴中的任何一个轴读取数据,会分为两个字节,例如“DATAX0”和“DATAX1”。数据表还特别指出“为确保数据一致性,建议使用多字节读取来从 ADXL345 检索数据”,因此需要将每个轴的两个字节收集在一起。

我的问题是,对于 i2c,当每个轴的两个字节由两个不同的寄存器表示时,我该怎么做?

i2c 进程

上图显示了 i2c 传输所需的过程。要从加速度计中读取数据,我们正在查看底部的两个图表,我上面粘贴的数据表引用表明我使用了底部图表(多字节),但正如我所说,这两个字节有两个不同的寄存器值(DATAX0 和 DATAX1 分别为 0x32 和 0x33)。

如何一次抓取一个轴的数据?我看到这样做的唯一方法是用一个寄存器地址读取单字节,然后用第二个寄存器地址再次读取,然后将两者连接在一起以获得一个轴数据。

这个问题也适用于从同一 i2c 总线上的各种不同设备收集数据,这些设备也会有不同的寄存器。

干杯!

4

1 回答 1

4

您只需在 0x32 处读取 2 字节,设备会将 0x32 和 0x33 的值放入其响应中。

于 2013-03-14T18:51:34.863 回答