スパイス  組み込み制御装置の受注製作

USBから複数シリアルポートを
平成26年 8月 16日

 転送速度の簡易計測
 プログラム内部に関しては変更したい所が多くあるのですが、取りあえずどの程度の転送速度が出るのかを見てみます。
USB 2.0の仕様から単純に計算すると(1msおきに64バイトのバッファサイズでデータを転送するので)64kB/secの速度が出る計算になりますが、実際にはその半分以下が現実的な速度でしょう。
(H26年8月17日訂正)
 データ転送はバルク転送なので上記記述は誤りです。インタラプト転送と勘違いしました。
(H26年8月17日訂正ここまで)

  通信仕様の影響の可能性
 その前にCDC仕様にある通信仕様の影響を調べてみました。CDC仕様にはRS-232Cのボーレートやパリティといった通信仕様を指定する機能が含まれています。PC側のUSBホスト機能がこの通信速度によって時間当たりの送信量を制御している可能性がありそうです。
 今回使用しているマイクロチップ社製USBフレームワークではファイル名usb_device_cdc.cの中の関数CDCInitEP()でデフォルト初期値を設定し、app_device_cdc_basic.c中のAPP_DeviceCDCBasicDemoInitialize()関数でアプリケーションとしての値を設定しています。
このため、APP_DeviceCDCBasicDemoInitialize()関数での設定値を変更します。

  確認方法
 まず、ファイルサイズ約26kBのテキストファイル(このプログラムのHEXファイル)をPCからPICに転送してみます。
PICは受信データを無条件にPCにエコーバックするので、実際にはPCに対するエコーバックになります。
時間の計測は端末ソフトのTeraTerm上で表示される通信時間を目視します。秒単位の表示しかないですが、今の段階ではこれでも十分です。

  結果
 通信仕様の影響については、ボーレートの設定値は通信速度とは無関係のようです。設定値を9600bpsと19200bpsで通信時間を比べましたが、共に2秒以内でした。
 ファイルサイズ約26kBのデータを2秒で転送出来るとすると、ざっと15kB/sec弱程度の通信速度になります。USB自体の通信帯域はもっと広いので複数のRS-232Cを追加しても、この値が一気に下がる心配は少ないことを考えると、従来のRS-232Cの通信速度(1〜3.8kB/sec程度)との比較では非常に高速です。しかも、プログラムの変更のみで後からでも通信ポートを追加できるメリットがあります。
 組み込み装置にとってUSBポートに複数機能を実装することは非常に多くのメリットを教授できます。

目次へ  前へ  次へ