PIC18F14k50によるGPIB-USB変換 [GPIB]
2年前にtiny2313でGPIBシリアル変換器を作ったが、機器接続の度にRS232C-USB接続する事が煩わしくなり、PIC18f14K50でUSB直結できる様にした。

論理的には、Tiny2313によるGPIBシリアル変換機構と同じで、MicrochipにあるDevice - CDC - Basic Demo (PIC18F14K50)に、GPIBからデータを読むだけの論理を追加した。GPIB機器からデータを取り出すだけで、PCからの制御は出来ない。
Microchipのライブラリは新しい方が良いと思ったが、バージョンによりdata memoryの使用量に違いが有り、データメモリサイズのコンパイルエラーが発生したので、2013-0215版を使った。
MPLAB:8.92 C18:3.47
ライブラリをそのままコンパイルした時のメモリゲージ
ROM RAM
MLA 2012-1015 3718 510 OK
MLA 2013-0215 3718 510 OK
MLA 2013-0615 3720 558 error
2013-0615のライブラリにするとdataメモリが48バイト余計に使われるので、2013-0215版2.9f 「Low Pin Count USB Development Kit」USB CDC BasicDemoを雛形に使う事にした。最初に18F14k50のHIDbootloder.hexを書き込んだ後に、BootloderからターゲットのHexファイルの書き込みをする。2013-0215版のBootloderはv2.90aであった。

18f14K50は20ピンのため、使える信号が限定されるので、GPIB信号(DAV,NRFD,NDAC)のみを扱う。 転送の終了はPC側でタイムアウトを検出することで判断する。
回路のPushSWはabort SWとして利用。SW押下時のGPIBバス状態をRS232C転送してwait状態に戻る。
PIC18F14K50
1 VDD 20 VSS
2 OSC1 19 D+
3 OSC2 18 D-
4 RA3/SW 17 VUSB
5 RC5/DIO6 16 RC0/DIO1
6 RC4/DIO5 15 RC1/DIO2
7 RC3/DIO4 14 RC2/DIO3
8 RC6/DIO7 13 RB4/NRFD
9 RC7/DIO8 12 RB5/NDAC
10 RB7/LED 11 RB6/DAV

手順
1.HIDBootloader用HEXファイルをPICkit2/3 等の書き込みツールでPICに書き込む
2.PCからHIDBootloaderを起動してプロジェクトのHEXファイルをPICに書き込む
3.Microchip社のCDCソフトウエアをそのまま使用しているので、ドライバはMicrochip社の定義ファイルを使う
4.回路をUSBケーブルでPCと接続して、COMボードとして認識
5.キャプチャソフト(Dptnkjet等)でRS232Cポートを認識させ、GPIBデータの読み取る.。 この変換ボードではRS232Cボーレート設定は無視する。


今回は基板にピンヘッダを立てて、24Pのアンフェノールコネクタ経由で、GPIBケーブルと接続する様にした。
PIC18F14K50は手持ちのSOP品を使ったが、あまり小さくならなかった。またGPIB信号のNRFD,NDACをLS244経由としたが、接続機器が、少ない場合は、PIC直結でも可能かもしれない。LS244無しの直結バージョンも考慮したので、LS244のゲート(1ピン、19ピン)は1Kでプルアップが必要。GPIBバス上の機器の内、電源投入機器は1台に限定される。
DAV,NRFD、NDACの波形を見たが、30K/byte程度で意外と性能が出ていない。GPIBのサイクルチェック毎にCDCTxService()を経由している為と思うが、mainループで1回17usくらいかかっているし、時々転送の休みもあり、改善の余地があるので、今後検討する。


Tera TermでHPGLフォーマットのデータを読んだところ

Tera Termからデバッグコマンド実行
L:LED count
M:内部mem

ソースコードはデバック痕跡が多数あり、見難いので、Hexのみ公開
GPIB-USB04.hex
GPIB-USB03.hex(旧バージョン)
以下microchipのライブラリ2013-0215版より
bootloder
info
dptnkjet説明書.zip
dptnkjetall.zip
参考
http://nakjack.blog.so-net.ne.jp/archive/c2302495682-1
超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月


論理的には、Tiny2313によるGPIBシリアル変換機構と同じで、MicrochipにあるDevice - CDC - Basic Demo (PIC18F14K50)に、GPIBからデータを読むだけの論理を追加した。GPIB機器からデータを取り出すだけで、PCからの制御は出来ない。
Microchipのライブラリは新しい方が良いと思ったが、バージョンによりdata memoryの使用量に違いが有り、データメモリサイズのコンパイルエラーが発生したので、2013-0215版を使った。
MPLAB:8.92 C18:3.47
ライブラリをそのままコンパイルした時のメモリゲージ
ROM RAM
MLA 2012-1015 3718 510 OK
MLA 2013-0215 3718 510 OK
MLA 2013-0615 3720 558 error
2013-0615のライブラリにするとdataメモリが48バイト余計に使われるので、2013-0215版2.9f 「Low Pin Count USB Development Kit」USB CDC BasicDemoを雛形に使う事にした。最初に18F14k50のHIDbootloder.hexを書き込んだ後に、BootloderからターゲットのHexファイルの書き込みをする。2013-0215版のBootloderはv2.90aであった。
18f14K50は20ピンのため、使える信号が限定されるので、GPIB信号(DAV,NRFD,NDAC)のみを扱う。 転送の終了はPC側でタイムアウトを検出することで判断する。
回路のPushSWはabort SWとして利用。SW押下時のGPIBバス状態をRS232C転送してwait状態に戻る。
PIC18F14K50
1 VDD 20 VSS
2 OSC1 19 D+
3 OSC2 18 D-
4 RA3/SW 17 VUSB
5 RC5/DIO6 16 RC0/DIO1
6 RC4/DIO5 15 RC1/DIO2
7 RC3/DIO4 14 RC2/DIO3
8 RC6/DIO7 13 RB4/NRFD
9 RC7/DIO8 12 RB5/NDAC
10 RB7/LED 11 RB6/DAV

手順
1.HIDBootloader用HEXファイルをPICkit2/3 等の書き込みツールでPICに書き込む
2.PCからHIDBootloaderを起動してプロジェクトのHEXファイルをPICに書き込む
3.Microchip社のCDCソフトウエアをそのまま使用しているので、ドライバはMicrochip社の定義ファイルを使う
4.回路をUSBケーブルでPCと接続して、COMボードとして認識
5.キャプチャソフト(Dptnkjet等)でRS232Cポートを認識させ、GPIBデータの読み取る.。 この変換ボードではRS232Cボーレート設定は無視する。


今回は基板にピンヘッダを立てて、24Pのアンフェノールコネクタ経由で、GPIBケーブルと接続する様にした。
PIC18F14K50は手持ちのSOP品を使ったが、あまり小さくならなかった。またGPIB信号のNRFD,NDACをLS244経由としたが、接続機器が、少ない場合は、PIC直結でも可能かもしれない。LS244無しの直結バージョンも考慮したので、LS244のゲート(1ピン、19ピン)は1Kでプルアップが必要。GPIBバス上の機器の内、電源投入機器は1台に限定される。
DAV,NRFD、NDACの波形を見たが、30K/byte程度で意外と性能が出ていない。GPIBのサイクルチェック毎にCDCTxService()を経由している為と思うが、mainループで1回17usくらいかかっているし、時々転送の休みもあり、改善の余地があるので、今後検討する。
Tera TermでHPGLフォーマットのデータを読んだところ
Tera Termからデバッグコマンド実行
L:LED count
M:内部mem
ソースコードはデバック痕跡が多数あり、見難いので、Hexのみ公開
GPIB-USB04.hex
GPIB-USB03.hex(旧バージョン)
以下microchipのライブラリ2013-0215版より
bootloder
info
dptnkjet説明書.zip
dptnkjetall.zip
参考
http://nakjack.blog.so-net.ne.jp/archive/c2302495682-1
超シンプルなGPIB/シリアル変換アダプタの製作、トランジスタ技術、2001年2月

PICで動かすUSB―MCHPFSUSB framework+付属プリント基板で即日完成
- 作者: 鈴木 哲哉
- 出版社/メーカー: ラトルズ
- 発売日: 2010/06/01
- メディア: 単行本
タグ:GPIB
コメント 0