人気のあるUSBインターフェイス、つまりこのUSBを単純なAVRマイクロコントローラーに接続する方法について説明します。 マイクロコントローラーとコンピューターの両方から、コード例と説明を含むいくつかのトピックを作成する予定です。 もちろん、インターネットはこのトピックに関するあらゆる種類の例でいっぱいですが、せいぜい悪魔の足が壊れるソースであり、ページ上の短い説明はその説明です。
そもそも、COM、LPT、MIDIのような以前に普及していたインターフェイスは現在は時代遅れですが、現代のコンピューターにはまだ存在し、産業用および高度に特殊化された機器で使用されています。 だから、ある種の鉄片をコンピューターと通信するには、何か他のものを習得する時が来た。 また、あらゆる種類のコンバーター/アダプター/エミュレーターを使用することもできますが、常に元のインターフェイスとして機能しないため、多くの問題が発生します。
すべては空の話で十分です、ビジネスに取り掛かりましょう。 自分のデバイスでUSBを使用する方法は?
- USBインターフェイス(AT90USB *など)のハードウェアサポートを備えたマイクロコントローラーを使用できます。 次に、その操作方法を知って、特別なファームウェアを作成する必要があります。 最後に、デバイスが標準のUSBクラスではない場合は、コンピューターのドライバーも作成する必要があります。
- 「異なる」インターフェースへのユニバーサルUSBコンバーターを使用します。 「その他」はRS232、I2Cなどです。この状況では、USBがどのように機能するかを知る必要はありません。特別なファームウェアとコンピューターのドライバーを作成する必要はありません。 コンバーターはすべての作業を行いますが、原則として、ドライバーはコンバーターの製造元によって既に作成されています。
- ハードウェアUSBサポートのない従来のマイクロコントローラーを使用し、プログラムでUSBインターフェイスをエミュレートします。 これにより、マイクロコントローラーのパフォーマンスに問題が生じます。 USB速度は非常に高速です:LowSpeed-1.5Mbit / s、FullSpeed-12Mbit / s、HighSpeed-480Mbit / s。 私は通常、USB 3.0については黙っています。 したがって、自宅で膝の上にいるのはLowSpeed USBのみであり、その後は多少の困難が伴います。 確かに、ほとんどの場合、自作デバイスの場合、これで十分です。
私たちは本物のジェダイなので、エミュレーションの道をたどります。 現時点では、AVRマイクロコントローラー上のUSBのソフトウェアエミュレーション用の既成プロジェクトがすでに3つあります。
IgorČeškoのプロジェクトは最初で、完全にアセンブラーで記述されており、V-USBのインスピレーションのようなものでした。 それに基づい
て、コンピューター用の注目に値する
ユニバーサルIRレシーバー、および他の多くのプロジェクト
が作成されました。 次に、V-USBはCで記述されますが、エミュレーションのパフォーマンスと精度に重要な場所でアセンブラコードを使用します。 USBtinyは、以前のバージョンのV-USBから派生したもので、機能が少なく、理論的に理解しやすいものです。
私はV-USBの実装に落ち着きました。これらが主な利点だと思います。
- V-USBはGNU General Public Licenseバージョン2の原則に基づいて公開されており、商用ライセンスもあります。
- 通信エラー処理と電気的仕様を除くUSB 1.1低速デバイスの完全エミュレーション
- ほとんどすべてのAVR-kahで動作し、最低2キロバイトのフラッシュ、128バイトのRAM、12、15、16、16.5または20 MHzの周波数が必要です。
- V-USBは、識別子の無料ペア(ベンダーIDと製品ID)を提供します
- よく文書化されたCコード、理解しやすい
USBでの実験では、AVR-Studio 4 + WinAVRでC言語を使用してMKのファームウェアを作成し、Borland C ++ Builder 6.0を最速かつ最も簡単なオプションとして使用してPCプログラムを開発しました。 したがって、将来の例はすべて次のようになります。 一般に、開発ツールの選択は非常に重要なステップですが、Cやアセンブラーよりも優れているものについてホリバーを配置する必要はありません。 簡単に言うと、これらは私たちの手にある単なるツールです。 すべてを所有し、より便利で目的に合ったものを使用する必要があります。 当然、有能な人であれば、どんなツールでも効果的です。
また、VIDとPIDについて別々に言う必要があります。 これらは、オペレーティングシステムがデバイスを検出し、正しいドライバーをロードするための16ビットの数値です。 Vendor-IDを取得するには、
usb.orgに2000ドルを支払う必要があります 。
VVid / PIDの使用の合法性に関する興味深い考えは、
BSVi embedderページで見つけることができ
ます 。 V-USBが無料のVID / PIDペア(合法的にusb.orgから購入)を提供するという事実は、本当に心を温めます。 しかし、同じVID / PIDの複数のUSBデバイスを同時に接続する必要がある場合はどうすればよいでしょうか? これらのVID / PIDに加えて、各USBデバイスにはVENDOR_NAMEおよびDEVICE_NAME識別子があります。例では、使用方法を示します。
件名に関するいくつかのリンク:
結論として、USB 1.1デバイスを作成するためのすべての条件はすべての人が利用できると書いています。
- 安いマイクロコントローラーAVR
- USBソフトウェアエミュレーション、V-USBを選択
- Vendor-IDとProduct-IDの無料ペア(V-USBと共に)
- マイクロコントローラーとコンピューターの両方の多くの例
残っていることが1つだけあります-理解したいという願望です! そして、すべての主要なvy望の的となるマイクロコントローラーで奇跡を起こします。
USB経由でデータを受信するティッカーを実際に実装して、別のトピックを作成する予定です。