• 締切済み

PIC18FとADXL345間のI2C通信

現在PIC18F26K22のI2C機能を用いて、ADXL345(秋月電子の加速度センサモジュール)の値を読み込むプログラムを作成しています。コンパイラはXC8です。 http://www.geocities.jp/zattouka/GarageHouse/micon/MPLAB/16F1827/Acceleration/Acceleration.htmのサイトのプログラムをほぼそのまま使用して(ピンの定義などは変更)動作させたところ、DEVID(0Xe5)が返ってきた後に、センサーの値らしきものが返ってきたため、正常に動作しているものと思われました。 しかし、動作確認していくとどうも値が安定しないため、I2Cの波形を確認してみましたところ、添付画像のようにCLKの波形(CH D)が等間隔ではないことがわかりました。いつも同じ波形であればいいのですが、通信するたびに波形も変化してしまいます。 I2Cでの通信は初めて行ったため、異常なのか正常なのかもわかりません。 異常であれば、どなたか解決方法をお分かりになられる方はいらっしゃいませんでしょうか? 何卒、ご教授よろしくお願いいたします。

みんなの回答

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.1

I2Cでクロックの周波数が変化するのはごく普通のことです。 SCLやSDAの変化のタイミングはソフトウエアで制御される場合が多いのです。 この場合、割り込みなどが発生するとその処理のためにI2Cの制御に遅れが出ます。 I2Cにおいて、SCLの最低周波数はゼロです。 また、tLOW、tHIGHの最大パルス幅は無限大です。 下記資料の50~52ページ辺りを参照してください。 http://www.nxp.com/documents/user_manual/UM10204_JA.pdf

関連するQ&A