インテルのみ表示可能 — GUID: xcy1481130583186
Ixiasoft
インテルのみ表示可能 — GUID: xcy1481130583186
Ixiasoft
20.4.4.1. クロックの同期
2つ以上のマスターがバス上で同時に情報の転送を試みた場合は、調停を行い、SCLクロックを同期させる必要があります。すべてのマスターはそれぞれ、独自のクロックを生成してメッセージを転送します。データは、SCLクロックがHighの期間にのみ有効です。クロックの同期は、SCL信号へのワイヤードAND接続を使用して行われます。マスターがSCLクロックを0に遷移すると、マスターはSCLクロックのLowの時間のカウントを開始し、次のクロック周期の開始時にSCLクロック信号を1に遷移します。ただし、別のマスターがSCLラインを0で保持している場合、マスターは、SCLクロックラインが1に遷移するまで、HIGHで待機状態になります。†
次に、すべてのマスターはそれぞれのHighの時間をカウントし、Highの時間が最も短いマスターがSCLラインを0に遷移します。その後、マスターはそれぞれのLowの時間をカウントし、Lowの時間が最も長いマスターが、他のマスターをHIGHの待機状態に強制します。よって、次の図に示すように、同期しているSCLクロックが生成されます。オプションで、スレーブでSCLラインをLowに保持し、I2Cバス上のタイミングを遅らせることができます。†
次の計算式を使用し、SCLがHighの時間およびLowの時間を計算することができます。
SCL_High_time = [(HCNT + IC_FS_SPKLEN + 6)*ic_clk] + SCL_Fall_time
SCL_Low_time = [(LCNT + 1)*ic_clk] - SCL_Fall_time + SCL_Rise_time