要約
DS2480Bは、UARTホストインタフェースを備えた1-Wireマスタ(ドライバ)です。このドライバは電力の供給用に最適化されており、組込みアプリケーションでオーバドライブ速度をサポートします。DS2480Bの特別な機能としてフレキシブル速度モードがあり、標準速度での1-Wireタイミングを設計者が設定することができます。このアプリケーションノートでは、最適なタイミング設定を算出する方法と、Windows®用ソフトウェアを使用してその設定をチップに書き込む方法について説明します。また、アプリケーションノート3829で解説されているように、DS2480Bのドライバ強度を抵抗性プルアップと比較します。第1の付録では、最適な設定パラメータのセットをどのように決定したか説明します。第2の付録では、マスタの電気的特性とネットワーク配線の容量性負荷に応じて、DS2480Bで駆動可能なスレーブ数を算定するためのアルゴリズムを示します。第3付録では、ネットワークの過負荷状態について検討します。
はじめに
DS2480Bは、UARTホストインタフェースを備えた1-Wireマスタ(ドライバ)です。電力の供給用に最適化され、組込みアプリケーションでのオーバドライブ速度をサポートしており、タイムクリティカルな1-Wire波形を生成する作業からホストを解放します。このドキュメントは、DS2480Bの設定および性能について述べています。フローチャート、擬似コード、および「C」の実装などのホストソフトウェア開発のガイドラインについては、アプリケーションノート192 「シリアル1-Wire®ラインドライバDS2480Bの使用」をご覧ください。
DS2480Bは、アクティブ回路を使用してタイムスロット末尾の回復時間を短縮します。図1に、1-Wireドライバセクションの略図を示します。
図1. DS2480Bの1-Wireドライバ回路の略図
1-Wireラインがアイドル状態のとき、DS2480Bドライバは制御された電流ソースを通してプルアップを行います。この電流ソースは、オフ(プルダウン時)、弱プルアップの提供(プルダウン後およびアイドル時におけるIWEAKPU)、またはアクティブプルアップの提供(立上りエッジ期間におけるIACTPU)が可能です。プルダウン回路(Q1)は、ソフトウェアで調節可能なスルーレートを実装しています。Q2は、EEPROMのプログラミングや温度変換の実行など、大電流を必要とする1-Wireスレーブ機能が使用する電力供給回路を表しています。Q2の機能については、このアプリケーションノートでは取り上げません。
ケーブル敷設長が大きい構成をサポートする場合、伝送ラインによる影響(反射、アンダシュート、オーバシュートなど)を最小化するために、外付けのライン終端抵抗RT (~100Ω)が必要になります。しかし、RTの追加によって、スレーブデバイス側で1-Wireラインが完全に再充電される前に、アクティブプルアップが早期にオフになる可能性が生じます。これは、DS2480Bが1-Wireネットワークのスレーブ側ではなく、自身の1-Wire端子で電圧を検出するためです。1-Wire端子が内部的なスレッショルドに達したとき、スレーブ側はその端子よりもRT両端の電圧降下分だけ低くなっています(一般的にはIACTPU × RT = 15mA × 100Ω = 1.5V)。このスレッショルドを超えるとタイマがスタートし、そのタイマが終了するまではアクティブプルアップがオフにならない仕組みです。しかしタイマのスタートが早すぎるため、終了も早くなります。ただし、アクティブプルアップが(早期に)オフになった後も、完全に再充電されるまで1-Wireラインは弱プルアップ電流(IWEAKPU)で充電を続行します。
重要なパラメータ
非常に簡単なたとえを使うと、1-Wireネットワークは、通信が発生するたびに充電と放電が行われる損失の多いコンデンサのようなものです。したがって、ネットワークの充電と放電のプロセスに影響を与えるものは、すべてドライバの性能を決定する際に検討しなければならないパラメータになります。ハードウェアで定義される、DS2480Bドライバの特性を示す重要なパラメータは、次の通りです。
- 1-Wireの弱プルアップ電流(IWEAKPU)
- 1-Wireのアクティブプルアップ電流(IACTPU)
- アクティブプルアップのオンスレッショルド(VIAPO)
- アクティブプルアップのタイマスレッショルド(VIAPTO)
- アクティブプルアップのオン時間(tAPUOT:標準速度で2.0µs、オーバドライブで0.5µs)
変更可能な1-Wireマスタのタイミング設定
DS2480Bは、標準速度のバリエーションであるフレキシブル速度モードを提供しています。この特殊なフレキシブル速度モードでは、1-Wireタイムスロットのタイミングを微調整することができます。リセット検出/プレゼンス検出シーケンスのタイミングは固定です。制御レジスタへの書込みによって設定することができるタイミングパラメータは、次の通りです。
- Write 1ロー時間(tLOW1)
- データサンプリングオフセット(tDSO)
- Write 0回復時間(tRECO)
- 立下りエッジのスルーレート(DS2480Bが開始側)
表1. 可変パラメータ:フレキシブル速度のみ
Description | Symbol | Par. Code | Parameter Value Codes and Values | Units | |||||||
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | ||||
Write 1 Low Time | tLOW1 | 100 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | µs |
Data Sample Offset, Write 0 Recovery Time | tDSO, tREC0 | 101 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | µs |
Pulldown Slew Rate | — | 001 | 15 | 2.2 | 1.65 | 1.37 | 1.1 | 0.83 | 0.7 | 0.55 | V/µs |
表2. 固定パラメータ:フレキシブルおよびオーバドライブ速度
Description | Symbol | Value (µs) | Speed |
Write 1 High Time | tHIGH1 | 49 | Flexible |
8 | Overdrive | ||
Write 0 Low Time | tLOW0 | 57 | Flexible |
7 | Overdrive | ||
Active Pullup On-Time | tAPUOT | 2 | Flexible |
0.5 | Overdrive | ||
Write 1 Low Time | tLOW1 | 1 | Overdrive |
Data Sample Offset | tDSO | 1 | Overdrive |
Write 0 Recovery Time | tREC0 | 3 | Overdrive |
データサンプリングオフセットとWrite 0回復時間の2つのパラメータは、単一のレジスタ値で制御します。これが可能なのは、これらのパラメータがいずれも1-Wireネットワークの再充電速度という同一の効果に影響されるためです。ロジック1に達するまでは、1-Wireのサンプリングを行う必要はありません(tDSOの機能)。逆に、Readタイムスロットにおいて1-Wireラインを完全に再充電するための適切なウェイト時間は、Write 0タイムスロットの回復時間としても妥当です(tRECOの機能)。
図2に示すように、Write 1およびRead Dataタイムスロットは、tLOW1、tDSO、およびtHIGH1の3つの部分で構成されています。tLOW1の持続時間は、8µs~15µsの範囲で設定可能です。tDSOは3µs~10µsの範囲、tHIGH1は49µs固定であるため、Write 1またはRead Dataタイムスロットの持続時間は、60µs~74µsの範囲で任意の値にすることが可能です。Readタイムスロットの場合、1-Wireから読み取るためのサンプリングは、タイムスロットの開始からtLOW1 + tDSO後、すなわち立下りエッジの先頭から11µs~25µsの範囲のどこかで行われます。
図2. Write 1およびRead Dataタイムスロット
Write 0タイムスロット(図3)は、tLOW0とtRECOの2つの部分で構成されます。tLOW0は57µs固定、tRECOは3µs~10µsの範囲であるため、Write 0タイムスロットの持続時間は60µs~67µsになります。DS2480BがホストのUARTから受信するデータによっては、タイムスロット間にかなりのアイドル時間が生じます。
図3. Write 0タイムスロット
1-Wireスレーブがタイムスロットを認識するタイミングは、マスタによるプルダウンの立下りエッジのスルーレート、スレーブの電気的特性、およびマスタ/スレーブ間の物理的距離という、3つの要素によって決まります。フレキシブル速度モードでは、高速側が15V/µsから低速側が0.55V/µsまでスルーレートの調節が可能です。しかし、スルーレートを非常に遅くすると、短いtLOW1の設定と競合する可能性があります。徹底的なテストの結果、最初に試すべきスルーレートの設定として1.37V/µsが適切であり、ライン終端の有無を問わず、ほぼすべてのアプリケーションで動作することが分かりました。最速の設定(15V/µs)は、ラインが適切に終端されていない限り使用すべきではありません。終端を行わないと、特にDS2480Bが長いケーブルを駆動する場合、高い確率でリンギングが発生します。
設定の変更方法
付録A「設定パラメータ値の選択」で示すように、tLOW1 = 8µs、tDSO = 9µsのときの66µsというタイムスロット持続時間が、最適な設定です。
設定を変更するための実行形式Windowsユーティリティプログラム(tmline.exe)を、ここからダウンロードすることができます(ZIP形式)。最初に、このファイルをZIPフォルダから取り出してWindowsのデスクトップに移動してください。プログラムを実行するには、そのアイコンをダブルクリックするか、またはアイコンを右クリックして「開く」を選択します。プログラムを起動するとDOS形式のウィンドウが表示され、いくつかの作業が実行されます。プログラムの紹介が表示され、基底にあるドライバソフトウェアのリビジョンが示され、プルダウンのスルーレート、Write 1ロー時間、およびデータサンプリングオフセット/Write 0回復時間のデフォルトの設定が表示されます。tmlineプログラムの起動時点ですでに1-Wireのアプリケーションソフトウェアが実行中だった場合は、ここで表示される設定が現在の設定になります。
Current (STANDARD) 1-Wire line settings: PDSR = 1.37 V/us W1LT = 8 us DSOW0 = 6 ustmlineがユーザに入力を求める第1のパラメータは、プルダウンのスルーレートです。入力する数値は、表1に示したパラメータ値コードです。0~7の数字で新しい値を選択します。8を入力すると設定を変更せずにプログラムが終了します。それ以外の入力はすべて無視されます。
Select the PDSR (pulldown slew rate): 0) 15 V/us 1) 2.20 V/us 2) 1.65 V/us 3) 1.37 V/us 4) 1.10 V/us 5) 0.83 V/us 6) 0.70 V/us 7) 0.55 V/us 8) EXIT Enter number: 3(ユーザの入力例:3)
有効な数字を入力した後、次のパラメータとしてWrite 1ロー時間を指定します。
Select the W1LT (write-1 low time): 0) 8 us 1) 9 us 2) 10 us 3) 11 us 4) 12 us 5) 13 us 6) 14 us 7) 15 us 8) EXIT Enter number: 0(ユーザの入力例:0)
新しいWrite 1ロー時間を入力した後で、ユーザが最後に入力するパラメータは、データサンプリングオフセット/Write 0回復時間です。
Select the DSO/WOR (data sample offset/write 0 recovery): 0) 3 us 1) 4 us 2) 5 us 3) 6 us 4) 7 us 5) 8 us 6) 9 us 7) 10 us 8) EXIT Enter number: 6(ユーザの入力例:6)
有効な数字が入力されると、tmlineは新しいパラメータセットをポートアダプタ内のDS2480Bに書き込みます。その後、最初のステップに戻って、新しい設定を現在の設定として表示し、新しいプルダウンスルーレートの入力を求めてきます。プログラムを終了するには、「8」を入力してください。1-Wireアプリケーションソフトウェアが実行されている間は、新しい設定が有効になっています。
複数スレーブを備える1-Wireネットワークの回復時間
標準速度モード
標準速度モードの単一スレーブネットワークの場合、1-Wireスレーブのデータシートには、2.2kΩのプルアップ抵抗および2.8Vの最小プルアップ電圧との組み合わせで、最小回復時間5µsという仕様が一般的に示されています。マキシムのアプリケーションノート3829 「複数スレーブを備える1-Wireネットワークの回復時間の算出」では、複数のスレーブ、4段階の温度、2種類の電圧について、回復時間の算出方法を説明しています。DS2480Bは5Vデバイスであるため、アプリケーションノート3829の4.5Vの部分が該当します。温度が-5℃以上の場合、標準速度での回復時間は2 × N + 1µs (N = スレーブ数)で規定されます。したがって、スレーブ1個で3µs、スレーブ2個で5µs、スレーブ3個で7µs、スレーブ4個で9µsが必要になります。
以上より、付録Bのワーストケース条件(IWEAKPUが1.5mA、IACTPUが7mA)の計算と、「スレーブ4個で9µs」という構成を基準として使用すると、DS2480Bは少なくとも26個のスレーブに対応可能であることが分かります。したがって、標準速度でのDS2480Bドライバは、2.2kΩのパッシブプルアップと比べて少なくとも6.5倍強力です。
オーバドライブ速度モード
オーバドライブ速度モードの単一スレーブネットワークの場合、1-Wireスレーブのデータシートには、2.2kΩのプルアップ抵抗および2.8Vの最小プルアップ電圧との組み合わせで、最小回復時間2µsという仕様が一般的に示されています。上述のアプリケーションノート3829によると、温度が-5℃以上の場合、オーバドライブ速度での回復時間は1.37 × N + 0.5µs (N = スレーブ数)で規定されます。したがって、スレーブ1個で1.87µs、スレーブ2個で3.24µs、スレーブ3個で4.61µs、スレーブ4個で5.98µsが必要になります。
以上より、「スレーブ2個で3.24µs」という条件を基準として使用し、「スレーブ1.8個で3µs」に換算した上で、オーバドライブ速度でのワーストケース条件について先ほどと同じ計算を行うことによって、DS2480Bが少なくとも7個のスレーブに対応可能であることが分かります。したがって、オーバドライブ速度でのDS2480Bドライバは、2.2kΩのパッシブプルアップと比べて少なくとも4倍強力です。
スレーブの数が推奨値を超えるとどうなるか?
上記の質問に対する答えは単純明快です。ネットワークはおそらく機能し続けるでしょう。これは、次の理由によります。
- VIAPTOは、通常はこの計算で想定しているワーストケースよりも高くなります。
- タイムスロットの末尾として認識可能な高さまで電圧が上昇すれば、たとえ再充電が不完全でもスレーブはそれを許容します。
- DS2480BのVIH1は、おそらくデータシートの最低仕様より低いと思われます。
まとめ
1-Wireネットワークの信頼性は、マスタ(ドライバ)とスレーブの両方に等しく依存します。標準速度で動作を行う場合、DS2480B 1-Wireドライバの最適な設定は、tLOW1 = 8µs、tDSO = tRECO = 9µsのフレキシブル速度です。スルーレートの設定は、最初に1.37V/µsから始めると良いでしょう。この設定では、速度範囲15µs~54µsの1-Wireスレーブに対応可能です。タイムベースが54µsより遅い単一スレーブの場合は、システムが機能しない可能性があります。プルダウンスルーレートを1.65V/µsまたは2.2V/µsに変えることで、「ボーダライン」のスレーブがネットワーク内で機能する可能性が増大します。60µsという低速の1-Wireスレーブにまで対応するには、tHIGH1とtLOW0の持続時間を6µsずつ延長して、それぞれ55µsと63µsにする必要があります。しかし、この機能はDS2480Bの現在のリビジョンではまだ提供されていません。
1つの例として、Windows用の1-Wireドライバを使用するフリーのOneWireViewerを考えてみましょう。OneWireViewerのソフトウェアは、tLOW1 = 8µs、tDSO = 6µs、およびスルーレート1.37V/µsという設定を標準速度のデフォルトとして使用します。前述のように、tDSOは9µsに増加させる方が良いでしょう。OneWireViewerのリビジョン4.01以降ではtDSOのデフォルトが9µsに変更されており、このアプリケーションノートの推奨値と一致しています。tLOW1とスルーレートのデフォルトは、それぞれ8µsと1.37V/µsのまま変更ありません。
DS2480Bは強力な1-Wireドライバです。DS2480Bは、2.2kΩプルアップ抵抗に依存する回路と比較して、標準速度では少なくとも6.5倍、オーバドライブ速度では4倍の数のスレーブを駆動することが可能です。
付録A
設定パラメータ値の選択
tLOW1、tDSO、およびtHIGH1の3つの部分で構成されるWrite 1およびRead Dataタイムスロットは、表3に示すように、64種類のバリエーションが可能です。tDSO (Write 0タイムスロットの場合はtRECO)が長いほど、ネットワークの再充電(回復)に利用可能な時間が増大します。しかし、tLOW1とtDSOの設定を両方とも最大にすると、サンプリングポイントがタイムスロットの先頭から最大25µsの位置までずれ込むことになります。サンプリングポイントとは、DS2480Bが1-Wireラインからの読取りを行うタイミングです。
表3. tLOW1とtDSOの関数としてのタイムスロット持続時間
tLOW1 (µs) | tDSO (µs) | |||||||
3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
8 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 |
9 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
10 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
11 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
12 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
13 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
14 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
15 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 |
1-Wireスレーブの内部タイムベースは、15µs~60µsの幅があります。したがって、スレーブデバイスが応答として0を返す際に、タイムスロットの開始を認識してから15µs後にはローへのラインの駆動を終了する可能性があります。スルーレートの設定が1.37V/µs (公称値)であるとして、そのスレーブは2.2Vの時点すなわちtLOW1に入って2µsで、タイムスロットを認識してタイマをスタートさせるかも知れません。そのような高速のスレーブについても0の読取りが可能であることを保証するためには、サンプリングポイントをタイムスロットの先頭から2 + 15 = 17µsより後にすることはできません。66µs以下のすべてのタイムスロットが、この条件に該当します。また別のスレーブは、0.8Vの時点すなわちtLOW1に入って3µsでタイムスロットを認識してタイマをスタートさせ、それから60µs後にローへのラインの駆動を終了するかも知れません。この場合、1-Wireラインが再充電を開始することができるのは、タイムスロットの先頭から63µs後になります。3µsの最小回復時間を確保するためには、タイムスロットの持続時間が最低でも66µsは必要です。スルーレートを速くすることで、各スレーブがタイマをスタートするポイントは互いに接近します。これによって回復時間がわずかに改善されますが、ドライバ側にライン終端がないとリンギングが発生することにもなります。
Write 1とRead Dataのタイムスロットが66µsではない場合はどうなるでしょう? 持続時間がそれより短くても、高速な1-Wireスレーブについては問題ありません。しかし1µs短くなるごとに、対応可能な最も低速のスレーブの速度として1µsずつ高速な値が要求されることになります。タイムスロットが60µsという極端な値の場合、それでもネットワーク内で機能するためには、最も低速なスレーブが54µsより低速であってはなりません。タイムスロット持続時間が66µsより長くても、低速な1-Wireスレーブについては問題ありません。しかし1µs長くなるごとに、ネットワーク内で読取り可能な最も高速のスレーブの速度として1µsずつ低速な値が要求されることになります。タイムスロットが74µsという極端な値の場合、それでも機能するためには、最も高速なスレーブが23µsより高速であってはなりません。1-Wireスレーブをランダムに選択したとき、その中にこの最後の条件を満たさないものが含まれている可能性がわずかに存在します。このように、タイムスロットに64µsより短い値または68µsより長い値を選択すると信頼性が低下します。ほとんどの1-Wireスレーブの速度は15µs~60µsという範囲の中心付近に集まっており、54µsより低速なデバイスは稀です。
TDSOについて選択した値は、Write 0タイムスロットで再充電が行われるtRECOにも適用されるため、tRECOは可能な限り大きな値にすべきです。この大きな値の設定としては、tLOW1 = 8µsおよびtDSO = 9µsという組み合わせが最適です(表3のハイライト部分)。スレーブの視点からWrite 0タイムスロットを検討すると、スレーブはtLOW0に入って3µsでタイマをスタートさせる可能性があり、その60µs後に読取り(サンプリング)を開始します。tLOW0はタイムスロットの先頭から57µs後に終了するため、スレーブのサンプリングは6µs遅れてtRECOの終わり近くで行われることになります。スレーブのサンプリングポイントがWrite 0タイムスロット内で最も遅い場合でも間に合うことを保証するためには、スレーブのタイムベースが54µsより遅くてはなりません。この要件によって、Read 0の場合の最も短い回復時間もWrite 0タイムスロットと同様に9µsになることが保証されます。
付録B
DS2480Bで何個のスレーブを駆動可能か?
この質問に対する単純な答えは存在しません。1-Wireスレーブは、理想的なコンデンサのような振る舞いを示さないためです。しかしその挙動を説明するために、一定の電圧までは低容量、その電圧以上では高容量のコンデンサモデルを使用することができます。この高容量は寄生電源コンデンサを表しており、スレーブの再充電が開始される時点に相当します。
再充電のプロセスを高速化するため、DS2480Bは抵抗の代わりに2段階の電流ソースを使用しています。再充電は弱いIWEAKPUで開始され、その後より強力なIACTPUに変化します。図4の立上りエッジ詳細図が、このプロセスを示しています。
図4. 立上りエッジの詳細
t1においてプルダウン(マスタまたはスレーブ)が終了し、弱プルアップ電流による1-Wireラインの充電が開始されます。グラフの傾きは、バス上の負荷とDS2480BのIWEAKPUの値によって決まります。t2において、電圧がスレッショルド電圧VIAPOに達します。ここでDS2480BはIACTPUへの切り替えを行いますが、これはそれまでよりはるかに大電流です。その結果、1-Wireライン上の電圧はより急速に上昇します。t3において電圧がスレッショルドのVIAPTOを超えると、タイマがスタートし、さらに2µs (tAPUOT、フレキシブル速度の場合)または0.5µs (オーバドライブ速度の場合)の間IACTPUを流し続けます。タイマが満了した後は、DS2480Bが次のタイムスロットまたは通信シーケンスを開始するまでIWEAKPUによる1-Wireバスの給電が継続します。
定電流ソースを使用したコンデンサの充電は、次のように表すことができます。
V(t) = ICHARGE × t/C (Eq. 1)
スレッショルドVIAPOに到達する時間t2は、V(t) = VIAPOとし、ICHARGEをIWEAKPUに置き換えた上で、t2について式1を解くことによって計算することができます。
t2 = C × VIAPO/IWEAKPU (Eq. 2)
t2において充電電流がIWEAKPUからIACTPUに変化し、VIAPOからVIAPTO以上へと充電が続行されます。それに従って式2を拡張すると、VIAPTOまでの充電時間であるt3が得られます。
DS2480Bが駆動可能なスレーブ数を算出するためには、再充電を3つのフェーズに分割し、各フェーズを独立して分析する必要があります。
t3 = C × [(VIAPTO - VIAPO)/IACTPU + VIAPO/IWEAKPU] (Eq. 3)
0から3.6V (最も低いVIAPTO)まで充電。このフェーズの終了は、スレーブの再充電開始とほぼ一致します。スレーブの低容量が該当します。 | |
フェーズ2 | tAPUOTに達するまでIACTPUで充電を続行。スレーブの高容量が該当します。 |
フェーズ3 | 次のタイムスロットの開始までIWEAKPUで充電を続行。スレーブの高容量が該当します。 |
フェーズ1の再充電時間は、式3を使って計算します。フェーズ2については式1を使用して、ICHARGEをIACTPUに、tをtAPUOTに置き換えます。これによって、IACTPUが継続する残りの時間に達成される電圧の増分が与えられます。フェーズ3については、再充電に利用可能な残り時間を計算し、IWEAKPUで達成可能な追加の電圧増分を、式1を使って算出します。あるスレーブ数について、フェーズ2および3による電圧増加をVIAPTOに加算した結果が動作電圧以上の値になれば、完全充電の達成が可能です。この条件を満たす最大のスレーブ数が、求める結果です。このアルゴリズムは、スレーブ数を変数とする表計算の形で実装することが可能です。
上記の計算が完了した後、結果として得られるフレキシブル速度のスレーブ数は26個になります。この数は控えめな見積りであることに注意してください。実際に達成可能なスレーブ数は、これよりはるかに大きい可能性があります。この結果の算出に使用した入力パラメータ値を、表4に示します。
表4. フレキシブル速度のスレーブ数の算出に使用した値
Parameter | Value | Comment |
Operating voltage | 5V | Nominal value |
Slave low capacitance | 50pF | High estimate, actual value could be lower |
Slave high capacitance | 600pF | Typical value |
VIAPO threshold | 1V | Typical value |
Phase 1 threshold | 3.6V | Lowest VIAPTO specification value |
Weak pullup current | 1.5mA | Lowest IWEAKPU specification value |
Active pullup current | 7mA | Lowest IACTPU specification value |
Active current continuation | 2µs | The continuation timer starts at VIAPTO |
Recovery time | 9µs | tRECO |
オーバドライブ速度について同じ計算を行うと、結果はスレーブ7個になります。ケーブルの容量を考慮すると、フェーズ1の期間が1µsを超えないことを確認する必要があります。先ほどと同様、この数値は控えめな見積りです。実際に達成可能なスレーブ数は、これよりはるかに大きい可能性があります。この結果の算出に使用した入力パラメータ値を、表5に示します。
表5. オーバドライブ速度のスレーブ数の算出に使用した値
Parameter | Value | Comment |
Operating voltage | 5V | Nominal value |
Slave low capacitance | 50pF | High estimate, actual value could be lower |
Slave high capacitance | 600pF | Typical value |
VIAPO threshold | 1V | Typical value |
Phase 1 threshold | 3.6V | Lowest VIAPTO specification value |
Weak pullup current | 1.5mA | Lowest IWEAKPU specification value |
Active pullup current | 7mA | Lowest IACTPU specification value |
Active current continuation | 0.5µs | The continuation timer starts at VIAPTO |
Recovery time | 3µs | tRECO |
簡単にするため、スレーブの再充電の開始がVIAPTO到達と同時であると仮定していることに注意してください。実際に再充電が開始されるのは、これより早い場合も遅い場合もあり、データストリームとともに動的に変化します。再充電の開始が早ければ、余分に必要となる電荷を補填するため、VIAPTOへの到達が遅くなります。再充電の開始が遅ければ、再充電のために必要とされるエネルギーが少なくなります。そのため、フェーズ1の時間が短くなり、フェーズ3での補填時間が長くなります。
これらの計算は、マスタとスレーブを接続するケーブルの容量について考慮していないことに注意してください。特定のケーブルについてサポート可能なスレーブ数を求めるには、ケーブルの容量を計算して、フェーズ1の持続時間とフェーズ2および3における電圧の増分を計算する際に、それをスレーブの合計容量に加算してください。
付録C
ネットワーク過負荷状態
1-Wireラインで発生する過負荷には、容量性とDCの2種類の可能性があります。容量性の過負荷は、回復時間の不足という形で現れます。一般的には、Write 0タイムスロットの末尾、すなわち再充電が完了する前に次のタイムスロットが始まるときに、スパイクが見られるようになります。設定および負荷がこのアプリケーションノートの推奨に従ったものであれば、容量性の過負荷が発生することはほとんどありません。
DC過負荷は、1-WireとGNDの間に3kΩ以下の抵抗が接続されている場合に発生します。余分な「漏れ」によって、回復時間中の1-Wireの電圧がドライバの電源電圧以下に低下するためです。この状態が発生した場合、図5に示すように、立上りエッジにDC過負荷が現れます。VDDレベルに達した後、IACTPUの終了と同時に1-Wireライン上の電圧が一段低いレベルに低下します。
図5. 立上りエッジに現れたDC過負荷
この記事に関して
製品
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}