363514_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

363514_ja-JP

363514_ja-JP

MMA8652の割り込みをクリアする<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

私はMMA8652加速度センサを使っています。一時的な割り込み(タップへの応答)は正常に生成されますが、それをクリアすることができないため、割り込みが継続されます。

割り込みソース レジスタ (0x0C) を読み取り、次に割り込みに続いて一時ソース レジスタ (0x1E) を読み取ります。次に、割り込みソース レジスタを再度読み取ります。一時割り込みのビットはまだ設定されています。データシートとアプリケーション ノートには、過渡ソース レジスタを読み取ると割り込みがクリアされると記載されています。レジスタ 0x0C と 0x1E を読み取ると、最初の割り込み後は常に 0xFF になります。何が足りないのでしょうか?

また、データシートでは、VDDIO が VDD に接続されていることが示されているようです。これは正しいですか?

ハロルド

加速度センサRe: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

わかりました。読み取りの繰り返し開始条件が機能することを確認しましたが、どうやら必須のようです。私が扱う他のすべての I2C デバイスでは、繰り返し開始条件はオプションであり、レジスタ アドレスは記憶されます。

これでこの質問への回答が得られたと考えます。ありがとう!

Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

レジスタ アドレス (書き込みメッセージの 1 番目のデータ バイト) は停止条件後には保持されないということですか?

Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちは、ハロルド。

I2C バスで何が起こっているかを確認する ために、波形をここに投稿していただけますか?

たとえば、WHO_AM_I レジスタ 0x0D から読み取られた 1 バイトは次のようになります。

Who_Am_I register read.JPG.jpg


読み取り操作でよくある問題は、 2番目のバイト(この場合は0x0D)の後にストップコンディション(SCLがHighの状態でSDAがLowからHighに遷移する)を送信することです。正しい方法は、SCLラインがHighになる前にSDAラインを解放(Highに遷移させる)することです。

プルアップ抵抗に関しては、推奨値は 1k ~ 4.7k です。

VDD I/O は、必要なインターフェース電圧に対応するために VDD と異なる場合があり、1.71V まで下げることができます。単一電源動作の場合、VDD I/O は主電源 VDD (1.95V ~ 3.6V) と同じになります。


よろしくお願いいたします。

トーマス


Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

8652 への I2C 書き込みは正常に実行できます (加速度センサからの予測可能な動作)。しかし、レジスタを読み戻すことができません。SCL と SDA をスコープで表示すると、正常なレベルと波形が表示されます。「who am I」レジスタを読み取っても、0x00 または 0xFF が返されます。これにより、データシートの VDDIO について疑問が生じます。

  • VDDIO への強力なプルアップ (1k 抵抗) が必要なのはなぜですか?1.3項。
  • 表 5 では、標準 VDD が 2.5 V ですが、標準 VDDIO が 1.8 V であることが示されています。
  • 表 1 には、「制御信号 SCL および SDA は、 VDD IO + 0.3 V を超える電圧には耐えられません。」という脚注があります。VDD IO が削除されると、制御信号 SCL および SDA は、内部 ESD 保護ダイオードを使用してすべてのロジック信号をクランプします。

ハロルド

Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

TRANS_THS レジスタで DBCNTM を設定し、TRANS_CFG レジスタで ELE をクリアすると、継続的な割り込みが発生しなくなります。それでも、TRANSIENT_SRC と INT_SOURCE の両方のレジスタに常に 0xFF が表示されます。

Re: Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

私のボードが割り込み(加速度センサからマイクロへの)を低く保持している可能性は低いです。

  1. 割り込みラインを短絡すると (搭載されハイにプルされ、割り込みはオープン ドレイン + アクティブ ローとして構成されます)、マイクロで信号がローにプルされます。その後、フロート状態にすると、マイクロで確認される信号はハイになります。
  2. たとえボードが割り込みラインを低く保持していたとしても、割り込みソース レジスタと一時ソース レジスタの両方に 0xFF が表示される理由は説明できません。
Re: Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

アセンブリに悪影響を与える可能性のあるイベント情報 (激しい、鋭い衝撃) をログに記録するために、過渡検出を使用したいと考えています。SO、私はすべての軸に興味があり、最終的にはしきい値を 8g と高く設定します。ハイパス フィルターは低周波イベントを遮断するはずです。

Re: Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

example.c を添付する(a) 加速度センサの初期化用のフラグメントと (b) 一時割り込みをクリアするためのフラグメント。

Re: Clearing MMA8652 Interrupts<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちは、ハロルド。

設定を再現できるように、完全なソース コード、または少なくとも加速度センサの初期化を確認していただけると助かります。

INT_SOURCEレジスタのSRC_TRANSビットをクリアし、割り込みをデアサートするには、TRANSIENT_SRCレジスタを読み出す必要があるのは間違いありません。タップ検出機能について説明した添付のサンプルコードが参考になるかもしれません。


お役に立てれば幸いです。


よろしくお願いいたします。

トーマス


追伸: 私の回答がご質問の解決に役立った場合は、「正解」または「役に立った」と評価してください。ありがとうございます。

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎02-04-2026 04:48 AM
更新者: