USBとは、「Universal Serial Bus」(ユニバーサル・シリアル・バス)の略称。コンピュータに周辺機器を接続するシリアルバスの規格の1つで、周辺機器を繋ぐインターフェースとして最も普及しているものです。1996年に「USB1.0」として初めて規格化されて以来、USB4に至るまで開発が続けられています。
USBの特徴は「機器動作のための電力をUSBポートから供給できる」ということ。キーボードやUSBメモリなどの必要電力量が少ない機器の場合、ACアダプタに繋がなくても使用できます。
周辺機器は最大127台接続可能。接続口が足りない場合はUSBハブを使うことで拡張できます。電源を入れたまま端子を抜き差しできるホットプラグ機能も付いており、扱いやすいのが特徴。その利便性の高さから、周辺機器の接続という本来の目的だけでなく、スマートフォンの充電やオーディオプレーヤーの再生といった電力供給の目的でも使用されるようになっています。
USBの転送速度は規格が進化するたびに高速化しており、USB1.0では12Mbit/sだった転送速度は、USB2.0では約40倍の480Mbpsまで高速化。さらに、USB3.0では転送速度5Gbpsと、USB2.0の約10倍(理論値)のスピードになりました。
USB3.1とUSB3.2を経て、現在はUSB4(転送速度40Gbit/s)まで開発されていますが、初期のUSB1.0と比べると転送速度は理論値で3,000倍以上速くなっており、データ通信の高速化がはっきりと分かります。
USBのコネクタにはUSB Type-A・USB Type-B・USB Type-Cの3つタイプがあります。
USB Type-Aはパソコンに接続する標準的なタイプ。USB Type-Bはプリンタやスキャナーなど、パソコン周辺機器によく使われるタイプです。USB Type-CはUSB 3.1で制定されたコネクタで、MacbookやAndoroidの接続に採用されています。
ほかにも、デジタルカメラの接続に使われるMini USB Type-Bや抜き挿しの耐久性が強いMicro USB Type-Bなどがありますが、よく使われるのはUSB Type-AからType-Cの3タイプです。
USBの中でも組み込み機器に用いられることが多いのがUSB2.0。その特徴は以下のようになっています。
デバイス側に複雑なソフトウェアは不要ですが、その分ホスト(パソコンなどのコンピュータ)側の負担が大きくなります。
もともとはパソコンの周辺機器を繋ぐために作られた物なので、デバイスの負担を軽くし、ハードウェアがコンパクトになるような設計になっています。通信はブロードキャスト方式で、すべてのデバイスに同じデータを送って指令の順番通りに処理するため、接続デバイスが増えれば増えるほど処理速度が遅くなってしまいます。
一方、USB3.0は1対1の通信ができるユニキャストが採用されており、効率よくデータ通信できるようになっているため、転送速度だけで比較するならUSB3.0の方が優れています。
USBの通信はポーリング方式で、ホストの出した要求に対してデバイスが応答する確認作業を行っています。デバイスがデータ受信できない場合は否定応答をして、後ほどホストから同じ要求が出されるのが原則。デバイス側にホストに要求する機能がなくてもデータの送受信ができるため、コンパクトなハードウェアでも問題なく動作します。
USB2.0は、WindowsやMac-OS、Linuxなど多くのOSでサポートされています。Androidと接続すれば、高度な操作をしたりパソコンに画面をミラーリングしたりといった動作も可能です。
本来はデバイスごとに特別な処理を行う必要がありますが、OSがサポート済みの場合が多いため、簡単にデバイスを使用できることも特徴です。
注意点は、USB3.0対応の機器であってもUSB2.0の転送速度しか出せないこと。USB2.0対応のパソコンにもUSB3.0のデバイスは接続できますが、転送速度はUSB2.0の最大速度である480Mbpsしか出せません。ホストとデバイスの両方の規格が揃わない場合は規格の低い方の転送速度で通信されるため、スムーズに動作しないこともあるでしょう。
組み込み機器はパソコンと比べるとメモリ容量やCPU処理能力が劣るため、USBホストを実装するための負荷が大きくなります。実装するためには、メガバイト(MB)単位のメモリや動作周波数100MHz 以上の 32 ビット RISC マイコンを搭載した組み込みシステムなどのリソースが必要。また、USBハブを非対応にしたり接続できる周辺機器を制限したりして仕様を限定すると作りやすくなるでしょう。組み込み機器はもともと仕様が限定されているため、そうした仕様の限定が問題になるとは考えにくいですが、限定しすぎて機能が制限されないよう気をつけなければなりません。
USBにソフトウェアを搭載するだけならRTOSは不要。最低限、メインルーチンとサブルーチンがあれば完成できます。規模の大きなOSを採用すれば最初からUSBドライバが用意されているため、ユーザーは独自のクラスドライバや上位アプリケーションを作成することになります。
一方、軽めのOSにはUSBドライバが含まれていないことが多いので、市販のUSB用プロトコル・スタックを購入することでパソコンを介さずに動作するようになるでしょう。仕様の軽いハードウェアの場合、足回りのドライバからすべてを自社開発するパターンも考えられます。
昨今では組み込み機器の性能の向上により、USBホストの機能を実装できるようになりました。それに伴い、USBインプリメンターズ・フォーラム(USBの促進を目的として創設された非営利団体)では「組み込みUSBホスト向けの認証の要件」を公開しています。
パソコンのUSBホストの場合、バス速度としてLow Speed及びFull Speedの両方をサポートする必要がありました。しかし、組み込みUSBホストはどちらか片方のみのサポートでも認証を受けることができます。
なお、Hi Speedをサポートする場合はFull Speedを併せてサポートしなければなりません。転送速度はUSBの規格で定められており、Low Speed :1.5Mbps/Full Speed :12M bps/High Speed :480Mbps/Super Speed :5Gbpsのレベル別に分かれています(単位はbit/sec)。
組み込みUSBホストでは、ハブをサポートするかどうかに加え、サポートする場合のハブの最大段数を1段から5段まで選択できます。コントロール転送のサポートは絶対条件ですが、バルク・インタラプト・アイソクロナス方式は非サポートであっても認証を受けられます。
また、組み込みUSBホストはサスペンドをサポートしなくても認証を受けられます。ただし、サスペンドをサポートする場合は併せてレジュームもサポートしなければなりません。サポートする周辺機器を限定することもできますが、サポートしない周辺機器が接続された場合にはそのことがユーザーに分かるよう、何らかの方法で表示する必要があります。
Cente(セント)は、組込み開発の経験と豊富な知識を持つエンジニアが、実際の機器やシステムを開発する中で培ったスキルを活かして作り上げた組込み開発ブランド。組込み開発に20年以上関わってきた経験と1000プロジェクト・3000ライセンシーの実績を活かし、あらゆるニーズにお応えしています。
ハードウェアからミドルウェア、アプリケーションだけでなく、システム開発のコンサルティングや技術サポートまで、組込み開発に必要なあらゆる技術を提供。すべての商品はソースコードで提供するためブラックボックスは一切無く、完成後の製品イメージが抱きやすくなっています。
ロイヤリティ不要で、半年間の無償サポート付き。プライスをすべて開示しているため、安心してご購入いただけます。
Centeの組込みUSBドライバ全25種類をご紹介します。
※価格はすべて税抜
まずは評価をして検討したい、という方のために、PoCライセンスを1ヶ月2万円/1ライセンス(最低3ヶ月〜) からご利用いただけるプランをご用意しております。ライセンス期間中でも通常の契約と同等のサポートが 受けられますので、安心してお試しいただけます。
PoCライセンスの詳細はこちらをご覧ください。
製品の詳細については、遠慮なくお問い合わせください。