ENGLISH 简体中文 日本語 한국어  


アプリケーションノート1100

白書5:データシートコマンドに対する1-Wire APIの使用

要約:すべての1-Wire®デバイスのデータシートでは、2セットのコマンドを説明しています。ROM機能コマンドと呼ばれる1つ目のセットはデバイスの識別と選択に使用されます。2つ目のセットはメモリ機能コマンドと呼ばれますが、それ以外の非メモリ動作を含むことがあります。ROM機能コマンドは、デバイスが選択されるたびに完了させて、メモリ機能コマンドに備える必要があります。ダラスセミコンダクタによって作成された1-Wire APIは、これらのコマンドを利用して1-Wireデバイスで動作します。場合によっては、どのコマンドが呼び出されているかが明らかでないことがあります。このアプリケーションノートでは、データシートに示されたコマンドをAPI機能にマッピングしています。特定のAPI機能が利用可能でない場合、汎用の通信API機能を使用してコマンドを変換する手法を提示します。

はじめに

すべての1-Wireデバイスのデータシートでは、2セットのコマンドを説明しています。ROM機能コマンドと呼ばれる1つ目のセットはデバイスの識別と選択に使用されます。2つ目のセットはメモリ機能コマンドと呼ばれますが、それ以外の非メモリ動作を含むことがあります。ROM機能コマンドは、デバイスが選択されるたびに完了させて、メモリ機能コマンドに備える必要があります。ダラスセミコンダクタによって作成された1-Wire APIは、これらのコマンドを利用して1-Wireデバイスで動作します。場合によっては、どのコマンドが呼び出されているかが明らかでないことがあります。このアプリケーションノートでは、データシートに示されたコマンドをAPI機能にマッピングしています。特定のAPI機能が利用可能でない場合、汎用の通信API機能を使用してコマンドを変換する技術を提示します。

このアプリケーションノートで扱う略語(PD、TMEX、OWAPI、OWCOM)を含めたさまざまなAPIの詳細な説明については、「アプリケーションノート155」を参照してください(特殊な用語、コマンド、またはコードについては、わかりやすくするためイタリック体で示しています)。

ROM機能コマンド

ROM機能コマンドは、ROM IDを検出するため、またはROM IDを用いてさまざまなモードでデバイスを選択するために使用します。ROM IDは、ファミリコード、シリアル化フィールド、および巡回冗長検査(CRC)を含む固有の64ビットの数値です。1-Wireマスタは、1-Wireリセットを送出しプレゼンスを受信した後でこれらの機能の1つを送信します。

Read ROMコマンドは、ROM IDをじかに読み出します。Read ROMコマンドは、1つのデバイスのみ接続されている場合にのみ1-Wireネットワーク上で使用することができます。複数のデバイスのネットワークでは、Search ROMコマンドでROM IDを検出する必要があります。この検索アルゴリズムの詳細は「アプリケーションノート187」で説明しています。Conditional Search ROMコマンドは、何らかのアラーム状態にある1つの1-Wireデバイスのみが応答する以外は、Search ROMと同様に機能します。これは、注意が必要なデバイスのみを検出するために使用します。

Skip ROMコマンドは、ROM IDに関係なくすべてのデバイスを選択するために使用します。このコマンドは、十分なエネルギーがあるという前提でプログラムメモリデバイスをグループにまとめるために使用することが可能です。Overdrive Skipコマンドは似ていますが、すべてのデバイスを選択するだけではなく、これらのデバイスをオーバドライブの通信速度に切り替えます。Overdrive Skipコマンドは、すべての対応する1-Wireデバイスをオーバドライブ速度に切り替えるためによく使用されます。デバイスをオーバドライブで通信するようにした後、従来のSearch ROMシーケンスを使用してROM IDを検出することができます。

Match ROMコマンドは、選択したROM IDをブロードキャストすることによって特定のデバイスを選択します。Overdrive Matchは似ていますが、同時にデバイスをオーバドライブの通信速度に切り替えます。Resumeコマンドは選択された最後のデバイスを再度選択するために使用します。これは同じデバイスに繰り返しアクセスするときのショートカットコマンドです。

表1では、特定のROM機能コマンドにAPIをマッピングしています。各種の1-Wire APIは、ネットワーク上に複数の1-Wireデバイスが存在するという考え方で設計されているため、単一デバイスのネットワークで必要なコマンドまたは最も有効なコマンドは直接サポートされていないことに留意してください。ただし、Customコマンドで後述するように、基本通信機能を使用してあらゆるコマンドを構築することができます。

表1. ROM機能コマンド
Command PD TMEX
Read ROM No predefined API, see Custom Commands. No predefined API, see Custom Commands.
Match ROM owAccess TMAccess
Search ROM owFirst, owNext TOMFirst, TMNext
Conditional Search ROM owFirst, owNext TMFirstAlarm, TMNextAlarm
Skip ROM No predefined API, see Custom Commands. No predefined API, see Custom Commands.
Overdrive Skip* No predefined API, see Custom Commands. No predefined API, see Custom Commands.
Overdrive Match owOverdriveAccess TMOverAccess
Resume Command** No predefined API, see Custom Commands. No predefined API, see Custom Commands.
Command OWAPI OWCOM
Read ROM No predefined API, see Custom Commands. No predefined API, see Custom Commands.
Match ROM (package com.dalsemi.onewire.adapter)
DSPortAdapter.select
DSPortAdapter.select
Search ROM (package com.dalsemi.onewire.adapter)
DSPortAdapter.getFirstDeviceContainer,
DSPortAdapter.getNextDeviceContainer
DSPortAdapter.getFirstDeviceContainer,
DSPortAdapter.getNextDeviceContainer
Conditional Search ROM (package com.dalsemi.onewire.adapter)
DSPortAdapter.setSearchOnlyAlarmingDevices
(then same as Search ROM)
DSPortAdapter.setSearchOnlyAlarmingDevices
(then same as Search ROM)
Skip ROM No predefined API, see Custom Commands. No predefined API, see Custom Commands.
Overdrive Skip* No predefined API, see Custom Commands. No predefined API, see Custom Commands.
Overdrive Match* (package com.dalsemi.onewire.container)
OneWireContainer.setSpeed
OneWireContainer.doSpeed
OneWireContainer.setSpeed
OneWireContainer.doSpeed
Resume Command** No predefined API, see Custom Commands. No predefined API, see Custom Commands.
*注:オーバドライブの通信速度をサポートする1-Wireデバイスにのみ適用
**注:Resumeコマンドをサポートする1-Wireデバイスにのみ適用

メモリ機能コマンド

メモリ機能コマンドは、デバイスによって少し異なります。ただし、その主要な目的は同じで、デバイスのメモリ領域の読出しと書込みです。これらの異なるコマンド構造に対処するため、1-Wire APIはこれらの相違点を取り除くように構築しました。たとえば、汎用の書込みメモリAPIはWrite Scratchpad、Read Scratchpad、およびCopy Scratchpadシーケンス、あるいはEPROM書込みメモリシーケンスを使用することができます。APIユーザにとって、これは同じに見えます。

ほとんどのAPIに3レベルのメモリコマンドがあります。1つ目のメモリコマンドはいずれの構造も持たないメモリ(未処理)に対する読出しと書込みを可能にします。2つ目のメモリコマンドはUniversal Data Packet (UDP)というパケット構造を使用します。3つ目のメモリコマンドタイプは、複数のUDP構造を1つのファイル構造にまとめます。UDPとファイル構造の説明については、「アプリケーションノート114」を参照してください。表2では、3タイプのメモリ動作にAPIをマッピングしています。

表2. メモリ機能の要約
Command PD TMEX
Write Raw owWrite TMProgramBlock (EPROM only) (see Custom Commands)
Read Raw owRead TMProgramBlock (EPROM only) (see Custom Commands)
Write UDP owWritePagePacket TMWritePacket
Read UDP owReadPagePacket TMReadPacket
Write File owCreateFile
owWriteFile
TMCreateFile
TMWriteFile
Read File owOpenFile
owReadFile
TMOpenFile
TMReadFile
 
Command OWAPI OWCOM
Write Raw (package com.dalsemi.onewire.container)
MemoryBank.write
MemoryBank.write
Read Raw MemoryBank.read MemoryBank.read
Write UDP (package com.dalsemi.onewire.container)
PagedMemoryBank.writePagePacket
PagedMemoryBank.writePagePacket
Read UDP (package com.dalsemi.onewire.container)
PagedMemoryBank.readPagePacket
PagedMemoryBank.readPagePacket
Write File (package com.dalsemi.onewire.application.file)
OWFileOutputStream.write
OWFileOutputStream.write
Read File (package com.dalsemi.onewire.application.file)
OWFileInputStream.read
OWFileInputStream.read

データシートのメモリ機能コマンドの下に含まれるコマンドの一部は、実際はカスタムデバイスコマンドです。これらのコマンドを処理するためのガイドについては、以下の項を参照してください。

カスタムコマンド

ほとんどすべてのカスタムコマンドは、まずMatch ROMに相当するAPIでデバイスを選択してから、データの双方向ブロックを1-Wireネットワークに送信することによって得ることができます。このブロックは、必要な書込みコマンドをブロックに入れ、1-Wireデバイスから読み出したブロックにFF (hex)バイトを入れることによって構築されます。たとえば、DS1994はメモリにマッピングされたリアルタイムクロック(RTC)レジスタを備えており、Read Memoryコマンドでアクセスすることができます。以下の図1は、DS1994のデータシートからの引用です。

DS1994は新規設計用に推奨されていません。

Figure 1. DS1994 read memory flow (data sheet).
図1. DS1994のメモリ読出しフロー(データシート)

DS1994のデータシートで規定されているように、RTCレジスタはアドレス0202 (hex)から始まる5バイト長です。図1に示したメモリコマンドフローは、Match ROMなどのROM機能コマンドでデバイスが選択された後に開始されます。

以下の表3は、フローチャートに基づいて1-Wireバスに送信される双方向データのブロックを構成する8バイトを一覧表示しています。このデータは一度に1バイトずつ送信することができますが、多くの場合、ブロックを作成してすべてを一度に送信すると効率が向上します。

表3. RTC読出しブロック
Block Offset Byte Value (hex) Description
0 F0 Master TX Read Memory command
1 02 Master TX TA1 (address, least significant byte, T7:T0)
2 02 Master TX TA2 (address, most significant byte, T15:T8)
3 FF Master RX byte 0 of RTC (address 0202h)
4 FF Master RX byte 1 of RTC (address 0203h)
5 FF Master RX byte 2 of RTC (address 0204h)
6 FF Master RX byte 3 of RTC (address 0205h)
7 FF Master RX byte 4 of RTC (address 0206h)

図2は、1-Wireパブリックドメイン(PD)のAPI用に記述した「C」の例であり、表3に示したブロックを使用してDS1994のRTCを読み出しています。

図2. PDのRTC読出しの例

   unsigned char datablock[] = { 0xF0,0x02,0x02,0xFF,0xFF,0xFF,0xFF,0xFF };
   int portnum=0;

   // select the current device (Match ROM)
   if (owAccess(portnum))
   {
         // send the read memory command and address, receive the RTC value
         if (owBlock(portnum, 1, datablock, 8))
         {
         // RTC is now in bytes 3-7 of datablock
         ...
         }
   }
表4は、各APIの双方向ブロックコマンドを示します。完全を期すため、シングルバイトとビットコマンドも記載しています。

表4. 汎用の1-Wire IO機能
Command PD TMEX
block (bidirectional) owBlock TMBlockStream
byte (bidirectional) owTouchByte TMTouchByte
bit (bidirectional) owTouchBit TMTouchBit
read byte owReadByte TMTouchByte(data = FF hex)
write byte owWriteByte TMTouchByte(data to write)
reset owTouchReset TMTouchReset
Command OWAPI OWCOM
block (bidirectional) (package com.dalsemi.onewire.adapter)
DSPortAdapter.dataBlock
DSPortAdapter.dataBlock
byte (bidirectional) (package com.dalsemi.onewire.adapter)
DSPortAdapter.dataBlock
(single byte block)
DSPortAdapter.dataBock
(single byte block)
bit (bidirectional) Not available Not available
read byte (package com.dalsemi.onewire.adapter)
DSPortAdapter.getByte
DSPortAdapter.getByte
write byte (package com.dalsemi.onewire.adapter)
DSPortAdapter.putByte
DSPortAdapter.putByte
1-Wire reset + presence detect (package com.dalsemi.onewire.adapter)
DSPortAdapter.reset
DSPortAdapter.reset

1-Wireの各デバイスタイプのデータシートに注目すると、適切なブロックを構築して汎用の1-Wire IO機能を使用することによって、あらゆる機能を実行することができるようになります。一部の1-Wireデバイスは、特別な給電の制約やプログラムパルスを必要とします。これらは、表5の特殊API機能が取り扱います。

表5. 特殊な1-Wire電力機能
Command PD TMEX
EPROM programming pulse owProgramPulse TMProgramPulse
Power delivery
(strong pullup) after bit
owReadBitPower (read bit only) TMOneWireLevel (prime for next bit)
TMTouchBit
Power delivery
(strong pullup) after byte
owWriteBytePower (write byte only) TMOneWireLevel (prime for next byte)
TMTouchByte
Command OWAPI OWCOM
EPROM programming pulse (package com.dalsemi.onewire.adapter)
DSPortAdapter.startProgramPulse
DSPortAdapter.startProgramPulse
Power delivery
(strong pullup) after bit
(package com.dalsemi.onewire.adapter)
DSPortAdapter.startPowerDelivery
(prime for next bit)
DSPortAdapter.putBit /
DSPortAdapter.getBit
DSPortAdapter.startPowerDelivery
(prime for next bit)
DSPortAdapter.putBit /
DSPortAdapter.getBit
Power delivery
(strong pullup) after byte
(package com.dalsemi.onewire.adapter)
DSPortAdapter.startPowerDelivery
(prime for next byte)
DSPortAdapter.putByte /
DSPortAdapter.getByte
DSPortAdapter.startPowerDelivery
(prime for next byte)
DSPortAdapter.putByte /
DSPortAdapter.getByte

1-WireはMaxim Integrated Products, Inc.の登録商標です。


フィードバックをお寄せください。
内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。—マキシムはお客様からいただく訂正、提案を元に改善していきます。 このページを評価し、フィードバックを送信する。


自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。



その他の情報  APP 1100: May 22, 2008
DS1822 エコノ1-Wireディジタルサーモメータ フルデータシート
(PDF, 228kB)
無料
サンプル
DS1822-PAR エコノパラサイトパワー・ディジタルサーモメータ フルデータシート
(PDF, 212kB)
DS18B20 プログラマブル分解能1-Wireディジタルサーモメータ フルデータシート
(PDF, 188kB)
無料
サンプル
DS18B20-PAR 1-Wire寄生電力ディジタルサーモメータ フルデータシート
(PDF, 208kB)
DS18S20 1-Wire寄生電力ディジタルサーモメータ フルデータシート
(PDF, 188kB)
無料
サンプル
DS18S20-PAR 寄生電源ディジタルサーモメータ フルデータシート
(PDF, 264kB)
DS1904 RTC iButton フルデータシート
(PDF, 216kB)
無料
サンプル
DS1920 温度用iButton® フルデータシート
(PDF, 560kB)
DS1921G Thermochron iButton フルデータシート
(PDF, 632kB)
DS1963S SHA iButton
DS1971 256ビットEEPROM iButton® フルデータシート
(PDF, 296kB)
無料
サンプル
DS1973 4Kb EEPROM iButton® フルデータシート
(PDF, 268kB)
無料
サンプル
DS1982 1KbアドオンリーiButton® フルデータシート
(PDF, 708kB)
無料
サンプル
DS1985 16KbアドオンリーiButton® フルデータシート
(PDF, 708kB)
無料
サンプル
DS1986 64KbアドオンリーiButton® フルデータシート
(PDF, 688kB)
DS1990A シリアルナンバーiButton フルデータシート
(PDF, 200kB)
無料
サンプル
DS1992 1Kb/4KbメモリiButton® フルデータシート
(PDF, 348kB)
無料
サンプル
DS1993 1Kb/4KbメモリiButton® フルデータシート
(PDF, 348kB)
無料
サンプル
DS1995 16KビットメモリiButton® フルデータシート
(PDF, 68kB)
DS1996 64kビットメモリiButton® フルデータシート
(PDF, 352kB)
DS2401 シリコンシリアルナンバー フルデータシート
(PDF, 288kB)
無料
サンプル
DS2405 アドレス指定可能なスイッチ フルデータシート
(PDF, 436kB)
無料
サンプル
DS2406 1Kbメモリ付き、デュアル、アドレス指定可能なスイッチ フルデータシート
(PDF, 264kB)
無料
サンプル
DS2415 1-Wireタイムチップ フルデータシート
(PDF, 256kB)
DS2417 割込み付き、1-Wireタイムチップ フルデータシート
(PDF, 164kB)
無料
サンプル
DS2431 1024ビット、1-Wire EEPROM フルデータシート
(PDF, 272kB)
無料
サンプル
DS2432 SHA-1エンジン内蔵、1kビット保護1-Wire EEPROM 要約版データシート
(PDF, 408kB, English only)
DS2433 4kb、1-Wire EEPROM フルデータシート
(PDF, 700kB)
無料
サンプル
DS2438 スマートバッテリモニタ フルデータシート
(PDF, 376kB)
無料
サンプル
DS2450 1-WireクワッドA/Dコンバータ フルデータシート
(PDF, 360kB)
無料
サンプル
DS2502 1Kbアドオンリーメモリ フルデータシート
(PDF, 648kB)
無料
サンプル
DS2505 16Kbアドオンリーメモリ フルデータシート
(PDF, 320kB)
無料
サンプル
DS2506 64Kbアドオンリーメモリ フルデータシート
(PDF, 900kB)
無料
サンプル
DS2760 高精度Li+ (リチウムイオン)バッテリモニタ フルデータシート
(PDF, 296kB)
 

ダウンロード、PDFフォーマットダウンロード、PDFフォーマット (62kB)
 AN1100, AN 1100, APP1100, Appnote1100, Appnote 1100



         


      プライバシーポリシー    法的お知らせ

      Copyright © 2008 by Maxim Integrated Products, Dallas Semiconductor