Microchip社のIrDA標準スタックツールを使うと、IrDA 標準プロトコルを使う新しいプロジェクトを簡単に始 める事ができます。このツールは、本書に記載したラ イブラリおよびソースファイルと一緒にインストール
されます(補遺A:「ソースコード」参照)。スタック
ツールの更新情報については、スタックと一緒にイン ストールされる READMEファイルを参照してくださ い。
1. インストールされたサブディレクトリ内にある IrDA標準スタックツール(MIST.EXE)を実行しま す。
このツールは、Microchip社製IrDA標準スタック を使うために必要なプロジェクト ファイルを生 成します。また、選択されたプロトコルとデバイ スのタイプに基づいて、プロジェクトにどのライ ブラリ ファイルをインクルードする必要がある のかを示します。
2. [IrDA Device] タブを開き、以下のフィールドを 設定します。
a) Device Name: 探索プロセスでデバイスの識 別名として使う文字列(最大32文字) b) IrDA Protocol: アプリケーションが使用する
IrDA標準プロトコル
c) Stack Configuration: アプリケーションのデ バイスタイプ
d) Service Hints: アプリケーション向けのサー ビスヒント
e) PIC Device Family: アプリケーションのター
ゲットPICマイクロコントローラ デバイスの
デバイスファミリを選択する。
f) PIC Device Header File: アプリケーション のターゲットPICマイクロコントローラ デバ イス向けのヘッダファイルを指定する。
g) UART: IrDA 通信に使う UART を選択する (ターゲット デバイスが内蔵しているUART を選択する事)。
h) Oscillator Frequency (Hz): アプリケーショ ンのオシレータ周波数(Hz)を入力し、[Select]
をクリックする。
アプリケーションでサポート可能なbaud レートが表示されます。[Negotiation Field Parameters]タブで[Supported Baud Rates]
を選択する際は、これらのbaudレートを参 考にします。
3. PICデバイス ヘッダファイルを削除します。
図5: [IrDA® Device]タブの設定
Note: 「PIC Device Family」でPIC32を選択した場 合、「Available Baud Rates」枠内に選択項目 として[Peripheral Bus (Fpb)]が表示され、 そ こで周辺モジュールバス クロックの分周比を 選択できます。
4. [Negotiation Field Parameters]タブを開きます。
このタブでは、ネゴシエーションに使う接続パラ メータを入力します。以下の一般的な既定値設定 が提供されます。
a) Supported Baud Rates: アプリケーション がサポートするbaudレートを選択する。
b) Additional BOF’s: 各フレームの開始時に必 要 な 追 加 フ ラ グ の 数 を 選 択 す る (BOF = Beginning of Frame)。
c) Minimum Turnaround Time: 通信の最小 ターンアラウンド時間を選択する。
d) Maximum Turnaround Time: 通信の最大 ターンアラウンド時間を選択する。
e) Window Size: アプリケーション ウィンドウ のサイズを選択する(最大ウィンドウ サイズ はライブラリによって固定されている)。
f) Data Size: データフレームのサイズを選択す る(最大データサイズはライブラリによって 固定されている)。
g) Link Disconnect Time: サポートするリンク 切断時間を選択する。
5. 全ての情報を設定した後に、[Generate]をクリッ クしてプロジェクト ファイル (IrDA_def.h と myIrDA.c)を生成します。
設定した情報にエラーが含まれていた場合、メッ セージが表示され、ファイルは生成されません。
ファイルの生成に成功すると、プロジェクト ディレクトリを指定するよう促されます。
6. 生成したファイルを格納するプロジェクト ディ レクトリを選択し、[OK]をクリックします。
図6: [Configuring the Negotiation Field Parameters]タブの設定
7. [Find Fosc]タブを開きます。
この計算用タブを使って、最適なオシレータ周波 数値を求めます。以下の一般的な既定値設定が提 供されます。
a) Max Desired Baud Rate: 最大目標baudレー トを指定する。
b) Max Baud Error(%): 最大 baud レート誤差 (%)を指定する。
c) Fosc Range (Hz): オシレータの周波数レン ジを指定する。
d) Increment by: 周波数の刻み値を指定する。
e) Interrupt Handler: [Qualify with Interrupt Processing] に チ ェ ッ ク マ ー ク を 付 け、
[nstructions in Interrupt Handler]と[Maximum
Interrupt Frame Usage (%)]に値を入力する。
f) Instructions in Interrupt Handler: 割り込み ハンドラ内の最大命令数を指定する。
g) Maximum Interrupt Frame Usage (%): 最大 割り込みフレーム使用率(%)を指定する。
h) First Fit: 実行するファーストフィット チェッ クを選択する。
i) [Find]をクリックすると値が計算される。
j) [Stop]をクリックすると、次の値の計算は停
止する。
k) [Find Next]をクリックすると、次に近い値が 計算される。
l) [Use This] をクリックすると、生成される ヘッダファイルにこれらの値が適用される。
図7: [Find FOSC]タブの設定
まとめ
Microchip社のIrDA標準スタックは、アプリケーショ ンにIrDA標準プロトコルのサポートを追加するための モジュール式で使いやすいライブラリのセットを提供 します。最下層ドライバは、スタック インターフェイ スを簡潔に保ったまま、スタックをターゲット ハード ウェアに適合させる事を可能にします。Microchip 社 のIrDA標準スタックは、組み込みアプリケーションに 付加価値の高いコネクティビティを提供します。
参考資料
• 赤外線通信協会(IrDA)のウェブサイト: http://www.irda.org
• Microchip Technology, Inc.のウェブサイト: http://www.microchip.com
補遺 A: ソースコード
本書に関連するライブラリおよびソースコード ファ イルを1つにまとめたアーカイブ ファイルは、以下の
Microchip社ウェブサイトからダウンロードできます。
www.microchip.com
ソフトウェア ライセンス使用許諾
Microchip Technology Incorporated (以下「弊社」)が提供するソフトウェアは、弊社製品との組み合わせでのみ使われる事を目的 として弊社のお客様に供給されます。
ソフトウェアの所有権は弊社および/またはソフトウェアのサプライヤに帰属し、適用著作権法のもとに保護されています。無断 複写、複製、転載は禁じられています。上記の制約に違反してソフトウェアを使った場合、使用者はライセンス使用許諾の侵害に 対して民事責任を問われ、適用法のもとに罰せられます。
本ソフトウェアは「無条件受け取り」を条件として提供されます。本ソフトウェアの商品性および特定目的に対する適合性の黙示 保証を含む(ただし必ずしもこれらに限定されない)明示、暗示、法的な保証は一切致しません。弊社は、いかなる場合も、特殊、
偶発的、必然的にかかわらず、いかなる理由があろうとも、一切の賠償責任を負いません。
補遺 B: IrCOMM 9-WIRE COOKED データ構造体
リモートデバイスから受信した制御パラメータ値を保 存するために、以下のデータ構造体を使います。アプ リケーションからこれらのパラメータにアクセスする には、変数に直接アクセスするのではなく、補遺 C:
「IrCOMM 9-Wire Cooked制御チャンネルにアクセス するためのマクロ」に記載したマクロの使用を推奨し ます。
これらのデータ構造体を使う事で、アプリケーション に固有の制御パラメータを保持する事もできます。こ れらの構造体を使う場合に使用可能な定数について は、ファイルirdep.hを参照してください。
例B-1: サービスタイプ パラメータ構造体
例B-2: データ フォーマット パラメータ構造体
例B-3: 制御インジケータ パラメータ構造体
例B-4: フロー制御パラメータ構造体
例B-5: ラインステータス パラメータ構造体
例B-6: DTEラインステータス構造体
例B-7: DCEラインステータス構造体
typedef union _IRDA_SERVICE_TYPE {
BYTE Val;
struct _IRDA_SERVICE_TYPE_bits {
unsigned int :1;
unsigned int b3Wire :1;
unsigned int b9Wire :1;
unsigned int bCentronics :1;
} bits;
} IRDA_SERVICE_TYPE;
typedef union _IRDA_DATA_FORMAT {
BYTE Val;
struct_IRDA_DATA_FORMAT_bits {
unsigned int characterLength :2;
unsigned int stopBits :1;
unsigned int parity :2;
} bits;
} IRDA_DATA_FORMAT;
typedef union _IRDA_CONTROL_INDICATIONS {
BYTE Val;
struct _IRDA_CONTROL_INDICATIONS_bits {
unsigned int breakIndication :1;
unsigned int pollLineSettings :1;
} bits;
} IRDA_CONTROL_INDICATIONS;
typedef union _IRDA_FLOW_CONTROL {
BYTE Val;
struct _IRDA_FLOW_CONTROL_bits {
unsigned int XON_XOFF_input :1;
unsigned int XON_XOFF_output :1;
unsigned int RTS_CTS_input :1;
unsigned int RTS_CTS_output :1;
unsigned int DSR_DTR_input :1;
unsigned int DSR_DTR_output :1;
unsigned int ENQ_ACK_input :1;
unsigned int ENQ_ACK_output :1;
} bits;
} IRDA_FLOW_CONTROL;
typedef union _IRDA_LINE_STATUS {
BYTE Val;
struct _IRDA_LINE_STATUS_bits {
unsigned int :1;
unsigned int OverrunError :1;
unsigned int ParityError :1;
unsigned int FramingError :1;
} bits;
} IRDA_LINE_STATUS;
typedef union _IRDA_DTE_LINE_STATUS {
BYTE Val;
struct _IRDA_DTE_LINE_STATUS_bits {
unsigned int deltaDTR :1;
unsigned int deltaRTS :1;
unsigned int DTR :1;
unsigned int RTS :1;
} bits;
} IRDA_DTE_LINE_STATUS;
typedef union _IRDA_DCE_LINE_STATUS {
BYTE Val;
struct _IRDA_DCE_LINE_STATUS_bits {
unsigned int deltaCTS :1;
unsigned int deltaDSR :1;
unsigned int deltaRI :1;
補遺 C: IrCOMM 9-WIRE COOKED 制 御チャンネルにアクセスするた めのマクロ
以下のマクロは、リモートデバイスから受信した制御 パラメータへのアクセスに利用できます。これらのマ クロは、アプリケーションが宣言した制御チャンネル 変数へのアクセスには使えません。
表C-1: フロー制御値マクロ
マクロ名 概要
IrDA_GetCommStatus_DataRate() リモートデバイスのデータレート(符号なし32ビット値) IrDA_GetCommStatus_DataSize() 文字長:
5ビット = 0x00 6ビット = 0x01 7ビット = 0x02 8ビット = 0x03 IrDA_GetCommStatus_StopBits() ストップビット:
1個のストップビット = 0 2個のストップビット = 1 IrDA_GetCommStatus_Parity() パリティのあり/なしとタイプ:
パリティなし = 0x00 奇数パリティ = 0x01 偶数パリティ = 0x03 マークパリティ = 0x05 スペースパリティ = 0x07
IrDA_GetCommStatus_XON() XON文字
IrDA_GetCommStatus_XOFF() XOFF文字
IrDA_GetCommStatus_ENQ() ENQ文字
IrDA_GetCommStatus_ACK() ACK文字
IrDA_GetCommStatus_Break() ブレーク:
ブレークをクリア = 0 ブレークをセット = 1
IrDA_GetCommStatus_PollLineSettings() センダーがラインの設定と状態変化を要求している = 1 要求なし = 0
IrDA_ClearPollLineSettings() ライン設定状態のポーリングをクリア
(要求への応答後に必須)
表C-2: フロー制御信号マクロ
表C-3: DTEライン設定/状態変化マクロ
表C-4: DCEライン設定/状態変化マクロ
マクロ名 概要
IrDA_GetCommStatus_XON_XOFF_input() 入力のXON/XOFF IrDA_GetCommStatus_XON_XOFF_output() 出力のXON/XOFF IrDA_GetCommStatus_RTS_CTS_input() 入力のRTS/CTS IrDA_GetCommStatus_RTS_CTS_output() 出力のRTS/CTS IrDA_GetCommStatus_DSR_DTR_input() 出力のDSR/DTR IrDA_GetCommStatus_DSR_DTR_output() 出力のDSR/DTR IrDA_GetCommStatus_ENQ_ACK_input() 出力のENQ/ACK IrDA_GetCommStatus_ENQ_ACK_output() 出力のENQ/ACK
マクロ名 概要
IrDA_GetCommStatus_deltaDTR() DTRは状態変化していない = 0 DTRは状態変化した = 1 IrDA_GetCommStatus_deltaRTS() RTSは状態変化していない = 0
RTSは状態変化した = 1
IrDA_GetCommStatus_DTR() DTRの状態
IrDA_GetCommStatus_RTS() RTSの状態
マクロ名 概要
IrDA_GetCommStatus_deltaCTS() CTSは状態変化していない = 0 CTSは状態変化した = 1 IrDA_GetCommStatus_deltaDSR() DSRは状態変化していない = 0
DSRは状態変化した = 1 IrDA_GetCommStatus_deltaRI() RIは状態変化していない = 0
RIは状態変化した = 1 IrDA_GetCommStatus_deltaCD() CDは状態変化していない = 0
CDは状態変化した = 1
IrDA_GetCommStatus_CTS() CTSの状態
IrDA_GetCommStatus_DSR() DSRの状態
IrDA_GetCommStatus_RI() RIの状態
IrDA_GetCommStatus_CD() CDの状態
補遺 D: 改訂履歴
リビジョン A (2007 年 3 月 )
本書の初版です。
リビジョン B (2010 年 12 月 )
このリビジョンでの変更内容は以下の通りです。
• 本書全体に32ビット マイクロコントローラに関す る記述を追加しました。
•「32ビット マイクロコントローラ」を追加しました。
• 例10を追加しました。
• 図5と図6を更新しました。
• IrDAスタックツールのオプション機能であるFOSC
タブの詳細な使用方法を記載したステップを追加し ました「Microchip( 社のIrDA®スタックツール」の ステップ 7参照)。