

1-Wireは、ダラスセミコンダクターが設計した有線半二重シリアルバスで、 1本の導体で低速(標準16.3 kbit/s、10倍の「オーバードライブ」[ 1 ])データ通信と電源電圧を提供します。[ 2 ]
1-Wireは、概念的にはI2Cに似ていますが、データレートが低く、通信距離が長くなっています。一般的には、デジタル温度計や気象観測機器などの小型で安価な機器との通信に使用されます。マスターデバイスを備えた1-Wireデバイスのネットワークは、MicroLANと呼ばれます。このプロトコルは、ダラスキーまたはiButtonとして知られる、16mmの小型電子キーにも使用されています。
1-Wireバスの際立った特徴の一つは、 データ線とグランド線の2本の導体のみを使用できる点です。これを実現するために、1-Wireデバイスには小型コンデンサ(約800pF)が内蔵されており、データ線がアクティブな期間にデバイスに電力を供給します。
1-Wireデバイスは、集積回路、TO-92型パッケージ(トランジスタによく使われるタイプ)、そしてiButtonまたはDallasキーと呼ばれる小型のステンレス製パッケージ(腕時計の電池に似ている)など、さまざまなパッケージで提供されています。メーカーは、1-Wireバスを使用して通信する、単一の部品よりも複雑なデバイスも製造しています。
1-Wireデバイスは、システム内のさまざまな場所に設置できます。製品内の回路基板上の多数のコンポーネントの1つとして使用される場合もありますし、温度プローブなどのデバイス内の単一のコンポーネントとして使用される場合もあります。また、監視対象のデバイスに取り付けることもできます。一部の実験室システムでは、モジュラーコネクタ付きケーブルまたはCAT-5ケーブルを使用して1-Wireデバイスに接続します。このようなシステムでは、RJ11(6P2Cまたは6P4Cモジュラープラグ、一般的に電話機で使用されているもの)がよく使用されます。
センサーとアクチュエータのシステムは、多数の1-Wireコンポーネントを配線接続することで構築できます。各1-Wireコンポーネントには、1-Wireバス上で動作するために必要なすべてのロジックが含まれています。例としては、温度ロガー、タイマー、電圧・電流センサー、バッテリーモニター、メモリなどがあります。これらはバスコンバータを使用してPCに接続できます。USB 、RS-232シリアル、パラレルポートインターフェースは、MicroLANをホストPCに接続するための一般的なソリューションです。1-Wireデバイスは、さまざまなベンダーのマイクロコントローラに直接接続することもできます。
iButtonは、キャニスターの「蓋」と「底」に接触する接点を持つソケットを介して1-Wireバスシステムに接続されます。あるいは、iButtonをクリップで固定するソケットを使用し、半永久的な接続にすることも可能です。このソケットからはiButtonを簡単に取り外すことができます。
各1-Wireチップには固有の識別コードが付与されています。この特性により、特にiButtonなどのチップは電子キーとして最適です。用途例としては、錠前、防犯アラーム、コンピュータシステム、メーカー認定アクセサリ、タイムレコーダー、スマート金庫の宅配キーやメンテナンスキーなどが挙げられます。
iButtonはイスタンブールの公共交通機関のAkbilスマートチケットとして使用されています。また、1998年の「Java Ring」に代表されるように、Java Card 2.0などのスマートカードプログラムを実行することもできます。 [ 3 ]
Apple MagSafeおよびMagSafe 2コネクタを搭載した電源、ディスプレイ、Macラップトップは、コネクタの中央ピンを介して、1-Wireプロトコルを使用して接続されたMacラップトップとの間でデータを送受信します。データには、電源のモデル、ワット数、シリアル番号、およびフルパワーを送信し、コネクタ内の赤または緑の発光ダイオードを点灯させるためのラップトップコマンドが含まれます。 [ 4 ]
Dellのノートパソコン用電源は、1-Wireプロトコルを使用して、3本目のワイヤを介して電力、電流、電圧定格に関するデータをノートパソコンに送信します。アダプタが要件を満たしていない場合、ノートパソコンは充電を拒否します。[ 5 ]
MicroLANでは、常に1つのマスターが全体の制御を担います。マスターはパーソナルコンピュータまたはマイクロコントローラです。マスターはバス上で動作を開始し、バス上での衝突を回避することを容易にします。衝突を検出するためのプロトコルがマスターのソフトウェアに組み込まれています。衝突が発生した場合、マスターは必要な通信を再試行します。
1-Wireネットワークは、単一のオープンドレインワイヤと単一のプルアップ抵抗で構成されます。プルアップ抵抗はワイヤを3ボルトまたは5ボルトまで引き上げます。マスターデバイスとすべてのスレーブデバイスはそれぞれ、ワイヤを駆動するための単一のオープンドレイン接続と、ワイヤの状態を検出する方法を備えています。「1-Wire」という名称にもかかわらず、すべてのデバイスは、データワイヤに帰還電流が流れるように、接地接続用の2本目の導体も備えている必要があります。 [ 6 ]マスターまたはスレーブがバスを一時的にローレベルに引き下げる、つまり出力MOSFETを介してプルアップ抵抗を接地すると、通信が開始されます。データワイヤはアイドル時にはハイレベルになるため、限られた数のスレーブデバイスに電力を供給することもできます。16.3 kbit/sのデータレートを実現できます。[ 7 ] : 40また、通信速度を10倍に高速化するオーバードライブモードもあります。[ 7 ] : 39
マイクロコントローラの単一のデジタルI/Oピンから短い1-Wireバスを駆動できます。ユニバーサル非同期送受信機(UART)も使用できます。[ 8 ]専用の1-Wireドライバおよびブリッジチップが利用可能です。ユニバーサルシリアルバス(USB)の「ブリッジ」チップも利用可能です。ブリッジチップは、100mを超えるケーブルを駆動するのに特に役立ちます 。メーカーは、最大300mのツイストペアケーブル(電話ケーブルなど)のテストを実施しています。このような極端な長さでは、プルアップ抵抗を5~1kΩに調整する必要があります。[ 7 ]: 40~41
マスターはリセットパルスで送信を開始し、ワイヤを少なくとも480μsの間0ボルトに引き下げます。これにより、バス上のすべてのスレーブデバイスがリセットされます。その後、スレーブデバイスが存在する場合は、「プレゼンス」パルスによって存在を示します。つまり、マスターがバスを解放してから少なくとも60μsの間、バスをローレベルに保持します。
バイナリ数「1」を送信するには、バスマスターは非常に短い(1~15μs)ローパルスを送信します。バイナリ数「0」を送信するには、マスターは60μsの ローパルスを送信します。パルスの立ち下がり(負)エッジは、スレーブデバイス内の単安定マルチバイブレータを 起動するために使用されます。スレーブ内のマルチバイブレータは、立ち下がりエッジから約30μs後にデータラインを読み取ります。スレーブの内部タイマーは安価なアナログタイマーです。アナログタイマーにはタイミング精度に影響を与える許容誤差があります。そのため、パルスは許容誤差の範囲内に収まるように計算されます。したがって、「0」パルスは60μsの 長さでなければならず、「1」パルスは15μsより長くすることはできません 。
データを受信する際、マスタは各ビットを開始するために1~15μsの0ボルトパルスを送信します。送信側スレーブユニットが「1」を送信したい場合は何もせず、バスはプルアップ電圧になります。送信側スレーブが「0」を送信したい場合は、データラインを60μsの間グランドにプルダウンします。
基本的なシーケンスは、リセットパルスに続いて8ビットのコマンドが送信され、その後、データは8ビット単位で送受信される。
一連のデータが転送される際、8ビットCRC(弱いデータ保護)によってエラーを検出できます。
多くのデバイスが同じバスを共有できます。バス上の各デバイスは64ビットのシリアル番号を持ち、そのうち8ビットはチェックサムとして使用されるため、2⁵⁶ ( 7.2× 10¹⁶以上)の一意のデバイス識別子の「ユニバース」が可能になります。シリアル番号の最下位バイトは、デバイスの種類を示す8ビットの数値です。最上位バイトは、(1-Wireバス用の)標準的な8ビットCRCです。[ 7 ]: 14
標準的なブロードキャストコマンドがいくつかあり、特定のデバイスを指定するためのコマンドもあります。マスターは選択コマンドを送信した後、特定のデバイスのアドレスを送信できます。次のコマンドは、指定されたデバイスによってのみ実行されます。
1-Wireバス列挙プロトコルは、他のシングレーションプロトコルと同様に、マスターがバス上のすべてのデバイスのアドレスを読み取るために使用するアルゴリズムです。アドレスにはデバイスタイプとCRCが含まれているため、アドレスのリストを復元すると、バス上のデバイスの信頼できるインベントリも生成されます。デバイスを見つけるために、マスターは列挙コマンドとアドレスをブロードキャストし、アドレスの各ビットの後に「リスニング」します。スレーブのアドレスがこれまでに送信されたすべてのアドレスビットと一致する場合、スレーブは0を返します。マスターはこの単純な動作を使用して、有効なアドレスビットのシーケンスを体系的に検索します。無効なビットが検出されるとすぐに、後続のすべてのアドレスビットが無効であることがわかるため、このプロセスは、可能なすべての56ビットの数を総当たりで検索するよりもはるかに高速です。56ビットのアドレス空間はバイナリツリーとして検索され、[ 7 ] : 51毎秒最大75個のデバイスを見つけることができます。[ 7 ] : 53この列挙プロトコルによってデバイス アドレスが発見される順序は決定論的であり、デバイス タイプとシリアル番号のみに依存します。これらの 56 ビットをビット反転すると、Maxim が公開したアルゴリズム (アプリケーション ノート 187 [ 9 ]で定義されているアルゴリズム) を使用するデバイスの発見順序が得られます。検索アルゴリズムは、アドレス ビットが 0 ではなく 1 に等しいパスを最初に検索する別の形式で実装することもできます。この場合、56 ビットのアドレスを反転してから逆順にすると、発見順序が得られます。
バス上のデバイスの位置は、場合によっては重要です。このような状況では、マイクロコントローラは複数のピンを使用したり、メーカーがバスをオフにしたりパスオンしたりできる1-Wireデバイスを提供したりできます。そのため、ソフトウェアはシーケンシャルバスドメインを探索できます。[ 7 ]
すべての 1-Wire デバイスの 64 ビット ROM ID は、8 ビットのファミリ コードで終わります。ほとんどの場合、このバイトは単一の部品番号に割り当てられているため、バスから読み取るだけでデバイスを識別できます。たとえば、0x10 (DS18S20 温度計)、[ 10 ] 0x01 (DS2401 シリコン シリアル番号)、[ 11 ]または 0x2D (DS2431 1 kbit EEPROM) [ 12 ]などです。
さまざまな人々が、1-Wireメモリ、認証装置、ID、バッテリーモニターデバイスなど、幅広い種類のデバイスのファミリーコードのオンラインデータベースを作成しています。[ 13 ]
以下の信号は、DS2432(SHA-1エンジン搭載1kビットEEPROM )チップとの通信マスターであるFPGAによって生成され、ロジックアナライザで測定されました。1-Wire出力のロジックハイは、FPGAの出力がトライステートモードであり、1-Wireデバイスがバスをローにプルダウンできることを意味します。ローは、FPGAがバスをプルダウンすることを意味します。1-Wire入力は、測定対象のバス信号です。入力サンプリング時間がハイになると、FPGAは入力をサンプリングしてデバイスの応答を検出し、ビットを受信します。

1-Wireバスの開発やトラブルシューティングを行う際には、ハードウェア信号の解析が非常に重要です。ロジックアナライザやバスアナライザは、高速波形を視覚的に確認しやすくするために、信号の収集、解析、デコード、保存を行うツールです。