USB周辺機器の概要

過去6か月間、私は人生で最初のUSBデバイスとそのアプリケーションソフトウェアの開発に携わってきました。そこで、マイクロコントローラー、ドライバー、アプリケーションソフトウェアなど、すべてがそこでどのように機能するかについての理解を共有したいと思います。 また、VID / PIDを選択する問題についても触れます。 より詳細にトピックを理解したい人のための有用なリンクのリストが添付されています。



コンテキスト



電子デバイスが開発されており、センサーに接続されると、微小変位を測定し、結果をPCに転送します。PCで結果はオペレーターにとって便利なグラフィック形式で表示されます。 測定装置の範囲は機械工学です。



すべてがどのように機能するかについて少し



USB周辺機器の生活の主な参加者



この図は、開発中のデバイスの寿命に関係する主な関係者を示しています。

マイクロコントローラはデバイスの主要な要素であり、センサーに制御信号を供給し、応答を受信して​​測定結果を計算します。 実装されたUSBスタックを使用すると、ホストとのデータ交換は読み取りおよび書き込みバッファーでの作業に限定されます。 測定アルゴリズムは大きな計算能力を必要とせず、1回の測定の周期は100〜150 msであるため、 at90usb162マイクロコントローラー(8ビット、16 MHz、16 kB)が選択されます。 このMKはUSBのハードウェアサポートを備えているため、USBスタックのソフトウェア実装が大幅に簡素化されます。 その他の問題では、付属のソフトウェアパッケージのUSB Generic HID Implementationの例のおかげで、スタックを実装してMKを初期化する必要はありませんでした。 AVRのブランド例の代替品には、 AT90USBxxxxおよびATMEGAxxUxのLUFAフレームワーク(MITライセンス)と、ハードウェアUSBサポートなしでAVR-MCを操作できるV-USBスタックの完全ソフトウェア実装(GPLまたは商用ライセンス)があります。



略語HIDについて少し説明します。 これは、人間の入力用に設計されたUSBデバイスのクラスです:キーボード、マウス、ゲームコントローラー。 このようなデバイスは、開発されたデバイスのように、100〜150ミリ秒の間隔で8バイトのパケットのような少量の情報が送信されると想定されています。 このクラスのデバイスを使用する主な利便性は、OSに標準ドライバーが存在することです。これにより、独自のドライバーを作成する必要がなくなります。



私の場合、ホスト(マスター、マスター)はPC、またはマザーボードに組み込まれたUSBコントローラーです。 デバイスの記述子(説明)によると、ホストは約20ミリ秒の周期で新しいパッケージをポーリングします。 アプリケーションソフトウェアは、ホストが受信したデータを収集し、少し処理を行い、測定値が表示される自動車の速度計に似たインジケータを描画します。 接続されているセンサーと変更可能な設定のリストが表示されます。変更はデバイスに転送され、不揮発性メモリに保存されます。



アプリケーションのアイデアの1つはクロスプラットフォームであるため、C ++のQtフレームワークで開発され、データの読み取りおよび転送のためのOSへの呼び出しはlibusbライブラリを介して実行されます。 過去数ヶ月間、犯人向けのlibusb v1.0 バックエンドの積極的な開発が行われました。彼らはすでにプレリリースステータスについて書いており、さらに重要なことに、すべてが私にとってうまく機能しているようです。 Windows用のlibusb v0.1ポート-LibUsb-Win32もあります。 WinAPIを使用した作業のトピックは、USB Complete ブック本について )のVisual BasicおよびVisual C#の例と詳細に説明されています。 WinAPIを試してみたが、気に入らなかった。



VIDおよびPID



USBデバイスをリリースするとき、会社はそれに製造元識別子(vid-ベンダーID)と製品(pid-製品ID、シリアル番号と混同しないように)を割り当てる必要があります。 正式には、OSのデバイスドライバー間の競合を防ぐために一意性が必要です。 私は、これが唯一の可能な技術的解決策よりも、標準の作成者のためにお金を稼ぐための一つの方法であると疑っていますが。 ただし、もちろん、私は彼らが作成した標準でお金を稼ぐために努力していることを非難しません。

したがって、周辺機器メーカーにとって、独自のビデオを取得するには2つの方法があります。 そのようなお金を支払うことができない人のために、チップメーカーはvidとpidを使用するための様々なオプションを提供します:



主な情報源



周辺機器開発者向けのUSB( 英語 、ロシア語)の優れた紹介- 標準の何百もの代わりに30ページ。 USB周辺機器とそのためのドライバーの開発に関する詳細情報は、 Lakeview Researchの Webサイトで見つけることができます;特に「USB Complete:The Developer's Guide」、Jan Axelsonに言及したいと思います。



All Articles