我有兴趣阅读RaspberryPi和Python的陀螺仪数据,但我对如何根据I2C时钟频率设置MPU6050(加速度计,陀螺仪; datasheet MPU6050)的采样率感到困惑,以避免读取数据错误(例如,在缓冲区中没有数据时读取或者在写入时读取速度更快,等等),知道每个度量都是16位字。
两个时钟之间是否有关系?
答案 0 :(得分:1)
我在大约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]