トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

CCS C USB APIリファレンス

  CCS C USB CDC APIリファレンス


CCS C 購入時についてくるリファレンスマニュアル見ても、USB 関連の API が見当たらないので、自分参照用にヘッダファイルから翻訳転記しました。

USB.H (ver. Nov 13th, 2009)


関数名 機能
usb_init() USBスタック、USBペリフェラルを初期化し、USBバスにこのユニットを追加します。割り込みを有効にします。デバイスがエニュムレートされるまで無限ループで待ちます。コネクションセンスを使用する場合、もしくはUSBに接続されていないときにもプロセッサを走らせる必要がある場合は usb_init_cs() を使用してください。
usb_init_cs() usb_init() の縮小版です。USBバスへの追加または割り込み有効化を行いません。この関数は USB への追加を行わないので、定期的に usb_task() を呼び出す必要があります。詳しくは usb_task() を参照してください。
usb_task() USBペリフェラルの初期化に usb_init_cs() を使用している場合、コネクションセンスピンを定期的にチェックするために usb_task() を呼び出すべきです。コネクションセンスピンが USB が接続されていることを示していて、かつ USB ペリフェラルが追加されていなければ、この関数は PC がエニュムレーションプロセスを開始できるようにこのUSBペリフェラルを追加します(そして割り込みを有効化します)。コネクションセンスピンが USB 未接続を示していて、かつ USB ペリフェラルが実行中であれば、この関数は USB ペリフェラルをリセットし USB への再接続を待ちます(そして usb_enumerated() は FALSE を返すようになります)。コネクションセンス(USB_CON_SENSE_PIN)が定義されていない場合、usb_task() は USB は常に接続されているものとみなします。
usb_attached() デバイスが USB ケーブルに追加されている場合に TRUE を返します。定義されたコネクションセンスピンを監視するマクロです。この関数が TRUE を返したとしても PC とデバイスが接続されているとは限らないので、これをチェックするためには usb_enumerated() を使用する必要があります。
usb_enumerated() デバイスがホストによってエニュムレート(構成)されていれば TRUE を返し、そうでなければ FALSE を返します。エニュムレートされるまでは、パケット送受信のために USB ペリフェラルを使用しようとしてはなりません。
usb_wait_for_enumeration() デバイスがエニュムレートされるのを無限ループで待ちます。
usb_tbe(endpoint) エンドポイント送信バッファが開放されていて新たな送信パケットの受入準備ができている場合に TRUE を返します。
usb_put_packet(endpoint, ptr, len, tgl) ホストに 1 パケット送信します。1 パケット以上の間隔でメッセージを送信する必要があるときには usb_puts() を使用してください。より詳細を知りたい場合は usb_hw_layer.h を参照してください。
usb_puts(endpoint, ptr, len, timeout) ホストに複数パケットのメッセージを送信します。1パケットだけ送信する場合は usb_put_packet() を使ったほうが効率的です。これについては USB.H の関数プロトタイプの上に詳細があります。
usb_kbhit(endpoint) OUT エンドポイントがホストからのデータを含んでいる場合に TRUE を返します。usb_put_packet() または usb_flush_out() が使用されるまで TRUE のままです。
len = usb_get_packet(endpoint, ptr, max) ホストまたは PC から 1 パケット得ます。usb_kbhit() はこのルーチンが呼び出されるかまたはデータが有効でない場合には TRUE を返すはずです。この関数は 1 パケットだけ受信しますが、複数パケットメッセージを受信したい場合には usb_gets() を用いてください。詳細は usb_hw_layer() を参照してください。
len = usb_gets(endpoint, ptr, max, timeout) ホストから複数パケットを取得します。複数パケットメッセージを扱いたい場合に、usb_get_packet() の代わりにこの関数を用いることができます。詳細については USB.H 内の関数プロトタイプの上にあります。


usb_cdc.h (ver. Jan 28, 2010)


関数名 機能
usb_cdc_kbhit() 一つまたは複数のキャラクタを受信し、受信バッファに滞留している場合に TRUE を返します。
usb_cdc_getc() 受信バッファから 1 文字取得します。受信バッファにデータが存在しない場合は、受信バッファにデータが来るのを待ちます。無限ループで待ちたくない場合は、usb_cdc_getc() を呼び出す前に usb_cdc_kbhit() を最初に使用してデータが存在するかチェックしてください。
usb_cdc_putc(char c) 送信バッファに1文字出力します。送信バッファが満杯の場合、送信バッファに文字を出力する前に送信バッファが満杯でなくなるまで待ちます。送信バッファは PC によって直ちに読まれるので、送信バッファが満杯になるのは数ミリ秒です。もし影響が懸念され長い若しくは無限ループに入りたくない場合は、データを送信バッファに入れる前に、送信バッファに余裕があるか usb_cdc_putready() を用いて確認してください。
usb_cdc_puts(*ptr) 終端がヌル文字の文字列を送信バッファに送ります。usb_cdc_putc() または usb_cdc_putc_fast() と違って、このルーチンは 1 パケット以内の文字列に適しています(他の関数はエンドポイントが解放されるとすぐにバッファをフラッシュします)。パケットが送信された場合 TRUE を返し、バッファが使用中の場合には FALSE を返します。一度バッファが満杯になると ptr からエンドポイントバッファへのコピーが中止されます(が、戻り値は TRUE です)。
usb_cdc_putready() 送信バッファが 1 文字受け入れる余裕がある場合に TRUE を返します。
usb_cdc_connected() Set_Line_Coding を受信していた場合に TRUE を返します。(ハイパーターミナルのような)ほとんどのシリアルターミナルプログラムは、プログラムが開始され仮想COMポートを開いたときに Set_Line_Coding を送信します。これは PC がシリアルターミナルプログラム上にデータを表示する準備ができているかどうかを調べる簡単な方法ですが、常に保証されているわけではありません。
usb_cdc_putc_fast(char c) usb_cdc_putc() と同様ですが、送信バッファが満杯のときには文字をスキップする点が異なります。

最終更新時間:2010年08月27日 11時51分46秒