我更改了 i2c 配置文件,因此当前波特率为 300000。我重新启动并启动 i2c 波特率检查程序。 sudo ./checkbr 但我得到的似乎是通常的波特率设置(默认)。然后我执行 startx 并加载 gui。我打开一个终端并执行相同的步骤。在 sudo ./checkbr 之后,我得到了所需的波特率 = 300000。为什么在没有加载 x 服务器的情况下我无法得到 300000?我还尝试删除 i2c_bcm2708 并使用波特率 = 300000 重新添加它,但仍然没有结果,除非我执行 startx。如果它很重要,我会使用一段 C++ 代码检查波特率,该代码循环从 i2c 读取数据并测量读取数据所需的时间。如果 X 服务器关闭,我的读取速度比 X 启动时慢 3 倍。这是代码。
for (;;) {
I2CInterface.readRegister(MPU6050_ADDRESS, MPU6050_RA_ACCEL_XOUT_H, 14, data);
oldTime = curTime;
clock_gettime(CLOCK_REALTIME, &curTime);
dt = ( (static_cast<int64_t>(curTime.tv_sec)*1000000000 + static_cast<int64_t> (curTime.tv_nsec)) - (static_cast<int64_t>(oldTime.tv_sec)*1000000000 +
static_cast<int64_t>(oldTime.tv_nsec)) ) /1000000000.0;
printf( "%7f \n", dt);
}
I2CInterface.readRegister 最后 2 个参数是字节数以及存储位置。