AN451
ワイヤレスM-BUSソフトウェアの実装
導入
このアプリケーションノートでは、Silicon Labs C8051MCUとEZRadioPRO®を使用したワイヤレスM-BusのSiliconLabs実装について説明します。 ワイヤレスMバスは、868MHzの周波数帯域を使用する検針アプリケーションのヨーロッパ規格です。
スタックレイヤー
ワイヤレスM-Busは、3層OSIモデルのサブセットである7層IECモデルを使用します(図1を参照)。
物理(PHY)層は、EN13757-4で定義されています。 物理層は、ビットのエンコードと送信の方法、RFモデムの特性(チップレート、プリアンブル、同期ワード)、およびRFパラメータ(変調、中心周波数、周波数偏移)を定義します。
PHY層は、ハードウェアとファームウェアの組み合わせを使用して実装されます。 EZRadioPROは、すべてのRFおよびモデム機能を実行します。 EZRadioPROは、パケットハンドラーとともにFIFOモードで使用されます。 MbusPhy.cモジュールは、SPIインターフェイス、エンコード/デコード、ブロック読み取り/書き込み、およびパケット処理を提供し、トランシーバーの状態を管理します。
M-Busデータリンク層はMbusLink.cモジュールに実装されています。 M-Busアプリケーションプログラミングインターフェイスは、メインスレッドのアプリケーション層から呼び出すことができるパブリック関数で構成されています。 MbusLinkモジュールは、データリンク層も実装します。 データリンク層は、データをフォーマットしてアプリケーションTXバッファーからMbusPhy TXバッファーにコピーし、必要なヘッダーとCRCを追加します。
アプリケーション層自体は、Mバスファームウェアの一部ではありません。 アプリケーション層は、さまざまなデータを送信用にフォーマットする方法を定義します。 ほとんどのメーターは、XNUMXつまたはXNUMXつのタイプのデータを送信するだけで済みます。 メーターにあらゆる種類のデータを収容するために大量のコードを追加すると、メーターに不要なコードとコストが追加されます。 ライブラリまたはヘッダーを実装することが可能かもしれません file データ型の完全なリストを使用します。 ただし、ほとんどのメータリングの顧客は、送信する必要のあるデータの種類を正確に知っており、フォーマットの詳細については標準を参照できます。 ユニバーサルリーダーまたはスニファーは、PCGUIにアプリケーションデータ型の完全なセットを実装する場合があります。 これらの理由により、アプリケーション層はexを使用して実装されますampメーターとリーダーのアプリケーション。
必要な基準
- EN13757-4 規格
EN13757-4 規格
メーターの通信システムとメーターのリモート読み取り
パート4:ワイヤレスメーターの読み取り
868 MHz〜870 MHzSRD帯域で動作する放射計の読み取り - EN13757-3 規格
メーターの通信システムとメーターのリモート読み取り
パート3:専用アプリケーション層 - IEC 60870-2-1:1992
遠隔制御機器およびシステム
パート5:伝送プロトコル
セクション1:リンク送信手順 - IEC 60870-1-1:1990
遠隔制御機器およびシステム
パート5:伝送プロトコル
セクション1:送信フレームフォーマット
定義
- Mバス—M-Busは、ヨーロッパでの検針用の有線標準です。
- ワイヤレスMバス—ヨーロッパの検針アプリケーション用のワイヤレスMバス。
- 物理-物理層は、データのビットとバイトをエンコードおよび送信する方法を定義します。
- API-アプリケーションプログラマインターフェイス。
- リンク-データリンク層は、ブロックとフレームの送信方法を定義します。
- CRC-巡回冗長検査。
- FSK-周波数偏移変調。
- チップ-送信データの最小単位。 XNUMXつのデータビットは複数のチップとしてエンコードされます。
- モジュール—ACコードソース.c file.
M-BusPHYの機能説明
プリアンブルシーケンス
Mバス仕様で指定されているプリアンブルシーケンスは、XNUMXとXNUMXを交互に繰り返す整数です。 XNUMXはより高い周波数として定義され、XNUMXはより低い周波数として定義されます。
nx(01)
Si443xのプリアンブルオプションは、XNUMXとXNUMXが交互に現れる整数のニブルです。
nx(1010)
余分な先頭のプリアンブルは問題になりませんが、同期ワードとペイロードがXNUMXビットずれます。
解決策は、Modulation Control 2レジスタ(0x71)のエンジンビットを設定して、パケット全体を反転することです。 これにより、プリアンブル、同期ワード、およびTX / RXデータが反転します。 結果として、TXデータの書き込み時またはRXデータの読み取り時にデータを反転する必要があります。 また、同期ワードは、Si443x同期ワードレジスタに書き込む前に反転されます。
同期ワード
EN-13757-4に必要な同期ワードは、モードSおよびモードRの場合は18チップ、モデルTの場合は10チップです。Si443xの同期ワードは1〜4バイトです。 ただし、同期ワードの前には常にプリアンブルが付いているため、プリアンブルの最後の443ビットは同期ワードの一部と見なすことができます。 したがって、最初の同期ワードには、XNUMXの後にXNUMXが続くXNUMX回の繰り返しが埋め込まれます。 同期ワードは、SiXNUMXxレジスタに書き込む前に補完されます。
表1.モードSおよびモードRの同期ワード
EN13757-4 規格 | 00 | 01110110 | 10010110 | バイナリ |
00 | 76 | 96 | 16進法 | |
(01)x3のパッド | 01010100 | 01110110 | 10010110 | バイナリ |
54 | 76 | 96 | 16進法 | |
補体 | 10101011 | 10001001 | 01101001 | バイナリ |
AB | 89 | 69 | 16進法 |
表2.モードTメーターのその他への同期ワード
同期 | 同期 | 同期 |
言葉 | 言葉 | 言葉 |
3 | 2 | 1 |
送信プリアンブル長
最小プリアンブルは、443つの異なる動作モードに対して指定されています。 プリアンブルを指定より長くしてもかまいません。 プリアンブルの0チップを引くと、Si34xプリアンブルの最小チップ数が得られます。 この実装では、すべての短いプリアンブルモードにプリアンブルのニブルが3つ追加され、プリアンブルの検出と相互運用性が向上します。 プリアンブルが長いモードSのプリアンブルは非常に長いです。 したがって、最小のプリアンブルが使用されます。 ニブル単位のプリアンブル長は、プリアンブル長(XNUMXxXNUMX)レジスタに書き込まれます。 プリアンブル長レジスタは、送信時にのみプリアンブルを決定します。 最小仕様とプリアンブル長の設定を表XNUMXに要約します。
表3.送信プリアンブル長
EN-13757-4 最小 | Si443xプリアンブル 設定 | 同期 言葉 | 合計 | 余分な | |||
nx(01) | チップ | ニブル | チップ | チップ | チップ | チップ | |
モードSの短い前文 | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
モードSの長い前文 | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
モードT(メーター-その他) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
モードR | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
受信用の最小プリアンブルは、プリアンブル検出制御レジスタ(0x35)によって決定されます。 受信時に、同期ワードのビット数を指定された最小プリアンブルから減算して、使用可能なプリアンブルを決定する必要があります。 受信機の最小整定時間は、AFCが有効な場合は16チップ、AFCが無効な場合は8チップです。 レシーバのセトリング時間も使用可能なプリアンブルから差し引かれ、プリアンブル検出制御レジスタの最小設定が決定されます。
誤ったプリアンブルの確率は、プリアンブル検出制御レジスタの設定によって異なります。 8チップの設定が短いと、数秒ごとに誤ったプリアンブルが検出される可能性があります。 20チップの推奨設定により、誤ったプリアンブル検出が発生する可能性は低くなります。 モードRとモードSLのプリアンブルの長さは、推奨設定を使用するのに十分な長さです。
プリアンブルが20チップより長く検出するようにすることにはほとんど利点がありません。
AFCは、プリアンブルが短いモデルSとモデルTでは無効になっています。これにより、レシーバーのセトリング時間が短縮され、プリアンブル検出設定を長くすることができます。 AFCを無効にすると、モードTは推奨設定の20チップを使用できます。 プリアンブルが短いモデルSには、4ニブルまたは20チップの設定が使用されます。 これにより、このモデルの誤ったプリアンブル検出の確率がわずかに高くなります。
表4.プリアンブル検出
EN-13757-4 最小 | 同期 言葉 | 使用可能 前文 | RXセトリング | 検出する 分 | Si443xプリアンブル 検出設定 | |||
nx(01) | チップ | チップ | チップ | チップ | チップ | ニブル | チップ | |
モードSの短い前文 | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
モデルSの長い前文 | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
モデルT(メーター-その他) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
モードR | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*注記: AFCが無効 |
受信機は、指定された最小のプリアンブルを使用して送信機と相互運用するように構成されています。 これにより、受信機はMバス準拠の送信機と相互運用できます。
ワイヤレスM-Bus仕様では、モードS1に少なくとも558チップの非常に長いプリアンブルが必要です。 これには、プリアンブルを送信するだけで約17ミリ秒かかります。 Si443xは、このような長いプリアンブルを必要とせず、長いプリアンブルの恩恵を受けません。 モードS2では長いプリアンブルがオプションとして記載されていますが、Si443xで長いプリアンブルを使用する理由はありません。 一方向通信が必要な場合、モードT1は、より短いプリアンブル、より高いデータレート、およびより長いバッテリー寿命を提供します。 モードS2を使用した双方向通信が必要な場合は、短いプリアンブルをお勧めします。
プリアンブルが長いモデルSの検出しきい値は、プリアンブルが短いモデルSで送信されるプリアンブルニブルの数よりも長いことに注意してください。 これは、長いプリアンブルモードS受信機が短いプリアンブルモードS送信機からのプリアンブルを検出しないことを意味します。 これは、ロングプリアンブルモードSレシーバーがロングプリアンブルから何らかの利益を受け取る場合に必要です。
ショートプリアンブルモードSレシーバーはプリアンブルを検出し、両方のショートプリアンブルモードSからパケットを受信することに注意してください。
送信機とロングプリアンブルモードS送信機。 したがって、一般に、メーターリーダーは短いプリアンブルモードSレシーバー構成を使用する必要があります。
エンコード/デコード
ワイヤレスMバス仕様には、3つの異なるエンコード方法が必要です。 マンチェスターエンコーディングは、モードSとモードRに使用されます。マンチェスターエンコーディングは、モデルTの他のメーターへのリンクにも使用されます。モデルTのメーターから他のリンクは、6つのエンコーディングのうちXNUMXつを使用します。
1。 マンチェスター符号化/復号化
マンチェスターエンコーディングは、RFシステムで歴史的に一般的であり、シンプルで安価なモデムを使用して堅牢なクロックリカバリとトラッキングを提供します。 ただし、Si443xのような最新の高性能無線機はマンチェスター符号化を必要としません。 マンチェスターエンコーディングは、主に既存の標準との互換性のためにサポートされていますが、マンチェスターエンコーディングを使用しない場合、Si443xのデータレートは実質的にXNUMX倍になります。
Si443xは、ハードウェアでのパケット全体のマンチェスター符号化と復号化をサポートします。 残念ながら、同期ワードはマンチェスター符号化されていません。 同期ワードに無効なマンチェスターシーケンスが意図的に選択されました。 これにより、マンチェスターエンコーディングはSi443xを含むほとんどの既存の無線機と互換性がなくなります。 結果として、マンチェスターのエンコードとデコードはMCUによって実行される必要があります。 エンコードされていないデータの各バイトは、XNUMXつのデータビットで構成されます。 マンチェスター符号化を使用して、各データビットはXNUMXチップシンボルに符号化されます。 エンコードされたデータは一度にXNUMXチップずつ無線FIFOに書き込まれる必要があるため、一度にXNUMXニブルのデータがエンコードされてFIFOに書き込まれます。
表5.マンチェスター符号化
データ | Ox12 | 0x34 | バイト | ||
Ox1 | 0x2 | 0x3 | 0x4 | ニブル | |
1 | 10 | 11 | 100 | バイナリ | |
チップ | 10101001 | 10100110 | 10100101 | 10011010 | バイナリ |
先入れ先出し | OXA9 | OXA6 | OXA5 | OX9A | 16進法 |
送信される各バイトは、一度にXNUMXバイトずつエンコードバイト関数に渡されます。 エンコードバイト関数は、エンコードニブル関数をXNUMX回呼び出します。最初は最上位のニブルに対して、次に最下位のニブルに対してです。
ソフトウェアでのマンチェスター符号化は難しくありません。 最上位ビットから始めて、01つは「10」チップシーケンスとしてエンコードされます。 ゼロは「16」チップシーケンスとしてエンコードされます。 これは、ループを使用し、シンボルごとにXNUMXビットをシフトすることで簡単に実現できます。 ただし、ニブルごとに単純なXNUMXエントリのルックアップテーブルを使用する方が高速です。 マンチェスターニブルのエンコード関数は、データのニブルをエンコードしてから、FIFOに書き込みます。 チップは、反転されたプリアンブル要件を考慮して、FIFOに書き込む前に反転されます。
受信時、FIFOの各バイトはXNUMXつのチップで構成され、XNUMXニブルのデータにデコードされます。 読み取りブロック関数は、FIFOから一度にXNUMXバイトを読み取り、デコードバイト関数を呼び出します。 チップは、反転されたプリアンブル要件を考慮して、FIFOから読み取った後に反転されます。 マンチェスターでエンコードされたチップの各バイトは、データのニブルにデコードされます。 デコードされたニブルは、書き込みニブルRXバッファ機能を使用してRXバッファに書き込まれます。
エンコードとデコードの両方が、オンザフライで一度に100つのデータニブルで実行されることに注意してください。 バッファにエンコードするには、エンコードされていないデータの443倍のサイズの追加のバッファが必要になります。 エンコードとデコードは、サポートされている最速のデータレート(10 kチップ/秒)よりもはるかに高速です。 Si100xはFIFOへの複数バイトの読み取りと書き込みをサポートしているため、512バイトの読み取りと書き込みのみを使用する場合のオーバーヘッドはわずかです。 オーバーヘッドは、XNUMX個のエンコードされたチップに対して約XNUMX µsです。 利点は、XNUMXバイトのRAM節約です。
2。 XNUMXつのエンコーディングデコーディングのうちXNUMXつ
EN-13757-4で指定されているThree-out-of-Sixエンコーディング方式は、MCUのファームウェアにも実装されています。 このエンコーディングは、メーターから他の高速(100 kチップ/秒)モードTに使用されます。 モデルTは、ワイヤレスメーターの最短の伝送時間と最長のバッテリー寿命を提供します。
送信されるデータの各バイトは、XNUMXつのニブルに分割されます。 最も重要なニブルが最初にエンコードされて送信されます。 この場合も、これは、エンコードニブル関数をXNUMX回呼び出すエンコードバイト関数を使用して実装されます。
データの各ニブルは、8チップのシンボルにエンコードされます。 XNUMXチップシンボルのシーケンスは、XNUMXチップFIFOに書き込む必要があります。
エンコード中に、6バイトのデータが6つのニブルとしてエンコードされます。 各ニブルはXNUMXチップのシンボルです。 XNUMXつのXNUMXチップシンボルはXNUMXバイトとして集約されます。
表6つのエンコーディングのうちXNUMXつ
データ | 0x12 | 0x34 | バイト | ||||
Ox1 | 0x2 | 0x3 | 0x4 | ニブル | |||
チップ | 15 | 16 | 13 | 34 | 8進数 | ||
1101 | 1110 | 1011 | 11100 | バイナリ | |||
先入れ先出し | 110100 | 11100010 | 11011100 | バイナリ | |||
0x34 | オックスE2 | オックスDC | 16進法 |
ソフトウェアでは、16つのうちXNUMXつのエンコーディングは、XNUMXつの入れ子関数を使用して実装されます。 エンコードバイト関数は、エンコードニブル関数をXNUMX回呼び出します。 ニブルエンコード関数は、XNUMXチップシンボルのルックアップテーブルを使用して、シンボルをXNUMXつの関数のうちのXNUMXつシフトに書き込みます。 この関数は、ソフトウェアにXNUMXチップのシフトレジスタを実装します。 シンボルは、シフトレジスタの最下位バイトに書き込まれます。 レジスタはXNUMX回左にシフトされます。 これをXNUMX回繰り返します。 シフトレジスタの上位バイトに完全なバイトが存在する場合、それは反転されてFIFOに書き込まれます。
データの各バイトはXNUMXエンコードされたバイトとしてエンコードされるため、最初にシフトレジスタをクリアして、最初にエンコードされたバイトが正しくなるようにすることが重要です。 パケット長が奇数の場合、すべてのバイトをエンコードした後も、シフトレジスタにXNUMXつのニブルが残ります。 これは、次のセクションで説明するように、ポストアンブルで処理されます。
エンコードされた64つのうち16つをデコードするのは、逆の手順です。 デコードするとき、XNUMXつのエンコードされたバイトはXNUMXつのデータバイトにデコードされます。 ソフトウェアシフトレジスタは、デコードされたデータのバイトを集約するために再び使用されます。 デコードにはXNUMXエントリの逆ルックアップテーブルが使用されます。 これにより、使用するサイクルは少なくなりますが、コードメモリは多くなります。 XNUMXエントリのルックアップテーブルで対応するシンボルを検索するには、かなり時間がかかります。
ポストアンブル
ワイヤレスMバス仕様には、ポストアンブルまたはトレーラーに関する特定の要件があります。 すべてのモードで、最小は8チップ、最大はXNUMXチップです。 FIFOの最小アトミックユニットはXNUMXバイトであるため、モードSとモードRにはXNUMXチップトレーラーが使用されます。モードTポストアンブルは、パケット長が偶数の場合はXNUMXチップ、パケット長が奇数の場合はXNUMXチップです。 奇数パケット長のXNUMXチップポストアンブルは、少なくともXNUMXつの交互チップを持つという要件を満たしています。
表7.ポストアンブル長
ポストアンブル長(チップ) | |||||
分 | 最大 | 実装 | チップシーケンス | ||
モードS | 2 | 8 | 8 | 1010101 | |
モードT | 2 | 8 | 4 | (奇数) | 101 |
8 | (平) | 1010101 | |||
モードR | 2 | 8 | 8 | 1010101 |
パケットハンドラ
Si443xのパケットハンドラーは、可変パケット幅モードまたは固定パケット幅モードで使用できます。 可変パケット幅モードでは、同期ワードの後にパケット長バイトとオプションのヘッダーバイトが必要です。 受信時に、無線は長さバイトを使用して有効なパケットの終わりを判別します。 送信時に、無線はヘッダーバイトの後に長さフィールドを挿入します。
ワイヤレスMバスプロトコルのLフィールドは、Si443x長さフィールドには使用できません。 まず、Lフィールドは実際のパケット長ではありません。 これは、CRCバイトまたはエンコーディングを含まないリンク層ペイロードバイトの数です。 次に、Lフィールド自体は、マンチェスターエンコーディングまたはモードTメーターのXNUMXつのうちXNUMXつのエンコーディングを使用してエンコードされます。
実装では、送信と受信の両方に固定パケット幅モードのパケットハンドラーを使用します。 送信時に、PHY層は送信バッファのLフィールドを読み取り、ポストアンブルを含むエンコードされたバイト数を計算します。 送信されるエンコードされたバイトの総数は、パケット長レジスタ(0x3E)に書き込まれます。
受信時に、最初の0つのエンコードされたバイトがデコードされ、Lフィールドが受信バッファーに書き込まれます。 Lフィールドは、受信するエンコードされたバイト数を計算するために使用されます。 次に、受信するエンコードされたバイト数がパケット長レジスタ(3xXNUMXE)に書き込まれます。 ポストアンブルは破棄されます。
MCUは、可能な限り最短のパケット長が受信される前に、Lフィールドをデコードし、エンコードされたバイト数を計算し、その値をパケット長レジスタに書き込む必要があります。 PHY層の最短許容Lフィールドは9で、エンコードされていないバイトが12バイトあります。 これにより、モデルTに18バイトのエンコードが行われます。最初の16バイトはすでにデコードされています。 したがって、パケット長レジスタは、100kbpsまたは1.28ミリ秒で8051バイト時間で更新する必要があります。 これは、20MIPSで実行されているXNUMXでは問題ありません。
受信するバイト数には、奇数のパケット長を持つモードTパケットに使用される255チップのポストアンブルを除いて、ポストアンブルは含まれません。 したがって、受信機は、モデルTの奇数長のパケットを除いて、ポストアンブルを必要としません。 このポストアンブルは、整数個のエンコードされたバイトを与えるためにのみ必要です。 ポストアンブルの内容は無視されます。 したがって、ポストアンブルが送信されない場合、0チップのノイズが受信され、無視されます。 エンコードされたバイトの総数はXNUMX(XNUMXxFF)に制限されているため、実装ではさまざまなモードの最大Lフィールドが制限されます。
表8.パケットサイズの制限
エンコードされた | 解読された | Mバス | ||||
バイト | バイト | Lフィールド | ||||
12月 | 16進法 | 12月 | 16進法 | 12月 | 16進法 | |
モードS | 255 | FF | 127 | 7F | 110 | 6E |
モードT(メーター-その他) | 255 | FF | 169 | A9 | 148 | 94 |
モードR | 255 | FF | 127 | 7F | 110 | 6E |
これらの制限は通常、ワイヤレスメーターの一般的な使用例をはるかに上回っています。 可能な限り最高のバッテリー寿命を得るには、パケット長を短くする必要があります。
さらに、ユーザーは受信する必要のある最大Lフィールド(USER_RX_MAX_L_FIELD)を指定できます。 これにより、受信バッファーに必要なサイズ(USER_RX_BUFFER_SIZE)が決まります。
最大255のLフィールドをサポートするには、290バイトの受信バッファーと最大581のマンチェスターエンコードバイトが必要になります。 パケットハンドラーを無効にする必要があり、その場合、パケット長レジスターは使用できませんでした。 これは実行可能ですが、可能であれば、パケットハンドラーを使用する方が便利です。
FIFOの使用法
Si4431は、送受信用に64バイトのFIFOを提供します。 エンコードされたバイト数は255であるため、エンコードされたパケット全体が64バイトのバッファに収まらない場合があります。
伝染 ; 感染
送信時に、エンコードされたバイトの総数が計算されます。 ポストアンブルを含むエンコードされたバイトの総数が64バイト未満の場合、パケット全体がFIFOに書き込まれ、パケット送信割り込みのみが有効になります。 ほとんどの短いパケットは、XNUMX回のFIFO転送で送信されます。
エンコードされたバイト数が64を超える場合、パケットを送信するために複数のFIFO転送が必要になります。 最初の64バイトはFIFOに書き込まれます。 送信済みパケットおよびTXFIFOのほぼ空の割り込みが有効になります。 TXFIFOのAlmostEmptyしきい値は16バイト(25%)に設定されています。 各IRQイベントで、ステータス2レジスタが読み取られます。 送信済みパケットビットが最初にチェックされ、パケットが完全に送信されていない場合は、エンコードされたデータの次の48バイトがFIFOに書き込まれます。 これは、エンコードされたすべてのバイトが書き込まれ、パケット送信割り込みが発生するまで続きます。
1. 受付
受信時には、最初はSyncWord割り込みのみが有効になります。 同期ワードを受信した後、同期ワード割り込みは無効になり、FIFOほぼ満杯の割り込みが有効になります。 FIFOのほぼ満杯のしきい値は、最初は2バイトに設定されています。 最初のFIFOほぼ完全な割り込みは、48つの長さのバイトがいつ受信されたかを知るために使用されます。 長さが受信されると、長さがデコードされ、エンコードされたバイト数が計算されます。 次に、RXFIFOのほぼフルのしきい値が1バイトに設定されます。 RX FIFOがほぼいっぱいで、有効なパケット割り込みが有効になっています。 次のIRQイベントで、ステータス48レジスタが読み取られます。 最初に、有効なパケットビットがチェックされ、次にFIFOのほぼフルビットがチェックされます。 RXFIFOのAlmostFullビットのみが設定されている場合、次のXNUMXバイトがFIFOから読み取られます。 有効なパケットビットが設定されている場合、パケットの残りの部分がFIFOから読み取られます。 MCUは、読み取られたバイト数を追跡し、最後のバイトの後で読み取りを停止します。
データリンク層
データリンク層モジュールは、13757-4:2005準拠のリンク層を実装します。 データリンク層(LINK)は、物理層(PHY)とアプリケーション層(AL)の間のインターフェイスを提供します。
データリンク層は次の機能を実行します。
- PHYとAL間でデータを転送する機能を提供します
- 発信メッセージのCRCを生成します
- 着信メッセージのCRCエラーを検出します
- 物理アドレスを提供します
- 双方向通信モードの転送を確認します
- フレームデータビット
- 着信メッセージのフレーミングエラーを検出します
リンク層フレームフォーマット
EN 13757-4:2005で使用されているワイヤレスM-Busフレーム形式は、IEC3-3-60870のFT5(フレームタイプ2)フレーム形式から派生しています。 フレームは、16つ以上のデータブロックで構成されます。 各ブロックには、12ビットのCRCフィールドが含まれています。 最初のブロックは、Lフィールド、Cフィールド、Mフィールド、およびAフィールドを含むXNUMXバイトの固定長ブロックです。
- Lフィールド
Lフィールドは、リンク層データペイロードの長さです。 これには、Lフィールド自体またはCRCバイトは含まれません。 これには、Lフィールド、Cフィールド、Mフィールド、およびAフィールドが含まれます。 これらはPHYペイロードの一部です。
エンコードされたバイト数は255バイトに制限されているため、Mフィールドでサポートされる最大値は、マンチェスターエンコードデータの場合は110バイト、モードTの148つのうちXNUMXつのエンコードデータの場合はXNUMXバイトです。
リンク層は、送信時のLフィールドの計算を担当します。 リンク層は、受信時にLフィールドを使用します。
Lフィールドは、PHYペイロードの長さやエンコードされたバイト数を示していないことに注意してください。 送信時に、PHYはPHYペイロードの長さとエンコードされたバイト数を計算します。 受信時に、PHYはLフィールドをデコードし、デコードするバイト数を計算します。 - Cフィールド
Cフィールドはフレーム制御フィールドです。 このフィールドはフレームタイプを識別し、リンクデータ交換サービスプリミティブに使用されます。 Cフィールドは、フレームタイプ(SEND、CONFIRM、REQUEST、またはRESPOND)を示します。 SENDおよびREQUESTフレームの場合、CフィールドはCONFIRMまたはRESPONDのどちらが期待されるかを示します。
基本的なリンクTX機能を使用する場合、Cの任意の値を使用できます。 リンクサービスプリミティブを使用する場合、CフィールドはEN 13757-4:2005に従って自動的に入力されます。 - Mフィールド
Mフィールドはメーカーのコードです。 メーカーは以下からXNUMX文字のコードをリクエストできます web 住所: http://www.dlms.com/flag/INDEX.HTM 5文字のコードの各文字は0ビットとしてエンコードされます。 40ビットコードは、ASCIIコードを取得し、5x15( "A")を減算することで取得できます。 XNUMXつのXNUMXビットコードを連結してXNUMXビットにします。 最上位ビットはゼロです。 - Aフィールド
アドレスフィールドは、デバイスごとに一意の6バイトアドレスです。 一意のアドレスは、製造元が割り当てる必要があります。 各デバイスが一意の6バイトアドレスを持っていることを確認するのは、各メーカーの責任です。 送信フレームと要求フレームのアドレスは、メーターまたは他のデバイスの自己アドレスです。 確認および応答データフレームは、発信元デバイスのアドレスを使用して送信されます。 - CIフィールド
CIフィールドはアプリケーションヘッダーであり、アプリケーションデータペイロード内のデータのタイプを指定します。 EN13757-4:2005は限られた数の値を指定していますが、リンクサービスプリミティブは任意の値の使用を許可します。 - CRCP
CRCはEN13757-4:2005で指定されています。
CRC多項式は次のとおりです。
X16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1
M-Bus CRCは、16バイトのブロックごとに計算されることに注意してください。 その結果、16バイトのデータごとに18バイトを送信する必要があります。
追加情報
リンク層の実装の詳細については、「AN452:ワイヤレスMバススタックプログラマガイド」を参照してください。
電源管理
図2は、メーターexの電力管理のタイムラインを示しています。ampモードT1を使用します。
エネルギーを節約するために、MCUは可能な限りスリープモードにする必要があります。 この元ではampつまり、RTCの実行中、鉱石ラジオの起動を待機しているとき、およびFIFOから送信しているとき、MCUはスリープしています。 MCUは、ポートマッチウェイクアップに接続されたEZRadioPROIRQ信号からウェイクアップします。
XNUMXブロックより長いメッセージを送信する場合、MCUは(FIFOのほぼ空の割り込みに基づいて)FIFOを満たすためにウェイクアップしてから、スリープ状態に戻る必要があります。
ADCから読み取るときは、MCUを低電力発振器またはバーストモード発振器から実行するアイドルモードにする必要があります。 ADCにはSARクロックが必要です。
使用しないときは、EZRadioPROをシャットダウンモードにして、SDNピンをハイに駆動する必要があります。 これには、MCUへのハードワイヤード接続が必要です。 EZ Radio Proレジスタは、シャットダウンモードでは保持されません。 したがって、EZRadioProは各RTC間隔で初期化されます。 無線の初期化には100µs未満かかり、400nAを節約します。 これにより、10秒間隔に基づいて10 µJのエネルギー節約になります。
EZRadioPROクリスタルはPORに約16ミリ秒かかります。 これは、約XNUMXブロックのCRCを計算するのに十分な長さです。 水晶が安定する前にすべてのCRCを完了すると、MCUはスリープ状態に戻ります。 暗号化が必要な場合は、水晶発振器を待っている間に暗号化を開始することもできます。
MCUは、ほとんどのタスクで低電力発振器を使用して20MHzで実行する必要があります。 正確なタイムアウトが必要なタスクでは、スリープモードではなく、高精度オシレーターとアイドルモードを使用する必要があります。 RTCは、ほとんどのタスクに十分な解像度を提供します。 T2メーターexの電力管理タイムラインampアプリケーションを図3に示します。
トランシーバーの実装は、メーターがウェイクアップし、リーダーが存在しない通常の場合に最適化する必要があります。 最小/最大ACKタイムアウトは十分に長いため、C8051F930RTCを使用してMCUをスリープモードにすることができます。
ビルドオプションは、スリープモードを使用する必要のないメインまたはUSB電源のリーダー用に提供されています。 USBとUARTがMCUに割り込むことができるように、スリープの代わりにアイドルモードが使用されます。
Simplicity Studio
MCUおよびワイヤレスツール、ドキュメント、ソフトウェア、ソースコードライブラリなどへのワンクリックアクセス。 Windowsで利用可能、
MacとLinux!
![]() | ![]() | ![]() | ![]() |
IoTポートフォリオ www.silabs.com/IoT | SW / HW www.silabs.com/simplicity | 品質 www.silabs.com/quality | サポートとコミュニティ コミュニティ.silabs.com |
免責事項
Silicon Labs は、Silicon Labs 製品を使用している、または使用を予定しているシステムおよびソフトウェア実装者向けに、利用可能なすべての周辺機器およびモジュールに関する最新かつ正確で詳細なドキュメントをお客様に提供することを目指しています。特性データ、利用可能なモジュールおよび周辺機器、メモリ サイズ、メモリ アドレスは各デバイスに固有のものであり、提供される「標準」パラメータはアプリケーションによって異なる場合があります。アプリケーション例amp本書に記載されているファイルは、説明のみを目的としています。 Silicon Labsは、本書の製品情報、仕様、および説明をさらに通知および制限することなく変更を加える権利を留保し、含まれる情報の正確性または完全性について保証するものではありません。 Silicon Labsは、ここに提供された情報の使用の結果について責任を負わないものとします。 このドキュメントは、集積回路を設計または製造するために本契約に基づいて付与される著作権ライセンスを暗示したり、明示したりするものではありません。 これらの製品は、Silicon Labsの書面による特別な同意なしに、生命維持システム内で使用するように設計または許可されていません。 「生命維持システム」とは、生命および/または健康をサポートまたは維持することを目的とした製品またはシステムであり、それが失敗した場合、重大な人身傷害または死亡につながることが合理的に予想されます。 Silicon Labs製品は、軍事用途向けに設計または認可されていません。 Silicon Labsの製品は、いかなる状況においても、核兵器、生物兵器、化学兵器、またはそのような兵器を発射できるミサイルを含む(ただしこれらに限定されない)大量破壊兵器に使用してはなりません。
商標情報
SiliconLaboratoriesInc.®、SiliconLaboratories®、SiliconLabs®、SiLabs®、およびSiliconLabslogo®、Bluegiga®、BluegigaLogo®、Clockbuilder®、CMEMS®、DSPLL®、EFM®、EFM32®、EFR、Ember® 、Energy Micro、Energy Microロゴとそれらの組み合わせ、「世界で最もエネルギーに優しいマイクロコントローラー」、Ember®、EZLink®、EZRadio®、EZRadioPRO®、Gecko®、ISOmodem®、Precision32®、ProSLIC®、SimplicityStudio®、SiPHY® 、Telegesis、TelegesisLogo®、USBXpress®などは、SiliconLabsの商標または登録商標です。 ARM、CORTEX、Cortex-M3、およびthumbsは、ARMHoldingsの商標または登録商標です。 KeilはARMLimitedの登録商標です。 本書に記載されている他のすべての製品またはブランド名は、それぞれの所有者の商標です。
シリコンラボラトリーズ株式会社
400西シーザーチャベス
オースティン、テキサス州 78701
アメリカ合衆国
http://www.silabs.com
ドキュメント / リソース
![]() | SILICONLABSワイヤレスM-BUSソフトウェアの実装AN451 [pdf] ユーザーガイド SILICON LABS、C8051、MCU、およびEZRadioPRO、ワイヤレスMバス、ワイヤレス、M-BUS、ソフトウェア、実装、AN451 |