IgorUSB

はじめに

USBは身近な存在となりましたが、専用チップを必要とし、なかなか自作派にとっては手が出ないものです。
USBの専門知識も必要であり、障壁が高いものです。
ここでは勉強を兼ねて、スロヴァキアのイゴールさんが作ったフリーの通称IgorUSBを作成してみます。
ちなみにスロヴァキアはチェコ・スロヴァキアから独立しました。

USBの基礎知識

USB 規格は USB 1.1(1.0) と USB 2.0 があります。
この2つの規格で3つの転送速度の上限が規程されています。
USBフルスピード480Mbps
USBハイスピード12Mbps
USBロースピード1.5Mbps
USBインターフェースとして通常は専用のUSBコントローラを必要とします。
代表的なUSBコントローラを列記してみます。
メーカーチップ用途準拠規格
Cypress SemiconductorEZ-USB(AN2131,AN2135, 8051コア)USB<->パラレル,シリアルUSB 1.1
National SemiconductorUSBN9603,USBN9604USB<->パラレルUSB 1.1
FTDIFT232BMUSB<->シリアルUSB 1.1, 2.0
FTDIFT245BMUSB<->パラレルUSB 1.1, 2.0
microchipPIC16C745, PIC16C765USB<->パラレル,シリアルUSB 1.1
microchipPIC18F2455, PIC18F2550,
PIC18F4455, PIC18F4550
USB<->パラレル,シリアルUSB 1.1, 2.0
※USB 2.0 に準拠しているからと言って必ずしもフルスピードの転送速度とは限りません。実際、ハイスピードまでです。

USBデバイス(機器)にはデバイスを区別するために、VID(ベンダーID:メーカ番号)PID(プロダクトID:製品番号)があります。
これはUSB規格団体で管理されています。例えばATMEL社は VID=03EBh で登録されています。
IgorUSB では非公式に VID=03EBh, PID=21FF としてしています。デバイスの衝突を避けるため、必要であればPIDを変更します。
この VID, PID はファームウェアとUSBドライバ(AVR309.inf)で設定されています。


IgorUSBとは

さて USB をアマチュアとして利用する場合、早い転送速度を要求されることは稀です。
従来のRS232Cシリアル転送でも PC の通常上限は 115200 baud つまりは 115200 bps です。
これはUSBロースピード1.5Mbpsの1/13です。
最近のノートPCはRS232Cを搭載しておらず、USBのみが多くなりました。
以上から、アマチュアとしてUSBに求めることをまとめると以下のようになります。 USBコントローラを用いることが正攻法ですが、かなりの知識を必要とします。
そこで IgorUSB の登場になります。IgorUSB は安価でしかも制作が容易です。 IgorUSBの仕様、制限事項
RS232Cシリアルbaud=[4800, 9600, 19200, 38400, 57600],
8ビット固定, 1ストップビット固定、最大32バイトバルク転送
FIFOパラレル8ビット入出力
EEPROMAT90S2313内臓のEEPROM(256バイト)を読み書き
注意事項AT90S2313の上限クロックは10MHz のところオーバークロック 12MHz を使用。
これはアマチュアとしてのみ許される。
USBのポート電圧の規程から、3.3Vロジックで動作している。
このため外部とは CMOS ではなくTTLレベルでの動作となる。
IgorUSBはUSBデータをAT90S2313のソフトウェアで処理します。
そのためデータの高速転送には向きませんがアマチュアとしては十分です。
ファームウェアはそのまま利用できますし、あるいは機能を独自に追加することもできます。 (AT90S2313の代わりにATmega8を使用すると、制限事項がかなり緩和されます。たとえば、800バイトのバルク転送ができたり、通信速度も115200 baud も可能になります。)

IgorUSB の詳細は以下を参照ください。


回路図

部品の入手問題で3.3Vレギュレータを変更しました。
LEDの点灯テストをできるようにしました。

基板例


部品表

部品表
型番備考単価
AT90S23131ATMEL AVR180
12MHz1水晶発振、セラロックは精度の問題で使用不可50
NJU7202L331低ドロップ3端子レギュレータ3.3V、5Vから3.3Vを生成50
0.1u1積層セラミック10
10u1縦型電解コンデンサ、耐圧16V10
USB1USB-Bコネクタ50
1.5K1カーボン抵抗1/4W10
LED8テスト用、緑LED10
1208テスト用、カーボン抵抗1/4W10
概ね500円くらいです。


ソフトウェアの設定(ファームウェア、USBドライバ、アプリケーションDLL)

USB to RS232 Application Note.zip をダウンロードし展開します。
ファームウェアFirmware/USBtoR232_AT90S2313/AVR Studio 4 project/usb90s2313.hex
USBドライバDriver/AVR309.sys
アプリケーションDLLDLL/Delphi7 project/AVR309.dll
デモプログラムApplication/Delphi7 project/AVR309demo.exe

設定手順は次の通りです。
  1. まず、ファームウェアusb90s2313.hexをAT90S3213にライターで書き込みます。
  2. 回路に間違いがなければ、IgorUSBをUSBケーブルでPCに接続します。
  3. USBデバイスを認識してUSBドライバをインストールするように催促されますので、 指示に従います。
  4. あとは AVR309.dll を使うアプリケーションを作成するだけです。

独自アプリケーションの作成方法

プログラム(独自アプリケーション)作成者は AVR309.DLL の関数だけを意識します。

デモプログラムとして、AVR309USBdemo.exe が用意されているので、試します。
実際に作成するアプリケーションはAVR309.dll に登録されている関数を呼び出すだけです。
言語はDLLを呼び出せれば C, Delphi, Basic どれでもかまいません。
  1. まずはじめに DoGetInfraCode 関数で、IgorUSB が接続され使用可能な状態にあるか検査します。
  2. あとは、各関数を呼び出すだけです。
状態取得関数 パラレル操作関数 シリアル操作関数 EEPROM操作関数 作成した独自アプリケーションも動きました。(LEDを点灯させているところ)


非常にお手軽で簡単ですので、利用価値はありそうです。

(C)2005 All rights reserved by Einstein. inserted by FC2 system