[ADXL345 I2C(Beaglebone Black)上的加速度计数据使用

问题描述 投票:0回答:1

背景信息

我正在尝试确保能够在同一I2C总线上运行两个ADXL345加速度计。

据我了解,该总线在快速模式下可以传输高达40万比特/秒。

为了发送1个字节的数据,有20个额外的开销位。

每个加速度计读数有6个字节(XLow,XHigh,YLow,YHigh,ZLow,ZHigh)

我需要使用两个加速度计每秒读取1000个读数

因此,我每秒使用的总数据为336k位/秒,这在我40万位/秒的限制内。

我不确定我是否正确地进行了这些计算。

问题:

我在i2c上每秒读取1000次的两个加速度计每秒传输多少数据?

accelerometer i2c beagleboneblack microprocessors
1个回答
0
投票
Start (*) | Device Address: 0x1D (7) | Write: 0 (1) | ACK (1) | Register Address: 0x31 (8) | ACK (1) | Repeat Start (*) | Device Address: 0x1D (7) | Read: 1 (1) | ACK (1) | DATA0 (8) | ACK(1) | DATA1 (8) | ACK (1) | ... | DATA5 (8) | NAK (1) | Stop (*)

如果将所有这些相加,将得到81 + 3位需要传输的数据。首先请注意,START,REPEAT START和STOP可能实际上并不需要花费一点时间,但为简单起见,我们可以假设它们确实花费了时间。还要注意的是,尽管设备地址只有7位,但您始终需要在READ / WRITE位后加上后缀,因此I2C事务始终为8位+ ACK / NAK,因此总共为9位。另请注意,I2C最大传输速率实际上定义了设备可以处理的最大SCK速度,因此在快速模式下,SCK最高为400KHz(因此最高为400Kbps,但是由于协议的原因,您在真实数据中获得的速度会更少)。因此,如果在传输过程中没有间隙或中断,则以400KHz的84位表示我们可以0.21 ms或〜4700个样本/秒的速度传输样本。]

由于您需要每1ms读取2个采样(2个加速度计,所以84位* 2 = 164位/采样或以1KHz采样速率采样164Kbps),因此对于快速模式I2C至少应该可行。但是,您将需要小心使用所有I2C控制器。根据您正在使用的软件层,可能很难足够快地发出I2C突发读取(即,在1毫秒内进行2次突发读取事务)。在加速度计上使用FIFO可以极大地满足延迟要求,这意味着您不必延迟1ms发出两次猝发读取,而最多可以延迟32ms发出64次猝发读取(因为您有2个加速度计)。但是由于您需要发出新的突发读取以读取下一个示例,因此您必须注意软件在调用您用来执行I2C事务的任何API之间引入的延迟。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.