增加传感器采样率,通过I2C连接

时间:2015-02-16 19:32:39

标签: c++ raspberry-pi sensor gyroscope i2c

我正在使用Raspberry Pi与I2C通信MPU6050传感器。 说,我有一个循环读取传感器数据的代码。要计算循环速度,我这样做:

的伪代码

for (;;) {
    I2CInterface.getSensorData(device address, register address, data);
    oldTime = currentTime;
    clock_gettime(CLOCK_REALTIME, &currentTime);
    dt = currentTime - oldTime;
    some easy calculations envolving dt like multiplying
    fprintf(f, "%7d \n", dt);
}

我得到的是大约0.0017-0.0018秒,大约是580-550赫兹,这对我来说还不够。

如果我在没有I2CInterface.getSensorData,乘法和fprintf线的情况下运行相同的代码,我会得到50MHz左右。 频率在如此巨大的数量?通过I2C读取寄存器需要很长时间吗?计算部分的时间已经过去了吗? fprintf导致延迟?

1 个答案:

答案 0 :(得分:1)

I2C通常很慢 - 时钟速率从100kHz开始,此器件的最大时钟频率为400kHz。在100kHz时,吞吐量与piddly RS232相当。交换20个字节就足以让你降低到600Hz。

检查电路板与MPU6050之间的数据交换量,并尝试估算给定时钟频率的速度。验证您的I2C时钟速率设置。