我有一个带2个ADXL345加速度计的Raspberry Pi,我想最大化两者的数据采样率。当我在互联网上搜索时,我很感兴趣在Raspberry Pi论坛(https://www.raspberrypi.org/forums/viewtopic.php?t=254552)上找到显示此代码的人,在此示例中他使用两个加速度计:
import time
import Adafruit_ADXL345
accel1 = Adafruit_ADXL345.ADXL345()
accel2 = Adafruit_ADXL345.ADXL345(address=0x1d, busnum=1)
print('Printing X, Y, Z axis values, press Ctrl-C to quit...')
cordinates = []
import time
start_time = time.time()
NUM_OF_SEC_TO_RUN = 10
while time.time()<=start_time+NUM_OF_SEC_TO_RUN:
x1, y1, z1 = accel1.read()
x2, y2, z2 = accel2.read()
cordinates.append([x1,y1,z1,x2,y2,z2,time.time()])
import csv
with open('02.txt', 'a') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(cordinates)
稍后,他说该部分
x1, y1, z1 = accel1.read()
x2, y2, z2 = accel2.read()
cordinates.append([x1,y1,z1,x2,y2,z2,time.time()])
是加速度计降低采样率的最可能原因,从而降低了读取速率并延迟了数据采集。
他说,
执行上述三行代码的平均时间为0.002121秒。这是否意味着由于i2c和Raspberry pi而不是传感器而导致读取能力受到限制?还是因为我的代码?
我也想知道同样的问题,但是我要提出不同的看法。有没有一种方法可以缩短上述部分,从而有可能减少延迟并提高数据采样率?也就是说,有没有办法使它成一行?据我所知,这家伙的话题没有得到回应,也没有任何有帮助的结论性答复。
如果没有办法回答这个问题,那么我提出一个问题:是否有办法提高Raspberry Pi 3 B +上I2C的数据采样速度,或者可以为SPI复制此代码?通讯?我知道SPI通信比I2C快,但我不确定如何在Raspberry Pi的Python上实现它。如果这篇文章过长,我深表歉意。
ADXL345数据手册说,使用快速i2c的最快采样率为800Hz。需要SPI以获得更快的采样率-高达3200Hz。
Adafruit_ADXL345
库似乎仅支持i2c。并且已弃用。 Adafruit Blinka库支持SPI,但是您必须滚动自己的ADXL345接口。