我有兴趣通过RaspberryPi和Python读取陀螺仪数据,但对如何根据I2C时钟频率设置MPU6050(加速度计,陀螺仪; datasheet MPU6050)的采样率感到困惑,以免错误读取数据(例如,在读取时缓冲区中没有数据,或者没有读取速度比写入速度更快,依此类推),因为每个度量都是一个16位字。

两个时钟之间有关系吗?

最佳答案

大约18个月前,我用相同的芯片做了一个项目。从那时起,我再也没有接触过PI,所以我不知道在此期间情况可能会发生什么变化。无论如何,我都使用smbus读取了芯片。我发现一些困难的方法,与读取i2c块相比,读取单个寄存器的速度非常慢。另外,您必须关闭睡眠模式。抱歉,我没有关于时钟时间的任何信息,但是如果您只是试图获得良好的读取循环,则可能会有所帮助。您不必使用numpy,但是如果您打算操作样本,这将非常有用。 GL / HF。

import smbus
import numpy
# initialize
bus = smbus.SMBus(1)
# turn off sleep mode
bus.write_byte_data(0x68,0x6B,0x00)

# reading in data (this can be in a loop or function call)
sample = numpy.empty(7)
r = bus.read_i2c_block_data(0x68, 0x3B, 14)
sample[0] = (r[0]<<8)+r[1]
sample[1] = (r[2]<<8)+r[3]
sample[2] = (r[4]<<8)+r[5]
sample[3] = (r[6]<<8)+r[7]
sample[4] = (r[8]<<8)+r[9]
sample[5] = (r[10]<<8)+r[11]
sample[6] = (r[12]<<8)+r[13]

关于python - MPU6050中I2C工作频率与采样率设置之间的关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26738129/

10-12 22:57