【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 対応処理関数 対応バッファ配列名 送受信サイズ 受信 1 2 do_rx1() R1_DAT[i] 8〜64バイト 3 4 do_rx2() R2_DAT[i] 〃 5 6 do_rx3() R3_DAT[i] 〃 送信 0 1 usb_send1() T1_DAT[i] 〃 2 3 usb_send2() T2_DAT[i] 〃 4 5 usb_send3() T3_DAT[i] 〃
【ヘッダーファイルの定義方法】 usbconf.h
USB通信用ヘッダーファイルは簡単な構成で、送受信用バッファのサイズを指定
するだけです。
このヘッダーファイルをPICROSのコンフィギュレーションの中でincludeすれば
実際のライブラリは自動的にリンクされます。
ヘッダーファイルの内容は下記の例のようにします。
<記述例>上記のように送信、受信バッファを3個づつサイズ指定するだけです。
/////////////////////////////////////
// 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
単位はバイトで最大64バイトまでです。
【USB送受信処理の作り方】
実際にUSB通信処理を実現するためには、USBの送受信をする関数をユーザーが
追加しなければなりません。といっても意外に簡単に出来ます
まず受信処理はdo_rxn()のルーチンを用意します。このルーチンはUSBの割込み処理
の中で呼ばれますので、割り込み禁止のままで実行する必要がありますので
Trigger_Task関数を使って処理タスクを起動して直ぐ戻るようにします。
タスクの方では、受信データがRx_DAT[n]に格納されていますので、これを取り出して
処理をしてExitします。
送信処理の方は、Tx_DAT[n]に送信データを格納してから、usb_sendx()関数をコール
するだけで、あとの実際の送信処理はUSBの割込み処理の中で実行されます。
この実際の記述例は次のページの使用例を参考にして下さい。
【ライブラリダウンロード】
USB通信ライブラリはいくつかのファイルで構成されていますが。これらと上記で
作成したコンフィギュレーションファイル、送受信処理のファイルを同じフォルダに
置いてコンパイルすればリンクされます。
★USB通信ライブラリ