ソフトウェア・リセット呼び出しは、I2C バス上のコントローラから送信されるコマンドで、このコマンドに対応しているすべてのデバイスに対して電源投入時のデフォルト状態にリセットするよう指示を出します。想定どおりに機能させるためには、I2C バスの機能を有効にして、このバスにデバイスがぶらさがっていない状態にする必要があります。
ソフトウェア・リセット呼び出しは、以下の手順で定義されます。
- I2C バスのコントローラから START 条件を送信します。
- 使用するアドレスは、予約済みのゼネラル コールの I2C バス アドレス「0000 0000」で、R/W ビットは 0 にセットします。送信されるバイトは、0x00 です。
- ゼネラル・コール機能をサポートしているすべてのデバイスは、ACK を送信します。R/W ビットが 1 (読み出し) にセットされているなら、デバイスは NACK を送信します。
- ゼネラル・コール・アドレスがアクノリッジされると、コントローラは 0x06 に等しいデータの 1 バイトのみを送信します。データ バイトが他の値の場合、デバイスはアクノリッジしないか、リセットします。1 つよりも多いバイトが送信された場合、2 番目以降のバイトはアクノリッジされず、デバイスは無効と判断して I2C メッセージを無視します。
- データ (0x06) の 1 バイトが送信されると、コントローラはソフトウェア・リセット・シーケンスを終了させるために STOP 条件を送信します。START 条件が繰り返し送信されてもデバイスは無視し、リセットは実行されません。
上記の手順がすべて成功すると、デバイスはリセットを実行します。これにより、すべてのレジスタ値はクリアされ、電源投入時のデフォルト値に戻ります。