2016-07-26 51 views
0

私は、基本的にArm Cortex M4評価ボードであるTi's EK-TM4C1294XLに取り組んでいます。私は同じもののI2Cバスを経由していたし、I2Cバスに関する以下の質問がある。I2Cバスマルチマスタマルチスレーブ

私は、I2Cがマルチマスターマルチスレーブ構成をサポートしていることを理解しています。したがって、特定のマスタから特定のスレーブにデータを送信する場合は、そのマスタからバス上のスレーブアドレスを最初に書き込み、Ackを受信した後にそのスレーブにデータを送信します。

同じ状況で私は特定のスレーブから特定のマスターにデータを受信したいが、スレーブは通信を開始できるのだろうか? スレーブがADCであり、変換が完了すると、変換されたデータを特定のマスタに送信するとします。 これはI2Cで可能ですか?

+1

_ "スレーブは通信を開始できますか?" _は定義上falseです。アドレスを書き込んでクロックを駆動している場合、スレーブではなくマスタとして動作しています。 ADCがスレーブ動作と(マルチ)マスタ動作の両方を行うことができるかどうかは、そのデータシートの記載内容によって異なります。 – Notlikethat

答えて

0

I2Cでは、スレーブがデータを送信するだけであっても、マスタは常にスレーブとの通信を開始します。開始条件の後の最初のバイトには、7ビットのアドレスと、それが書き込みか読み出しかを示す1ビットが含まれます。スレーブが非同期イベント(すなわち連続変換を実行するADC)を持つ可能性があるタイプのスレーブの場合、通常、I2Cバスとは別の信号(注意信号、割り込み信号、またはI2Cデバイスが実際にSMBusデバイス、SMBALERT#)を使用して、イベントが発生したことを示すために状態を変更し、マスタがそのデバイスに問い合わせる必要があります。