I2C 信号線に関するよくある質問 - KBA85348 - Community Translated (JA)

Version 1

    Community Translated by  Motoo Tanaka Expert          Version: *B

     

    Translation - English: Frequently Asked Questions about I2C lines - KBA85348

     

    AN50987 では I2C 標準規格の概要と PSoC® 1 デバイスを使用して I2C 通信を行う方法について説明されています。

    以下は PSoC® 1 デバイスの I2C に関するよくある質問の中でも頻度の高いものの一覧です。

     

    質問1: 何故、 I2C の信号線に 330Ωの抵抗が必要なのですか?

    回答:  I2C の信号線に直列に 330Ωの抵抗を追加するのは RF ノイズへの耐性を高めるためです。

    その抵抗はピンの容量と相まってローパスフィルタを構成し  I2C 信号線に重畳されている可能性のある高周波のノイズを除去します。

     

    質問2: I2C の信号線に適用するプルアップ抵抗の範囲は?

    回答: バスの容量は信号線、接続点、ピンなどの容量の総和になります。この容量が  I2C の信号立ち上がり時間 (SDA と SCL の立ち上がり時間) の規格によって、Rp (プルアップ抵抗) の最大値を制限します。

    電源電圧はスタンダードモードとファストモードの最低シンク電流 3 mA またはファストプラスモードの最低シンク電流 20 mA という規格により Rp の最小値を制限します。

     

    Rp の最大値と最小値の方程式は以下のようになります:

     

    ⇨ Rp(max) = tr / 0.8473 × Cb

    ⇨ Rp(min) = (VDD – VOL(max)) / IOL

     

    • tr - SDA と SCL の立ち上がり時間,  I2C 仕様による
    • Cb - バス容量の概算
    • VDDI2C バスの電源電圧,  I2C 仕様による
    • IOLI2C バスの最少シンク電流、 I2C 仕様による
    • VOL(max) - ローレベルの出力電圧、 I2C 仕様による

     

    質問3: PSoCR1 の 3.3V での  I2C バスの最大通信速度は? 3.3V で 400 kHz の  I2C 通信を行えますか?

    回答:  I2C のクロックパラメータが  I2C インターフェースの通信に必要なクロックスピードを規定します。3つのクロックレートがあります。

    50K スタンダード

    100K スタンダード

    400K ファスト

     

    400kHz の  I2C スピードは IMO (SysClk) が 24MHz の場合でのみ可能です。 I2C バスの最大通信速度は電圧設定に依存しません。 SysClk の設定に依存しています。そのため、グローバルリソースで SysClk が 24 MHz に設定されていれば、最大の 400 kHz で I2C 通信を行うことが可能です。

     

    I2C ユーザーモジュールのクロックスピードの選択は SysClk が 24 MHz に設定されていることを仮定しています。もしグローバルリソースで SysClk が (6 MHz SysClk の) SLIMO モードに設定されていた場合、ユーザーモジュールでの  I2C スピード設定は相対的に減少されます。例えば、SysClk が 6 MHz の場合、実現可能なクロックスピードは 12.5K, 25K, 100K となります。SysClk は CPU クロックとは分離されています。

     

    質問4:  I2C クロックスピードはスレーブが発生するクロックストレッチの遅延にどう影響しますか?

    回答: クロックストレッチとは   I2C データ転送毎の(ACK ステージになる前の) 9 番目のクロックにおいてスレーブが SCL 信号線をローに引っ張る現象です。

    クロックがローに引っ張られるのは、CPU がマスターから受信したアドレスの評価またはデータ処理の  I2C 割込み処理している時かマスターがスレーブからデータを読んでいる時に次のデータを用意するために行われます。

     

    クロックがローに引っ張られる時間は CPU が割込み処理を行う時間に依存していますので CPU スピードに依存しますが  I2C クロックスピードには依存しません。

     

    質問5: クロックストレッチの最悪時の遅延はどのくらいになりますか?

    回答: クロックストレッチとは PSoC  I2C スレーブが  I2C のデータ/アドレスの転送毎に 8番目のクロックの直後に SCL 信号線をローに引っ張る現象です。

    PSoC は  I2C スレーブに設定されていると  I2C データバイトを受信した直後に SCL 信号線をローに引っ張ります。このイベントに続き割込みが発生し、その ISR の中でCPU が ACK/NACK ステータスを  I2C コントロールレジスタに書込むことによりクロック (SCL) ラインを開放します。

    クロックストレッチの最悪値は下記の式で算出可能です。

     

    前提、

    プロジェクトでの有効な割込みの数 = N ( I2C ISR を含む)

    クロックストレッチの時間 = (25 サイクル x N) x CPU_CLK + (N個の ISR の処理時間の総和)

    注意:ISR の実行時間はその ISR の CPU クロックサイクルに CPU クロックの時間を掛けることで求めることが出来ます。

     

     

    質問6: PSoC デバイスにおける  I2C 通信の SCL と SDA 通信線の立上がり時間と立下り時間の仕様はどうなっていますか?

    回答: PSoC はフィリップス (NXP) の  I2C バス標準 UM10204: I2C-Bus Specification and User Manual に完全に準拠しています。

     

     

    下表が ファストモードプラス、ファストモード、スタンダードモードにおける SCL と SDA 信号線の立上り時間、立下り時間の仕様です。

     

    パラメータスタンダードモード (100kHz)ファストモード (400KHz)ファストモードプラス (1000KHz)単位
    最少最大最少最大最少最大
    立上り時間 (SCLとSDAに共通)-100020300-120ns
    立下り時間 (SCLとSDAに共通)-30020×(VDD/5.5V)30020×(VDD/5.5V)120ns