我刚刚使用i2c从PIC单片机(dsPIC33)实现了ADXL345加速度计的成功读取。到目前为止我所做的就是正确读取设备ID,这是一个字节。
之前使用ADXL345的任何人都知道从任何轴,X,Y或Z读取数据会被分成两个字节,例如'DATAX0'和'DATAX1'。数据表还明确指出“为确保数据一致性,建议使用多字节读取从ADXL345中检索数据”,因此需要将每个轴的两个字节收集在一起。
我的问题是,对于i2c,当每个轴的两个字节由两个不同的寄存器表示时,我该怎么做?
上图显示了i2c传输所需的过程。为了从加速度计读取,我们正在查看底部的两个图表,我上面粘贴的数据表引用建议我使用底部图形(多字节),但正如我所说的那样,两个字节有两个不同的寄存器值(分别为DATAX0和DATAX1的0x32和0x33)。
如何在一次抓取中从一个轴获取数据?我看到这样做的唯一方法是使用一个寄存器地址进行单字节读取,然后使用第二个寄存器地址再次进行读取,然后将两者合并以获得一个轴数据。
这个问题也适用于从同一i2c总线上的各种不同设备收集数据,这些设备也有不同的寄存器。
干杯!
答案 0 :(得分:4)
您只需在0x32执行2字节读取,设备将在其响应中放置0x32和0x33的值。