白書2:1-Wire®パブリックドメインキットの使用

白書2:1-Wire®パブリックドメインキットの使用

著者の連絡先情報

要約

このアプリケーションノートでは、1-Wireパブリックドメイン(PD)キットの使用方法について説明します。キットは、シリアルから1-WireへのラインドライバDS2480B、またはカスタム1-Wireインタフェースを使用して1-Wireマスタを構成するための、完全オープンソース、ポータブルCライブラリです。また、キットには数々の1-WireおよびiButton®デバイスをカバーする多数のアプリケーション例が含まれています。このアプリケーションノートでは、キットのファイルを組み合わせて、サポートおよび未サポートのオペレーティングシステムでアプリケーションを構成する方法について説明します。

はじめに

このアプリケーションノートでは、1-Wireパブリックドメイン(PD)キットの使用方法について説明します。キットはマキシムの1-Wireデバイスを使用するアプリケーションを作成する開発者を支援するために構築されました。また、キットは1-Wireネットワークとの通信方法を理解するための学習ツールでもあります。

このアプリケーションノートでは、キットのファイルを組み合わせてアプリケーションを構成する方法について説明します。また、異なるOSプラットフォームに対応する(それが未対応のOSプラットフォームの場合でも)カスタムアプリケーションを生成する方法についても示します。

1-Wire PDキットのソースコードは「C」で記述されています。この言語はもっとも一般的なプログラミング言語であり、また異なるオペレーティングシステムに対する移植性にも優れた言語であるため選択しました。アプリケーションノート155、「1-Wire®ソフトウェアリソースガイドデバイス説明」では、1-WireのPDキットおよびその他利用可能なソフトウェア開発キットについて説明しています。

API機能のグループ分類

1-Wire PDキットのAPIソフトウェア機能は、目的に応じてグループ(通常は個別ファイル)に分類されます。

  • Sessionグループは1-Wireの排他的な使用権を獲得および開放するため、その他のアプリケーションは通信を妨げることができません。
  • Linkグループは1-Wire通信機器の基本セットで、これにはリセット、ビットの読出し/書込み、EPROMプログラミングパルス、および給電が含まれています。これらのリンク機能はプラットフォームに依存しています。
  • Network機能グループはデバイスの検出と選択を行います。各1-Wireデバイスは、各選択に対して1-Wireネットワークアドレスを持ちます。
  • Transportグループはブロック通信およびメモリの読出し/書込みの基本機能を実行しますが、これには1-Wireデバイスに対するパケットの読出し/書込み機能が含まれます。
  • Fileグループには1-Wireファイル構造を使用するメモリレベル機能が含まれています(アプリケーションノート114、「1-Wire File Structure」)。Fileグループは複数のメモリページを備えた1-Wireデバイスで使用することができます。
  • Deviceグループは上記の機能グループを使用して1-Wireデバイス上の特定の動作を実行します。これらの動作には、SHAの動作、温度の読取り、電圧の読取り、およびスイッチ状態の設定などが含まれます。

ソースファイルの構成

1-Wire PDキットのプラットフォームの特定コードは、他のプラットフォームへの移植性を高めるために、いくつかのファイル(TODOテンプレート)で構成されています。これらのファイルは、ハードウェアに依存するAPIの最低位レベルを指します。これらのファイルが正しくコード化されていれば、残りのAPI (およびサンプルアプリケーション)は正常にコンパイルされ動作するはずです。

特定のプラットフォーム用APIの最低位レベルを構築するには、3つの一般的な方法があります。最初の方法は「general」、2つ目は「userial」と呼ばれています。一般的な構築方法では、開発者はLinkレベルの 1-Wireの基本通信機能を使用する必要があります。詳細はアプリケーションノート126、「ソフトウェアを介した1-Wire通信」を参照してください。userial構築方法は、RS-232シリアルポートでの使用に限定されるもので、開発者はマキシムのユニバーサルシリアル1-WireラインドライバマスタであるDS2480Bを使用することを前提としています。userialプラットフォームの構築で使用する唯一のソフトウェア機能は、シリアルボートの基本読込み/書出しです。詳細は、アプリケーションノート192、「DS2480Bシリアル1-Wireラインドライバの使用」を参照してください。マキシムでは、DS9097U-009DS9097U-S09DS9097U-E25DS1411-009、およびDS1411-S09など、DS2480Bをベースとした数種のPCシリアルアダプタを販売しています。

3つ目の「その他」の使用分野では、標準1-Wire PDキットの基本APIを提供していますが、特定のシステムまたはアダプタ機能を利用することによってAPIの使用範囲が広がります。例として、DS9490Rなどの1-WireのUSBアダプタを使用するAPIの使用は、この分野がUSBポートおよびアダプタに内蔵された特別な機能を利用することが求められます。

図1はキットを最大限に活用する方法を決定する手順のフローチャートです。

Figure 1. Usage flowchart for the 1-Wire PD Kit.
図1. 1-Wire PDキットの使用法フローチャート

アプリケーションの作成方法

キットのファイルは複数のサブディレクトリにまとめられています。

  • \appsディレクトリにあるファイルは、\commonディレクトリにあるファイルとともに使用してポートまたはプラットフォームのアプリケーションのベースを形成することができます。
  • lib\generalおよびlib\userialにあるファイルは、前述した移植可能なソースファイルの2セットです。
  • アプリケーションをまとめた最後の部分はLinkファイルで、\lib\userial\linkまたは\lib\general\linkのいずれかにあります。リンクファイルが対象プラットフォームに存在しない場合は、キットで提供されているソースコードのテンプレートファイル(例:「userial」構成用のTODO.Cファイル)を完成させる必要があります。これらのリンクファイルは、1-WireのPDキットを動作させるために正確に記入する必要のあるポートとプラットフォーム機能を備えています。図2は、既存のLinkファイルにすべてのファイルを集めたものです。
Figure 2. Files needed to construct an application.
図2. アプリケーション構築に必要なファイル

表1はキットが現在サポートする数々のプラットフォームの一覧です。プラットフォームは1-Wireパブリックドメインキットのメインページからダウンロードできます。

表1. 1-Wire PDキットがサポートするソフトウェアプラットフォーム

Platform Compiler Library Port Interface Name
Win32® MS Visual C other USB DS9490 + WinUSB winusb32vc
Win32 MS Visual C other USB DS9490 + libusb libusbw32vc
Win32 MS Visual C userial COM DS2480B uwin32vc
Win32 GNU C userial COM DS2480B uwin32gnu
Win32 MS Visual C general LPT DS1410E* gpw32vc
Win32 MS Visual C other USB
COM
LPT
multiport multiw32vc
Win64 MS Visual C other USB DS9490 + WinUSB winusb64vc
Win64 MS Visual C other USB DS9490 + libusb libusbw64vc
Win64 MS Visual C userial COM DS2480B uwin64vc
Win64 MS Visual C general LPT DS1410E* gpw64vc
Win64 MS Visual C other USB
COM
LPT
multiport multiw64vc
Mac OS® X GNU C other USB DS9490 + libusb libusbmacosx
Mac OS X GNU C userial COM DS2480B umacosxgnu
Linux® GNU C other USB DS9490 + libusb libusblinux
Linux GNU C userial COM DS2480B ulinuxgnu
DS550 Keil® general Micro Active pullup pin gds550keil
DS550 Keil userial Micro DS2480B uds550keil
*DS1410Eは新規設計には推奨されていません。