通信モニタとは、シリアル通信の内容を可視化する装置で、ラインモニタとかプロトコルアナライザなどと呼んでいるメーカーもあります。
その機能は、送受信されるデータの表示や記録、符号化されたデータの翻訳、シミュレーション、そして通信タイミングの解析など、いろいろな機能があります。ただ、今回製作した通信モニタにはそれほどの機能はなく、いくつかのシリアルインタフェースで単純に通信データを表示する程度のものです。
また、この通信モニタは、通信をモニタするための特別な回路や部品を使用しないで製作することを目指しました。
2.外観
次の写真は、製作した通信モニタの外観とその内部です。写真にはありませんが、電源はACアダプタを使用します。
基板はユニバーサル基板、ケースはアルミ板から手作りしています。詳細は以降で説明します。
通信モニタの外観 上ケースを開けたところ
3.機能
3-1.モニタできる通信インタフェース
TTL,RS-232,RS-485,I2C,SPIのインタフェースでモニタが可能です。
ただし、TTL,RS-232,RS-485は調歩同期(=非同期)方式のみ対応で、速度も1200bps~76800bpsに限られます。残念ながら、I2C,SPIについても、比較的低速にのみ対応です。
RS-232やRS-485および調歩同期式通信は使われる機会が少なくなってきたと思いますが、回路やプログラミングが簡単なので、組み込みの世界や実験レベルではまだまだ使われています。
【注記】
1.RS-232,RS-485は規格の改定などでいろいろな名称が存在しますが、ここではRS-232,RS-485と表記します。
2.I2Cは IIC(Inter IC Bus)のことで、ここではI2Cと表記します。
3.RS-485を除く各インタフェースは標準ロジックの74VHC14を使って受信するため、電気的特性はそれらの仕様と異なります。
1.RS-232,RS-485は規格の改定などでいろいろな名称が存在しますが、ここではRS-232,RS-485と表記します。
2.I2Cは IIC(Inter IC Bus)のことで、ここではI2Cと表記します。
3.RS-485を除く各インタフェースは標準ロジックの74VHC14を使って受信するため、電気的特性はそれらの仕様と異なります。
3-2.モニタ機能
この通信モニタでは主に下記のようなことができます。
- 通信を傍受して内部のメモリにモニタデータとして格納する。
- データの1バイトごとの通信間隔を測定する(SPIを除く)。
- 指定したコードをトリガにしてモニタを終了する。
- メモリに格納されているモニタデータを液晶に表示する。
- メモリに格納されているモニタデータをUSBでパソコンに転送する。
モニタデータは格納用のメモリにモニタを終了するまでエンドレスで記録されます。その格納用メモリには 131,070バイト分記録可能です。この場合のバイト数は通信上のバイト数を指していて、実際には通信間隔やステータスフラグなどの情報も記録するので、通信モニタの内部では通信データ1バイト当たり4バイトの容量を使用しています。
3-3.通信間隔の測定
下図に通信間隔の測定タイミングを示します。
この図のように、通信間隔とは前の1バイト受信から今回の1バイト受信までの時間です。ただし、SPIはSS(SEL:Slave Select)がディセーブル期間の時間となります。
通信間隔はPCLK/256(=5.33μS)周期で測定していて、表示段階で10μS単位に変換しています。16ビットカウンタで測定しているため、65535つまり約349.5mSでオーバーフローになります。この測定周期PCLK/256はインタフェースや通信速度に関係なく常に同じです。
3-4.トリガ機能
トリガ機能は、トリガデータとして設定したデータと同じモニタデータを受信したときモニタを終了する機能です。
指定できるモニタデータは、TD(送信側)またはRD(受信側)のどちらか一方です。トリガデータは最大4バイトまで指定できますが、それらは連続しているものに限られます。下図はトリガ検知の仕組みを説明した図です。
トリガ点は、設定したトリガデータとモニタデータが一致した先頭部分で、図の例では0x01の部分です。
トリガ設定は、トリガ検知カウントとトリガポジションが指定できます。
トリガ検知カウントは何回目のトリガ検知を有効とするかという設定で、トリガポジションはトリガ検知後にどれだけモニタを続けるかという遅延設定です。
トリガポジションは設定により下記のように機能します。
- TOP設定 ------ トリガ検知後データ格納メモリがいっぱいになる量までモニタした、つまりトリガ点が最も古いデータとなったときモニタを終了します。
- CENT設定 ---- トリガを検知後データ格納メモリの半分ほどの量だけモニタしたときに終了します。
- END設定 ------ トリガを検知後すぐにモニタを終了します。
4.一般仕様