i2c設定ファイルを変更して、現在の転送速度が300000になるようにしました。再起動し、i2cボーレートチェッカーを起動しました。 sudo ./checkbr しかし、私が得たのは一般的なボーレート設定(デフォルト)のようです。次にstartxを実行してGUIをロードします。端末を開き、同じ手順に従います。 sudo ./checkbrの後、所望の転送速度= 300000を得た。 xサーバーをロードせずに300000を取得できないのはなぜですか?また、i2c_bcm2708を削除してボーレート= 300000で再度追加しようとしましたが、startxを実行しない限り、結果はありません。それが重要な場合は、i2cでデータを読み取るために繰り返されるC ++コードスニペットを使用して転送速度を確認し、データを読み取るのにかかる時間を測定します。 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つのパラメーターは、バイト数と保管場所です。