XBeeモジュールの使い方(エスケープ処理)


 今回はAPIモードのエスケープ処理に関して解説します。APIモードに関しては5/12の記事でAPI Mode without Escape[1]とAPI Mode with Escape[2]の2つのモードに関してが解説しました。今回の解説ではもうすこし踏み込んで具体的に解説します。

AP [1]とAP [2]に関してまとめると以下のようになります。

API Mode without Escape[1]フレームは 0x7E で始まるが、エスケープ処理は行わない。
API Mode with Escape[2フレームの中で `0x7E`, `0x7D`, `0x11`, `0x13` をエスケープ処理するモードです。 エスケープ処理とは、特定の制御文字(0x7E=フレーム開始、0x7D:=エスケープ文字、0x11: XON=データ送信を再開するために使用される制御文字、0x13: XOFF=データ送信を一時停止するために使用される制御文字)とUART通信で混同されないようにするためにあります。

 以下の設定をした場合のエンドデバイスとコーディネータのAPIフレームを確認してみましょう。エンドデバイスのFrames Generator toolを使用してコーディネータにAPIフレームを送信します。フレームのRF dataには制御文字である`0x7E`, `0x7D`, `0x11`, `0x13`を16進数で入力しています。

エンドデバイスXBeeのAPAPI Mode without Escape[1]
コーディネータXBeeのAPAPI Mode with Escape[2]

 以下の図はエンドデバイスから送信したAPIフレームです。フレームを確認するとエスケープ処理されていないことが確認できます。

 以下の図はコーディネータが受信したAPIフレームです。フレームを確認するとエスケープ処理されていることが確認できます。

今度はAPを以下の設定にして同様にフレームを送信します。

エンドデバイスXBeeのAPAPI Mode with Escape[2]
コーディネータXBeeのAPAPI Mode without Escape[1]

以下の図はエンドデバイスから送信したAPIフレームです。フレームを確認するとエスケープ処理されていることが確認できます。

 以下の図はコーディネータが受信したAPIフレームです。フレームを確認するとエスケープ処理されていないことが確認できます。

 このことは、コーディネータXBeeのAPがAPI Mode with Escape[2]なら、受信したRFデータもUART出力時にはエスケープ処理されることを示しており、エスケープ処理はエンドデバイス側のAP設定には関係ないということを意味しています。つまり、XBeeがUARTで出力するフレーム形式は、自分自身のAP設定に依存し、相手の設定には依存しないということです。但し、双方向通信の場合にはAPを一致させておく必要があります。