0

I2C インターフェースでは、

バス上にデバイスがない場合でも、SCL、クロックラインはクロック信号を送信しますか?

I2C をデバッグするにはどうすればよいですか?

4

1 に答える 1

1

I2C バス マスターは、バスに接続されたスレーブ デバイスがあるかどうかを知りません。

できることは、スレーブのアドレスをバスに送信して特定のデバイスとの通信を開始することだけです (読み取りまたは書き込み操作が可能です)。マスタが ACK を受信した場合、それはスレーブが通信する準備ができている (そしてバス上に提示されている) ことを意味します。肯定応答ではなく NACK は、スレーブの準備ができていないことを意味します。要求がタイムアウトした場合は、バス上に特定のアドレスを持つ使用可能なデバイスがないことを意味します。

さて、あなたの質問に戻ります:

バス上にデバイスがない場合でも、SCL、クロックラインはクロック信号を送信しますか?

はい、マスターが通信を開始すると、スレーブがなくてもクロックラインが駆動されます。バス上にデータ、スレーブデバイスアドレスがあるため、クロックが使用されます。

下の画像のように見えますが、唯一の違いは、バス上に (そのアドレスを持つ) スレーブ デバイスがない場合に ACK が送信されないことです。

ここに画像の説明を入力

デバッグに関しては、バス上で実際に何が起こっているかをキャプチャするために、ロジック アナライザ(eBay または aliexpress で安価なバージョンを入手できます) を購入できれば最高です。上の画像はこれを使って作ったものです。

于 2016-10-07T16:49:20.177 に答える