
今回はXBeeにおけるAPIモードと透過モードとATコマンドモードについてそれぞれのモードの機能や用途などを解説します。 XBeeにおけるRadio Configuration のAPI ConfigurationのAPにはAPI Mode without Escape[1]とAPI Mode with Escape[2]の2つのモードがあります。

XBeeデバイスでは、APIモードは、体系化されたフレームを介して通信するための構造化インターフェースを提供しています。
1.API Mode without Escape(API 1)
・動作:APIフレームの区別は、開始区切り文字(0x7E)と長さバイトのみに依存します。
・信頼性:パケット内のバイトが失われると、長さのカウントがオフになり、次のAPIフレーム(パケット)も失われます。
・フレーム構造:基本的なフレーム構造は、開始区切り文字、長さ、フレームデータ、チェックサムで構成されます。
2.API Mode with Escape(API 2)
・動作:特にノイズの多いRF環境において、あるいは加速度センサからの信号のように信号の変動が大きい場合にAPIフレーム内の文字シーケンスをエスケープすることで信頼性を向上させます。
・文字のエスケープ:開始区切り文字を除くすべてのバイトは、必要に応じてエスケープする必要があります。以下のデータバイトはエスケープする必要があります。
0x7E: 開始区切り文字
0x7D: エスケープ文字
0x11: XON ソフトウェアフロー制御で使用される制御文字を指します。データ送信を再開するために使用される制御文字です。デバイスが一時停止後にデータを受信する準備が整ったことを示します。
0x13: XOFF ソフトウェアフロー制御で使用される制御文字を指します。これはデータ送信を一時停止するために使用される制御文字です。デバイスがデータを受信する準備が整っておらず、送信側が追って通知があるまで送信を停止する必要があることを示します。
3.エスケープ処理
1.エスケープ文字 0x7D をエスケープ対象となるバイトの前に挿入します。
2.エスケープするバイトに 0x7D を追加し、0x20 と排他的論理和(ExOR)をとります。
・信頼性:受信したすべての 0x7E バイトが開始区切り文字であることを保証します。この文字はエスケープする必要があるため、他のフレームフィールドに含めることはできません。
・フレーム構造:API 1 と同様ですが、エスケープ文字を含みます。フレームの長さフィールドにはエスケープ文字は含まれず、チェックサムはエスケープされていないデータで計算されます。
以下にエスケープ処理の例を示します。
(エスケープ処理前のフレーム)
7E 00 0F 17 01 00 13 A2 00 40 AD 14 2E FF FE 02 4E 49 6D
このフレームの1バイト目に0x7Eがありますが、エスケープ対象なのは 先頭の 0x7E 以降 です。
上のフレームにはエスケープ処理の対象となる0x13が7バイト目に出現しています。
0x13 → 0x7D 0x33(0x13 XOR 0x20 = 0x33)
(エスケープ処理後のフレーム)
7E 00 0F 17 01 00 7D 33 A2 00 40 AD 14 2E FF FE 02 4E 49 6D
エスケープ処理前後のフレームを比較すると、フレームの長さにはエスケープ文字は含まれず、チェックサムはエスケープ前後で同一であることが確認できます。