IrDA通信の基礎概要

〔動作編〕   〔マイコンのトップに戻る〕


以前、赤外線リモコンの話や赤外線リモコンを利用したデータ通信の話はこちらで行っています。
このページではIrDA通信の実験を行ってみたいと思います。
先ずは、IrDA(Infrared Data Association)通信の基礎をサラッと書いて置きます。

IrDAは赤外線で通信を行う物で"IrDA規格"と言う国際標準の手順に従って通信を行います。
ですからプロトコル等の手順が厳格なのでぇとってもぉ複雑です。
なのでぇ、簡単にデータ通信を行いたい場合は上記の様に赤外線リモコンを使って送受信すれば良いと
思います。通信距離も7m-10m位行けそうです、尚、IrDAは1m以下です。
又、IrDA通信の基礎は"MONOist"さんの「いまさら聞けない 赤外線通信入門」を一読しましょう。

Microchip 社製16/32 ビットMCU 向け IrDA 標準スタック」を利用しようと思っています、
なのでぇ、ここでの記事はこれに関係する内容での話となります。

IrDA通信は、相手と接続を試みるプライマリ側と接続待ちを行うセカンダリ側との
1対1(ポイントツー ポイント)で半二重方式(送信受信は同時には通信不可)で行われます。

IrDA 標準プロトコルスタック階層構造
ユーザアプリケーション
プロトコル層
OBEX
IrCOMM
トランスポート層
Tiny TP
リンク層
IrLMP
IAS
 
IrLAP
物理層
IrPHY 1.0

IrPHY 1.0 (物理シグナリングレイヤ)

シリアル赤外線通信速度(SIR)は、プライマリ側が9600bpsでセカンダリ側とネゴシエーションを行い、
その後115200bps(19.2 kbps、38.4 kbps、57.6 kbpsも可)の通信速度で送受信を行います。
(IrSIRの他に高速で通信出来るIrMIR/IrFIR/IrVFIR/IrUFIIR等が有る様です。)

IrDA通信での1バイトの信号方式
1バイトの信号方式
1バイトは標準のシリアル通信と同じ方式です。
それをIR信号方式に変換して送ります。
データのLOW時にHIGHにして送ります、パルス幅が少ないのは消費電力の為です。


IrLAP (リンクアクセスプロトコル)

IrLAP-SIR フレームの構成
 [BOF][BOF][アドレス部][制御部][ 情報部 ][FCS(CRC)][EOF]

BOF
BOF(Beginning of Frame)はフレームの開始を表す文字で"0xC0"で、
複数のBOFはフレームが来る事を他のステーションに警告する事です。
アドレス部
相手を識別する為のアドレスを表す、
アドレスの0ビット目が"1"ならコマンドを、"0"ならレスポンスを示す。
制御部
情報部の有無にフレームの受信確認やエラー回復手順等に使われる。
情報部
通常の赤外線通信で送受信されるデータが格納される場所です、
アプリケーションによってこの場所で送受信されるプロトコルが異なります。
FCS
FCS(Frame Check Sequence)は、CRC検査で、アドレス部からFCSの前までが検査対象です、
16ビットCRC値はLSBファーストで送信されます。
EOF
EOF(End of Frame)はフレームの終了を表す文字で"0xC1"です。

IrLAPは、通信圏内に有る相手のデバイスを「装置発見手順(Device Discovery)」に従い探します、
発見したら相手(セカンダリ)とネゴシエーションを行います。
又、複数のデバイスのアドレス衝突回避や伝送エラー検出・回復制御に接続切断等も行います。

IrLMP (リンク管理プロトコル)

複数のアプリケーション例えば、IrCOMM/OBEX/IrMCを持っている場合は相手から送られて来る
データの種類によってそれぞれのアプリケーションへのポートを割り振らなければならなく
これは"IAS"から得られる情報で行われます、即ち、"IrLAP"はシングル通信ですが、
"IrLMP"はマルチ通信となります。
相手の特徴・機能等を知る為には、ネゴシエーション時に一連の質問をする事によって行われます、
これらの質問に対する応答は、セカンダリデバイスの情報アクセスサービス"IAS"に有ります。
なのでぇ、相手が自デバイスの機能を持たないデバイス時は接続を切断します。
即ち、プライマリ側が印刷したいのだがぁセカンダリ側に印刷機能がない場合等です。

IAS (情報アクセス サービス)

IASは、インフォメーションベースと呼ばれるデータベースを持っていてリンク層(IrLMP)で使用されます
内容は各プロトコルに接続する為の情報や、相手がアクセス出来るデバイスの情報、例えば通信速度・
データ容量やバッファ容量等のパフォーマンスに関する色々なサービスへのアクセスに必要な設定情報を
見つけられる様にする為に必要です。

Tiny TP

"IrLMP"で割り振られるポートひとつに対して"TinyTP"というトランスポートプロトコルが実装されます。
これには二つの機能が有り、一つは「フロー制御」でデータの処理が遅く一時的に送信側のデータを待たせる
為の機能です、あと一つが「分割再構成」で分割して送られて来るフレームデータの再構成機能です。

IrCOMM (Infrared Communication Entity)

IrCOMMはシリアル通信及びパラレルポート通信のエミュレーションをサポートする方法を提供します。

シリアル通信は、"IrCOMMの9-wire cooked"と"IrCOMMの3-wire Raw"の二つのサービスプロトコルが有り、
"IrCOMMの9-wire cooked"はRS232C規格をエミュレーションするのでハードウェア及びソフトウェアの
ハンドシェイクインターフェイス(フロー制御:TinyTPが担当する)を模倣する動きをします。
"IrCOMMの3-wire Raw"はハンドシェイクの無い送受信(UART)のみの動作です。

パラレルポート通信は、プリンター等に接続する為のセントロニクスインターフェイス(IrLPT)を
提供しますが"IrCOMMの3-wire Raw"とほとんど同じです。

OBEX (Object Exchange)

OBEXは、オブジェクト交換に使われるプロトコルです。

OBEXデータファイルを送信する場合に他のデバイスへの接続の確立、データの送信、
接続切断とスタックの終了を含むOBEX 転送全体の処理を実行します。
携帯電話で利用する"IrMC"方式の電話帳交換やスケジュール交換機能とメール転送等に使われています。




【きむ茶工房ガレージハウス】
Copyright (C) 2006-2019 Shigehiro Kimura All Rights Reserved.