USB通信ライブラリの使い方


【USB通信ライブラリ】

 USBデバイスとして、USB通信でパソコンと接続するときに必要となるライブラリ
で、ナショナルセミコンダクタのUSBN9603/9604をUSBコントローラとして使うこと
が前提になっています。
USB通信処理は基本的に割込み処理として動作しますので、PICROSの割込み
処理と同じ記述方法となります。
つまり、USBで受信完了したら、Trigger_Task(task)のサービス関数でタスクを起動
してすぐリターンするようにします。

【USB通信ライブラリ提供機能】

このUSB通信ライブラリで用意される内容は下記の表のようになります。

(1)初期化関数の提供
  USBの初期化関数(init_usb())をコールすればあとは自動的に初期化を実行
  します。
(2)パイプUSB送受信処理
 3つのパイプで受信した結果のデータを下表のような配列に格納してから、
受信割込み処理関数do_rxx()をコールします。
このdo_rxx()関数内では、データ処理をするタスクにTrigger_Task()サービス
関数を使って起動をしてすぐリターンします。
リターン後はそのまま割込み処理を終了して戻ります。

 送信の場合には、同じように3つのパイプ用のバッファがありますので
ここににデータを用意してから、usb_sendx()関数をコールすれば、後は
自動的に送信処理が実行されます。

 送受信処理に必要なデータはバッファに格納されていますが、パイプ番号と
受信処理関数、受信データ名は、下表のように対応していて、それぞれ
integer
の配列に格納されています。

パイプ番号 EP 対応処理関数 対応バッファ配列名 送受信サイズ
受信 do_rx1() R1_DAT[i] 8〜64バイト
do_rx2() R2_DAT[i]  〃
do_rx3() R3_DAT[i]  〃
送信 usb_send1() T1_DAT[i]  〃
usb_send2() T2_DAT[i]  〃
usb_send3() T3_DAT[i]  〃



【ヘッダーファイルの定義方法】  usbconf.h

USB通信用ヘッダーファイルは簡単な構成で、送受信用バッファのサイズを指定
するだけです。
 このヘッダーファイルをPICROSのコンフィギュレーションの中でincludeすれば
実際のライブラリは自動的にリンクされます。
ヘッダーファイルの内容は下記の例のようにします。
<記述例>
/////////////////////////////////////
// USB Configuration File
/////////////////////////////////////
///// Define USB Buffer Size
#define R1SIZE 8
#define R2SIZE 16
#define R3SIZE 32
#define T1SIZE 8
#define T2SIZE 8
#define T3SIZE 16
上記のように送信、受信バッファを3個づつサイズ指定するだけです。
単位はバイトで最大64バイトまでです。

【USB送受信処理の作り方】

 実際にUSB通信処理を実現するためには、USBの送受信をする関数をユーザーが
追加しなければなりません。といっても意外に簡単に出来ます
まず受信処理はdo_rxn()のルーチンを用意します。このルーチンはUSBの割込み処理
の中で呼ばれますので、割り込み禁止のままで実行する必要がありますので
Trigger_Task関数を使って処理タスクを起動して直ぐ戻るようにします。
タスクの方では、受信データがRx_DAT[n]に格納されていますので、これを取り出して
処理をしてExitします。

 送信処理の方は、Tx_DAT[n]に送信データを格納してから、usb_sendx()関数をコール
するだけで、あとの実際の送信処理はUSBの割込み処理の中で実行されます。

 この実際の記述例は次のページの使用例を参考にして下さい。








【ライブラリダウンロード】

USB通信ライブラリはいくつかのファイルで構成されていますが。これらと上記で
作成したコンフィギュレーションファイル、送受信処理のファイルを同じフォルダに
置いてコンパイルすればリンクされます。

  ★USB通信ライブラリ




      目次ページへ