自作電子小物/TIPS/PIC-USB-CDC使用例/PIC18F14K50

 
 

Microchip社が提供しているPIC用ソフトウエアライブラリの内、USB関係のライブラリは多少敷居が高く使用するのがためらわれるものでした。2009年に入りPIC18F14K50等のUSB付低価格PICが出た事で、USBはぐっと身近なものになってきましたので、手始めにデバッグ情報出力に便利なCDC機能(モデム等のシリアル通信機器向けのUSB仕様の一部)から着手しました。まずは最小限のアプリケーションプログラムとして、USBケーブルを差し込むとPCの仮想シリアルポートに「Hello world」メッセージを送り込む、いつものやつを作ります。CDCはPC側のアプリケーションプログラムはハイパーターミナルが使えます。Macの場合はユーティリティのターミナルを開きscreenコマンドまたはcatコマンドで確認できます。

PC側はMPLAB、C18、「Microchip Application Libraries v2009-08-31.zip」をダウンロード、インストールしておく必要があります。またPICkit等の書込み器も必要です。


ソースコード:

ライブラリに添付されるサンプル「USB Device - CDC - Basic Demo」のソースは多くのデバイスをサポートするため、#ifdef等が多く大変読みにくいので、関係ない部分を抜いたりしてソースコードを見やすくしました。基本的な動作は変わらないはずです。

 main.c ユーザアプリケーション本体、main()を見ると何となく使い方が想像できると思います。

 HardwareProfile.h ハードウエア固有の定義を記述するようです。定義するものが無くとも、ソースファイルはこの名前で必要です。

 usb_config.h USBライブラリの挙動(オプション)を定義します。ちょっとだけ修正。

 usb_descriptors.c USBデバイスのプロパティ関連を定義します。全く変更せず。

 rm18F14K50.lkr リンカースクリプト。 全く変更せず。

 rm18f26j50_g.lkr リンカースクリプト。 m18F46J50_g.lkrを修正。名前を変更したのみ。


MPLAB設定:

このライブラリはオブジェクトライブラリではなく、ソースライブラリなので必要な提供ソースをコンパイル対象にしなければならなりません。


MPLABプロジェクトファイル

 PIC18F14K50 USB Device - CDC - Hello world.zip (108kB)

 PIC18F26J50 USB Device - CDC - Hello world.zip (116kB)

 PIC18F2550 USB Device - CDC - Hello world.zip (104kB)

素のサンプルプログラム

 PIC18F14K50 USB Device - CDC - Basic Demo.zip (128kB)

 PIC18F26J50 USB Device - CDC - Basic Demo.zip (48kB)

 PIC18F2550 USB Device - CDC - Basic Demo.zip (196kB)

putsUSBUSART()関数(v2009-07-24版)は、文字列末尾の’\0’も送ってしまうので、PC側は注意が必要でした。

本ソースは、ブートローダには対応していません。ちょっと修正が必要です。


とりあえず動かしてみたい場合は、このサンプルプロジェクトファイルと、最小回路、プログラム書込み器を用意すれば、動くはずです。

(1)下の図の最小回路図をブレッドボード等を使って用意

(2)サンプルプロジェクト内にある .hex ファイルをPICkit等の書込み器を使ってデバイスに書込み

(3)USBケーブルをPCに接続し、シリアルポートに出力されているはずのメッセージを確認

  windowsの場合、ハイパーターミナルで仮想COMポートを開きます

  macの場合、ユーティリティのターミナルを開き、catコマンドでシリアルポートを表示してみます

  詳細は、下の最後の図を参考にして下さい


ユーザプログラムをゼロから作る場合の手順を画面イメージで示します。

Usage example of USB Device CDC - PIC18F14K50

2009年10月12日