[][mobile][Homepage][BBS][Blog][YouTube][asablo]

PIC16F1455(PIC16F1459)でUSBシリアルの実験をしてみた2013/07/01 22:06:36

2017/6/21追記

トランジスタ技術2017年7月号(6月9日発売)に、私の記事が掲載されました。マイクロチップが提供しているMLAを利用してUSB搭載のPIC16F1459やPIC16F1455を簡単に使用する方法を掲載しております。詳細は以下リンクにて紹介しています。





2013/7/5追記


PIC16F1455でUSBシリアルの実験





HEXファイルはききょうやさんから落とせるので、それを元にPICkit3とMPLABX IPEを使って書き込む。書き込みに手こずって、デバイスIDが何故か読み込めないワーニングが出たので、アドバンストモードにしてファイルを読み込む。アドバンストモードに入るときのパスワードとかの説明は、この記事の後半に書き留めたので参考になるだろう。

usb_cdc_1455.hex でも usbserial1455-2.hex でも動作を確認できた。
また、バスパワー設定で書いてみたが、外部から電源(セルフパワー)5Vを掛けないとうまく書き込みが出来なかった。理由はよく分からない。あとでもう少し調べたいと思う。

ちなみに、PICkit2では、残念ながらこのデバイスは書き込みが出来ない。デバイスファイルは3年も更新していないし、MPLABX IPEの出来がまずまずの出来なので、もうPICkit3への移行時期だろう。

ファームを書き込むまでは何とか出来ると思うが、このデバイスをPCで認識させるにはドライバが必要である。ではどこにそのドライバがあるかを説明しておこう。



マイクロチップでは、開発用として各種フレームワークというリソースを無償提供している。その中にwindowsのinfファイルが存在する。

最新版のMicrochip Libraries for Applicationsがあるので、こちらをアクセスし、該当するOSのプラットフォームをクリックするとダウンロードできる。インストーラ形式でc:\Microchip Solutions v2013-02-15 にインストールされる。色々なものがあるが、最低USBにチェックしておく。全部インストールしておいてもいいだろう。

古いアーカイブ版はこちら



実はこの中身で、既にMPLABXプロジェクトとして存在しているので、自分でビルドが可能だ。
パソコン用のドライバだけ必要な方は、以降【ドライバのインストール】まで読み飛ばす。


【プロジェクトの確認と修正部分


MPLABXのopen projectで、Device - CDC - Serial Emulator

C:\microchip_solutions_v2013-02-15\USB\Device - CDC - Serial Emulator\Firmware\MPLAB.X

を開くだけで、各デバイスのひな形が開くはずだ。
(v2013-02-15を使用する場合はMPLAB IDE8.85かMPLABX IDE1.20以上必須)

ただし、完全にPIC16F1455に対応させる場合はききょうやさんのHPを参照しながらソースコードを修正することになる。



PIC16F1459を使うだけであれば、まずこの部分を16F1459にセットし、



左のウィンドウのHardwareProfile - LPC USB Development Kit - PIC16F1459.h
をダブルクリックして74行目にある、

#define USE_INTERNAL_OSC  //Make sure to add 1+uF capacitance to VDD net
の部分のコメントを外して有効にしてビルド、チップに書き込みをすることですぐに動作する。

エラーメッセージとして2つ表示され、一つは5Vを加える事と、
もう一つはIDが違う
Target Device ID (0x10053023) does not match expected Device ID (0x3023).
(新しいデバイスとMPLABXのIDとが、どうも整合していない)事が表示されるが、それぞれOKで書き込めるはずである。



更に、USBが接続された事を確認するDTR信号が欲しい場合は、usb_config.hの
#define USB_CDC_SUPPORT_DTR_SIGNALING のREMを外し、



同じファイルの、202行にある #define USB_CDC_DTR_ACTIVE_LEVEL    0の値を1に修正。



そして、HardwareProfile - LPC USB Development Kit - PIC16F1459.hの135行が表示LEDの表示ボート衝突を避けるため、135行目のLATCbits.LATC3をLATCbits.LATC2に変更することで対応可能だ。



これでUSBを接続すれば、TXとRX、そしてDTRが利用可能となる。


【ドライバのインストール


さて、組み立てたUSBシリアルをPCに接続すると、いつものハードウェアウィザードが立ち上がる。ここでドライバを指定してあげれば使えるようになる。



infファイルの場所は、
C:\Microchip Solutions v2013-02-15\USB\Device - CDC - Basic Demo\inf
とちょっと分かりにくい部分にあった。



マイクロソフトがwindowsロゴテストしてないと警告がでるが、開発ドライバはだいたいこういうメッセージが出るのは付き物なので、続行を選択。



これでめでたく使えるようになった。



ポート番号を確認。私のではCOM17だった。



SCE2を使って、エコーバックテストしてみる。書いた文字列が戻ってきた。SCE2はこちらに記事を書いたUSBシリアルより性能が落ちるし、最初に書き込みが必要であるが、チップ一つ150円でUSBシリアルが実現出来るのは面白い。もうちょっと勉強して使いこなせられるともっとおもしろいだろうな。

サイト一覧
  →PIC18 USB通信の実験 具体的に書いてあって参考になる







[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]