はじめての 1-Wire® [プロトコル編]
Analog Devices, Inc.(以下、アナログ・デバイセズ社)の1本の信号線のみで双方向通信かつ電源供給可能な1-Wireインターフェイスの通信仕様やコマンド体系をプロトコル編として説明します。
1-Wireの通信仕様
1-Wireのマスタ(ホスト)からデバイス(スレーブ)へのアクセスは以下の図のように行います。
一組のスレーブへアクセスを行うコマンド列をトランザクションと呼びます。
各トランザクションは以下の手順で実施します。
① 各スレーブの同期化を行う。(バスリセット)
② アクセスを行うスレーブを指定します。(64ビットIDの指定)
③ 各デバイスで定義されたコマンドによりアクセスを行う。
1ビットデータはタイムスロットと呼ばれる時間単位で構成されており、詳細は後述します。
1-Wireでは各スレーブへアクセスを行うため、すべてのスレーブの64ビットIDを入手する必要があります。
そのため、1-Wireマスタには1-Wireバスに接続されている各スレーブの固有の64ビットIDを検索するコマンドが定義されています。
1-Wireのタイミング仕様
1-Wireで規定されている通信仕様として、ここではStandard-mode時の電気信号の規定についてご説明します。
タイムスロット
1ビットのデータを扱う時間的な単位を1スロットと呼びます。1-Wireマスタとスレーブのデータ通信は、各ビットを伝送する複数のタイムスロットで成り立ちます。
バスリセット(Reset&Presence)
バスリセットはトランザクション毎に必要なシーケンスであり、1-Wireマスタから出力されます。
バスリセットの動作は以下のとおりです。
- 1-Wireマスタは最初に1-Wireバスを480μs以上“L”レベルにする。⇒ バスリセット
- 1-Wireバス上にデバイス(スレーブ)がひとつ以上接続されている場合:
“H”レベルに戻った後、プレゼンスパルスが1-Wireデバイスより出力する。 - 1-Wireデバイスからのプレゼンスパルスによって“L”レベル出力を検出すると一定時間後に“H”レベルに戻ったことを確認しバスリセットを完了させ、タイムスロットを開始できます。
Bus Resetにより、1-Wireバスに接続されたすべてのスレーブを同期化し、インターフェイスを初期化します。(64ビットID指定の解除等)
1-Wireのコマンド体系
次に1-Wireのコマンドについてご説明します。
1-Wireのコマンド
1-Wireデバイスには“1-Wire ROMコマンド”と“1-Wire DEVICEコマンド”があります。
ROMコマンド :1-Wireデバイス共通で備えられているコマンド
DEVICEコマンド:1-Wireデバイス毎に定義されるコマンド
基本的に バスリセット ⇨ ROMコマンド ⇨ DEVICEコマンドをループして通信を行っています。
1-Wire ROMコマンドの詳細
- 1-Wire ROMコマンドの種類
1-Wireデバイスの共通コマンドであるROMコマンドの例を以下に示します。
(参考) Search ROM(64ビットID検索コマンド)の動作
1-Wireバス上に接続されている各1-Wireデバイスのユニークな64ビットID(ROMコード)が認識されていない場合は、検索アルゴリズムを使用して64ビットIDを調査することができます。
- 64ビットIDの検索順序は、LSBからMSBに向け1bitずつ検出
- 1bit当たり2回Read(Ture/complement)、1回Write(select Value)の3回アクセスを実施
- 1-Wireの64ビットID検索アルゴリズムは、64ビットIDが検出されるまで分岐を追跡するバリナリーツリー探索
- 存在するすべての64ビットIDが検出されるまで、以降の検索は次の分岐パスをたどる
1-Wireの通信フロー (DS2431のメモリ読み出し)
DS2431(1024ビットEEPROM)のメモリ読み出しを例にして、1-Wireの通信フローを2つ挙げます。
① 1-Wireバスに接続されている1-Wireデバイスがひとつの場合 (Standard-Mode)
1-WireデバイスにEEPROMがひとつのみ接続されている場合のデータ読み出しのフロー例を示します。
② 1-Wireバスに接続されている1-Wireデバイスが複数の場合 (Standard-Mode)
1-Wireデバイスが複数接続されている場合のEEPROMからのデータ読み出しフロー例を示します。
担当エンジニアからの一言
本編ではプロトコル編として通信仕様やコマンド体系についてご紹介しましたが、あわせてハードウェア編及びその他機能・注意事項編もご覧いただきますと、バリエーション豊かなマスタ構成さらにノイズおよび保護対策、拡張機能などを備えていることがお判りいただけます。それら多彩な機能によって、ユーザーは柔軟なシステム構築を容易に実現できますので、この機会に是非1-Wireインターフェイスを検討されてはいかがでしょうか。
なお、「はじめての1-Wire」では1-Wireの特長をご紹介していますので、そちらもあわせてご覧ください。