(57)【要約】【課題】通信速度を優先させるか通信品質を優先させるによって任意にＵＳＢによる通信速度モードを切り替えることができるＵＳＢ通信装置を提供する。【解決手段】ＵＳＢホストコントローラ１ｂがＥＨＣＩ１ａ１を選択し、ハイスピードモードによってＵＳＢデバイスコントローラ２ａと接続して高速通信を行う。このとき、ハイスピードモードによる高速通信においてノイズなどによって通信品質が劣化し、ＵＳＢデバイス制御ファームウェア２ｂが通信不良の時間を一定時間以上カウントすると、ＵＳＢホストコントローラ１ｂはＯＨＣＩ／ＵＨＣＩ１ａ２を選択して、フルスピードモードに切り替えて通信速度を低下させる。これによって、ＵＳＢホスト１とＵＳＢデバイス２との間の通信品質は安定化する。尚、ハイスピードモードからフルスピードモードへの切替時においては伝送データの欠落はないので切替時の通信は安定している。【選択図】      図１
2007172160.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）ホスト装置と接続されると、ＵＳＢデバイスとして第１の通信速度、または前記第１の通信速度よりも高速の第２の通信速度のいずれかで通信を行うＵＳＢ通信装置であって、
前記ＵＳＢホスト装置と前記第２の通信速度で通信を行っているときに、通信不良の発生を検出する通信不良検出手段と、
前記通信不良検出手段により通信不良の発生が検出されると、前記ＵＳＢホスト通信装置に対して、前記第１の通信速度への通信速度切り替え要求を生成する切り替え要求手段と、を備えるＵＳＢ通信装置。
【請求項２】
前記通信不良検出手段は、所定時間以上、前記ＵＳＢホスト装置からのデータを受信できないときに、通信不良が発生したものとすることを特徴とする請求項１に記載のＵＳＢ通信装置。
【請求項３】
前記通信速度の切り替え要求に基づいて、前記ＵＳＢホスト装置との通信速度が前記第１の通信速度に切り替わった後、前記第１の通信速度での通信がアイドル状態になると、
前記切り替え要求手段は、前記第２の通信速度への通信速度切り替え要求を生成することを特徴とする請求項２に記載のＵＳＢ通信装置。
【請求項４】
前記第１の通信速度は、フルスピードモードで通信を行ったときの通信速度であり、
前記第２の通信速度は、ハイスピードモードで通信を行ったときの通信速度であることを特徴とする請求項１から３のいずれかに記載のＵＳＢ通信装置。
【請求項５】
ＵＳＢ（Universal Serial Bus）デバイス装置と接続されると、ＵＳＢホストとして第１の通信速度、または前記第１の通信速度よりも高速の第２の通信速度のいずれかで通信を行うＵＳＢ通信装置であって、
前記ＵＳＢデバイス装置と第２の通信速度で通信を行っているときに、当該ＵＳＢデバイス装置からの通信速度の切り替え要求を受け付ける手段と、
前記切り替え要求を受け付けると、前記第２の通信速度から前記第１の通信速度へ通信速度を切り換える切り替え手段と、を備えるＵＳＢ通信装置。
【請求項６】
ＵＳＢ（Universal Serial Bus）ホスト装置と接続されると、ＵＳＢデバイスとして第１の通信速度、または前記第１の通信速度よりも高速の第２の通信速度のいずれかで通信を行うＵＳＢ通信装置による通信速度切り替えのための方法であって、
前記ＵＳＢホスト装置と前記第２の通信速度で通信を行っているときに、通信不良の発生を検出するステップと、
前記通信不良の発生が検出されると、前記ＵＳＢホスト通信装置に対して、前記第１の通信速度への通信速度切り替え要求を生成するステップと、を含む通信速度切り替えのための方法。
【請求項７】
ＵＳＢ（Universal Serial Bus）デバイス装置と接続されると、ＵＳＢホストとして第１の通信速度、または前記第１の通信速度よりも高速の第２の通信速度のいずれかで通信を行うＵＳＢ通信装置による通信速度切り替えのための方法であって、
前記ＵＳＢデバイス装置と第２の通信速度で通信を行っているときに、当該ＵＳＢデバイス装置からの通信速度の切り替え要求を受け付けるステップと、
前記切り替え要求を受け付けると、前記第２の通信速度から前記第１の通信速度へ通信速度を切り換えるステップと、を含む通信速度切り替えのための方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ（Universal Serial Bus）による通信機能を備えた通信装置に関し、特に、ＵＳＢによる通信の途中で通信速度を切り替えることができる通信装置に関する。
【背景技術】
【０００２】
従来より、パーソナルコンピュータ（以下、パソコンという）などのホスト装置とキーボード、マウス、プリンタなどの周辺機器とを接続する場合は、ＵＳＢによる通信が使われている。ここで、ＵＳＢの通信速度には、１．５Ｍｂｐｓ（ＵＳＢ１.０のロースピードモード）、１２Ｍｂｐｓ（ＵＳＢ１.１のフルスピードモード）、及び４８０Ｍｂｐｓ（ＵＳＢ２．０のハイスピードモード）がある。そして、ＵＳＢ２．０に対応したＵＳＢホスト及びＵＳＢデバイスは、これらの３種類の通信速度のいずれかで通信を行うことができる。
【０００３】
ＵＳＢ２．０に対応したＵＳＢ通信装置は、通常、ハイスピードモードを優先させて接続する。つまり、ＵＳＢホスト及びＵＳＢデバイスの双方がＵＳＢ２．０に対応していれば、両者はハイスピードモードで接続される。
【０００４】
つまり、ＵＳＢ２．０に対応するＵＳＢホストが、ハイスピードモードをサポートするＥＨＣＩ（Enhanced Host Controller Interface）と、フルスピードモードをサポートするＯＨＣＩ（Open Host Controller Interface）またはＵＨＣＩ（Universal Host Controller Interface）とを備え、かつＵＳＢデバイスがＵＳＢ２.０に対応している場合は、ＵＳＢホストは、ＵＳＢデバイスの接続時には自動的かつ強制的にハイスピードモードのインタフェースに接続する。このようにして、速いデータ転送速度のモードに自動的に切り替えてＵＳＢホストとＵＳＢデバイスとの間で通信を確立する（例えば、非特許文献１参照）。
【非特許文献１】ＵＳＢコンプリート［第２版］：（ＵＳＢ２.０を含むカスタムＵＳＢデバイス開発のすべて）、２００４年９月１日初版第３刷発行、著者：ジャン・アクセルソン、訳者：玉井浩、発行所：株式会社エスアイビー・アクセス
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ハイスピードモードで通信を行うと、データの通信速度が速くなる代わりに、ノイズの影響を受けやすくなるという問題がある。つまり、非常にノイズの多い環境においてハイスピードモードで通信を行うと通信品質が劣化し、データ転送が行えなくなるというおそれがある。
【０００６】
そこで、本発明の目的は、ＵＳＢで通信を行う際に、所定の通信品質を確保することである。
【課題を解決するための手段】
【０００７】
本発明の一つの態様に従うＵＳＢ通信装置は、ＵＳＢホスト装置と接続されると、ＵＳＢデバイスとして第１の通信速度、または前記第１の通信速度よりも高速の第２の通信速度のいずれかで通信を行うＵＳＢ通信装置である。そして、前記ＵＳＢホスト装置と前記第２の通信速度で通信を行っているときに、通信不良の発生を検出する通信不良検出手段と、前記通信不良検出手段により通信不良の発生が検出されると、前記ＵＳＢホスト通信装置に対して、前記第１の通信速度への通信速度切り替え要求を生成する切り替え要求手段と、を備える。
【０００８】
これにより、高速でＵＳＢ通信を行っているときに通信不良が発生すると、通信速度を低下させることができ、その結果、通信品質が安定する。
【０００９】
好適な実施形態では、前記通信不良検出手段は、所定時間以上、前記ＵＳＢホスト装置からのデータを受信できないときに、通信不良が発生したものとするようにしてもよい。
【００１０】
好適な実施形態では、前記通信速度の切り替え要求に基づいて、前記ＵＳＢホスト装置との通信速度が前記第１の通信速度に切り替わった後、前記第１の通信速度での通信がアイドル状態になると、前記切り替え要求手段は、前記第２の通信速度への通信速度切り替え要求を生成するようにしてもよい。
【００１１】
これにより、通信不良の発生が一時的な要因によるものであれば、その要因がなくなれば再び高速通信を行うことが可能となる。
【００１２】
好適な実施形態では、前記第１の通信速度は、フルスピードモードで通信を行ったときの通信速度であり、前記第２の通信速度は、ハイスピードモードで通信を行ったときの通信速度であってもよい。
【００１３】
本発明の一つの態様に従うＵＳＢ通信装置は、ＵＳＢデバイス装置と接続されると、ＵＳＢホストとして第１の通信速度、または前記第１の通信速度よりも高速の第２の通信速度のいずれかで通信を行うＵＳＢ通信装置である。そして、前記ＵＳＢデバイス装置と第２の通信速度で通信を行っているときに、当該ＵＳＢデバイス装置からの通信速度の切り替え要求を受け付ける手段と、前記切り替え要求を受け付けると、前記第２の通信速度から前記第１の通信速度へ通信速度を切り換える切り替え手段と、を備える。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら、本発明におけるＵＳＢ通信装置の実施の形態について説明するが、まず、理解を容易にするために、本発明に適用されるＵＳＢ通信装置の概要について説明する。本発明のＵＳＢ通信装置は、ハイスピードモードにおける通信で通信品質が悪い場合には、強制的にフルスピードモードに接続を切り替えて通信速度を低下させることにより通信品質を安定化させるようにした。また、通信速度モードの切り替え時にバッファに蓄積されたデータを欠落させないように、ソフトウェアのアルゴリズムを構築した。
【００１５】
すなわち、本発明のＵＳＢ通信装置は、ＵＳＢホストとＵＳＢデバイスとを接続しようとするときに、ＵＳＢホストコントローラが、ＵＳＢデバイスを能動的に接続させるためのインタフェース（例えば、ＥＨＣＩ）を選択する。そして、ＥＨＣＩの機能によって接続されたハイスピードモードにおいて通信エラーが発生した場合には、ＯＨＣＩの機能によって自動的にフルスピードモードに切り替える。また、ハイスピードモードからフルスピードモードへの切替時に転送データが欠落しないようにソフトウェアのアルゴリズムを組立てる。
【００１６】
次に、図面を参照しながら、本発明におけるＵＳＢ通信装置の好適な実施の形態について説明する。図１は、本発明の機能によって通信速度モードの切り替えを実現させるＵＳＢ通信装置の基本的な構成図である。図１に示すように、ＵＳＢ通信装置は、パソコンなどのＵＳＢホスト１とこのＵＳＢホスト１から送信されたデータによって所望の処理を行うＵＳＢデバイス２とによって構成されている。
【００１７】
ＵＳＢホスト１は、ハイスピードモードに対応するＥＨＣＩ１ａ１の機能と、フルスピードモードに対応するＯＨＣＩ／ＵＨＣＩ１ａ２の機能とを備えるインタフェース１ａと、ＥＨＣＩ１ａ１及びＯＨＣＩ／ＵＨＣＩ１ａ２の機能を実現させるＵＳＢホストコントローラ（通信路切替手段）１ｂと、ＵＳＢホストコントローラ１ｂを制御するクラスドライバ１ｃと、ＵＳＢホスト１の様々なソフトウェアを実現させるＵＳＢホストアプリケーション１ｄとを備えた構成になっている。
【００１８】
また、ＵＳＢ２.０に対応するＵＳＢデバイス２は、ＵＳＢホスト１からの指令によりハイスピードモードまたはフルスピードモードへの接続制御を行うＵＳＢデバイスコントローラ２ａと、ＵＳＢデバイスコントローラ２ａのレジスタをハイスピードモードまたはフルスピードモードへ設定するための制御を行うＵＳＢデバイス制御ファームウェア２ｂと、ＵＳＢデバイス２の様々なソフトウェアを実現させるＵＳＢデバイスアプリケーション２ｃとを備えた構成となっている。
【００１９】
次に、本発明のＵＳＢ通信装置による通信速度モードの切り替えに関する理解を容易にするために、一般的に行われているＵＳＢホストとＵＳＢデバイスとのＵＳＢ接続（ＵＳＢ開始）及びＵＳＢ遮断（ＵＳＢ終了）の処理について説明する。図２は、ハイスピードモードでの接続シーケンスを示す。したがって、図１を参照しながら図２に示すハイスピードモードへの接続処理（つまり、ＵＳＢ開始処理）の流れを説明する。
【００２０】
ＵＳＢホスト１とＵＳＢデバイス２が正常に接続されたとき、ＵＳＢデバイス２がＵＳＢ２.０に対応していれば、ＵＳＢデバイス２のＵＳＢデバイスアプリケーション２ｃからＵＳＢデバイス制御ファームウェア２ｂへＵＳＢ開始命令が出され、ＵＳＢデバイス制御ファームウェア２ｂに「強制ハイスピード」のフラグが立てられる（ステップＳ１）。すると、ＳＢデバイス制御ファームウェア２ｂは、ＵＳＢデバイスコントローラ２ａに対して「ハイスピード」のレジスタを設定する（ステップＳ２）。これによって、ＵＳＢホスト１のＥＨＣＩ１ａ１が動作して、ＵＳＢホスト１のＥＨＣＩ１ａ１とＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａとの間でハイスピードモードによる接続処理が開始される（ステップＳ３）。
【００２１】
これによって、ＥＨＣＩ１ａ１とＵＳＢホストコントローラ１ｂとの間、及びＥＨＣＩ１ａ１とＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａとの間で、接続処理が開始された旨の情報を示すディスクリプタが取得／設定される（ステップＳ４）。そして、ＵＳＢホスト１のＥＨＣＩ１ａ１とＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａとの間でハイスピードモードによる接続処理が終了すると（ステップＳ５）、接続完了の通知が、ＥＨＣＩ１ａ１からＵＳＢホストコントローラ１ｂへ送信され（ステップＳ６）、さらに、ＵＳＢホストコントローラ１ｂからクラスドライバ１ｃへ送信される（ステップＳ７）。
【００２２】
また、ＵＳＢデバイス２においては、ステップＳ５でハイスピードモードの接続処理が完了すると、ＵＳＢ開始処理完了の通知が、ＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへ送信され（ステップＳ８）、さらに、ＵＳＢデバイス制御ファームウェア２ｂからＵＳＢデバイスアプリケーション２ｃへ送信される。このようにして、指定された通信速度（つまり、ハイスピードの通信速度）に強制的に設定される。
【００２３】
図３は、一般的に行われているハイスピードモードの終了処理の流れを示すシーケンス図である。ハイスピードモードを終了する場合は、ＵＳＢデバイス２のＵＳＢデバイスアプリケーション２ｃからＵＳＢデバイス制御ファームウェア２ｂへハイスピードモードの停止命令が送信され（ステップＳ１１）、さらに、ＵＳＢデバイス制御ファームウェア２ｂからＵＳＢデバイスコントローラ２ａへハイスピードモードの停止命令が送信される（ステップＳ１２）。これによって、ＵＳＢデバイスコントローラ２ａは、ＵＳＢホスト１のＥＨＣＩ１ａ１との間で接続されていたハイスピードモードの遮断処理を開始する（ステップＳ１３）。
【００２４】
ハイスピードモードの遮断処理の実行は、ＥＨＣＩ１ａ１とＵＳＢホストコントローラ１ｂとの間で行われ（ステップＳ１４）、ＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａとＵＳＢホスト１のＥＨＣＩ１ａ１との間のハイスピードモードの遮断処理が完了すると（ステップＳ１５）、遮断処理完了の通知が、ＥＨＣＩ１ａ１からＵＳＢホストコントローラ１ｂへ送信され（ステップＳ１６）、さらに、ＵＳＢホストコントローラ１ｂからクラスドライバ１ｃへ送信される（ステップＳ１７）。
【００２５】
また、ＵＳＢデバイス２においては、ステップＳ１５でハイスピードモードの遮断処理が完了すると、ＵＳＢ終了処理完了の通知が、ＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへ送信され（ステップＳ１８）、さらに、ＵＳＢデバイス制御ファームウェア２ｂからＵＳＢデバイスアプリケーション２ｃへ送信される。このようにして、ＵＳＢデバイスアプリケーション２ｃからの停止命令によってハイスピードモードを遮断してＵＳＢデバイスコントローラ２ａを停止させる。また、ＵＳＢデバイスコントローラ２ａが停止した際、ＵＳＢバスは遮断状態となるためＵＳＢホスト１にはステップＳ１６、Ｓ１７のような遮断完了の通知のイベントが発生する。
【００２６】
次に、本発明の特徴である、ハイスピードモードにおいて通信エラーが発生したときにフルスピードモードへ切り替える処理の流れについて詳細に説明する。図４は、図１に示すＵＳＢ通信装置が本発明の機能によって実現する、ハイスピードモードからフルスピードモードへの切替処理の流れを示すシーケンス図である。
【００２７】
図４に示すシーケンスのような切替処理を行うためには、あらかじめ、次のような設定を行うと共に次のような条件を決めておく必要がある。すなわち、図１に示すＵＳＢ通信装置が、ハイスピードモードからフルスピードモードへの切替処理を実現するためには、あらかじめ、ＵＳＢデバイス２のＵＳＢデバイス制御ファームウェア２ｂにおいて、次の５つの機能を作成しておく必要がある。
（１）強制的にフルスピードに設定できるようにＵＳＢデバイスコントローラ２ａのレジスタを設定するアプリケーションを作成する。
（２）ＵＳＢデバイスコントローラ２ａを停止するアプリケーションを作成する。
（３）ＵＳＢデバイスコントローラ２ａを開始するアプリケーションを作成する。
（４）ＵＳＢデバイスコントローラ２ａより通信のタイムアウトを取得できるアプリケーションを作成する。
（５）ＵＳＢのリセットを行うアプリケーションを作成する。
【００２８】
また、（１）のフルスピードに設定するＵＳＢデバイスコントローラ２ａのレジスタ設定は、（３）のＵＳＢデバイスコントローラ２ａの開始時に行われるようにしておく。さらに、ＵＳＢ開始時にはＵＳＢデバイスコントローラ２ａを初期化しておく必要がある。また、（２）のＵＳＢデバイスコントローラ２ａの停止と、（３）のＵＳＢデバイスコントローラ２ａの開始については、外部公開関数としてＵＳＢホスト１側のＵＳＢホストアプリケーション１ｄへ提供することにより、ＵＳＢホストアプリケーション１ｄからＵＳＢデバイス２側のＵＳＢデバイスコントローラ２ａの開始・停止を制御することができる。
【００２９】
次に、図４に示すハイスピードモードからフルスピードモードへの切替処理の流れを説明する。
【００３０】
同図に示すように、ＵＳＢホスト１からＵＳＢデバイス２へデータを送信する前に、まず、ＵＳＢホスト１からＵＳＢデバイス２へデータサイズを送信する処理が行われる。従って、ＵＳＢホスト１では、クラスドライバ１ｃからＵＳＢホストコントローラ１ｂへデータサイズが送信され（ステップＳ２１）、ＵＳＢホストコントローラ１ｂからクラスドライバ１ｃへ送信完了の応答が返される（ステップＳ２２）。
【００３１】
さらに、ＵＳＢホストコントローラ１ｂからハイスピードモードの機能を実現するＥＨＣＩ１ａ１へデータサイズが送信され（ステップＳ２３）、ＥＨＣＩ１ａ１からＵＳＢホストコントローラ１ｂへ送信完了の応答が返される（ステップＳ２４）。そして、ＥＨＣＩ１ａ１からＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａへデータサイズが転送される（ステップＳ２５）。
【００３２】
次に、ＵＳＢデバイス２では、ＵＳＢデバイスコントローラ２ａがＵＳＢデバイス制御ファームウェア２ｂへイベントを通知し（ステップＳ２６）、ＵＳＢデバイス制御ファームウェア２ｂにデータサイズを受信させる（ステップＳ２７）。これにより、ＵＳＢデバイスアプリケーション２ｃは、ＵＳＢデバイス制御ファームウェア２ｂへデータサイズの読取コマンドを送信し（ステップＳ２８）、ＵＳＢデバイス制御ファームウェア２ｂからデータサイズを取得する（ステップＳ２９）。
【００３３】
その後、ＵＳＢホスト１のクラスドライバ１ｃからＵＳＢホストコントローラ１ｂへデータが送信され（ステップＳ３０）、さらに、ＵＳＢホストコントローラ１ｂからＥＨＣＩ１ａ１へデータが送信され（ステップＳ３１）、ＥＨＣＩ１ａ１からＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａへデータがコントロール転送される（ステップＳ３２）。ここで、通信トラブルが発生して、データがＵＳＢデバイスコントローラ２ａに正常に転送されないため、ＵＳＢデバイスコントローラ２ａからＥＨＣＩ１ａ１へエラーメッセージの応答が返される（ステップＳ３３）。
【００３４】
一方、ＵＳＢデバイス２では、ＵＳＢデバイスアプリケーション２ｃからＵＳＢデバイス制御ファームウェア２ｂへデータの読取コマンドが送信されるので（ステップＳ３４）、ＵＳＢデバイス制御ファームウェア２ｂはＵＳＢデバイスコントローラ２ａへデータの読み取りに行くが（ステップＳ３５）、ＵＳＢデバイスコントローラ２ａにはデータがないので、ＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへデータ無しの応答が返される（ステップＳ３６）。
【００３５】
さらに、ＥＨＣＩ１ａ１からＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａへデータの転送がリトライされる（ステップＳ３７）。ところが、通信トラブルが継続して発生しているので、データはＵＳＢデバイスコントローラ２ａへ正常に転送されないため、ＵＳＢデバイスコントローラ２ａからＥＨＣＩ１ａ１へ再びエラーメッセージの応答が返される（ステップＳ３８）。
【００３６】
一方、ＵＳＢデバイス２では、ＵＳＢデバイス制御ファームウェア２ｂがＵＳＢデバイスコントローラ２ａへデータの読み取りに行くが（ステップＳ３９）、ＵＳＢデバイスコントローラ２ａにはデータがないので、ＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへデータ無しの応答が返される（ステップＳ４０）。
【００３７】
このようにして、ＵＳＢホスト１のＥＨＣＩ１ａ１からＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａに対してデータ転送が何回もリトライされ、所定の時間が経過してＵＳＢデバイス制御ファームウェア２ｂによってタイムアウトが検出されると（ステップＳ４１）、ＵＳＢデバイス制御ファームウェア２ｂはＵＳＢデバイスコントローラ２ａに対して通信回線のステータス（状態）を参照する（ステップＳ４２）。しかし、ＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂに対して、リトライは既にタイムアウトになった旨の通知が送信されるので（ステップＳ４３）、ＵＳＢデバイス制御ファームウェア２ｂは、通信不良が発生したものとして、ＵＳＢデバイスコントローラ２ａに対して通信の入出力の停止を指示する（ステップＳ４４）。
【００３８】
一方、ＵＳＢホスト１においては、ステップＳ３３及びステップＳ３８において、ＥＨＣＩ１ａ１が、ＵＳＢデバイスコントローラ２ａからエラーメッセージの応答を受けたため、ＥＨＣＩ１ａ１からＵＳＢホストコントローラ１ｂへ転送エラーの通知が送信され（ステップＳ４５）、さらに、ＵＳＢホストコントローラ１ｂからクラスドライバ１ｃへ転送エラーの通知が送信される（ステップＳ４６）。
【００３９】
次に、ＵＳＢデバイス２では、通信不良の発生が検出されたので、ＵＳＢデバイス制御ファームウェア２ｂからＵＳＢデバイスコントローラ２ａへ、ハイスピードモードからフルスピードモードへの速度切り替えメッセージが送信され（ステップＳ４７）、この速度切り替えメッセージはＵＳＢデバイスコントローラ２ａからＵＳＢホスト１のＥＨＣＩ１ａ１へ転送される（ステップＳ４８）。なお、実際には、ＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａは、ＵＳＢホスト１からのポーリングによって速度切り替えメッセージをＥＨＣＩ１ａ１へ転送する。
【００４０】
このようにして、速度切り替えメッセージがＵＳＢホスト１のＥＨＣＩ１ａ１へ転送されると、ＥＨＣＩ１ａ１からＵＳＢホストコントローラ１ｂへ速度切り替え通知が送信され（ステップＳ４９）、さらに、ＵＳＢホストコントローラ１ｂからクラスドライバ１ｃへ速度切り替え通知が送信される（ステップＳ５０）。これによって、ＵＳＢデバイス２では、ＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへ、速度切り替えメッセージの通知が完了した旨の情報が送信される（ステップＳ５１）。そして、ＵＳＢデバイス制御ファームウェア２ｂからＵＳＢデバイスアプリケーション２ｃへ速度切り替えの通知が送信される（ステップＳ５２）。このとき、ＵＳＢデバイス２のＵＳＢデバイスアプリケーション２ｃは未送信のデータを保持しておく。また、ＵＳＢホスト１側においても、速度切り替えメッセージの応答を返す前に現在までの送信データは保持しておく。
【００４１】
次に、ＵＳＢホスト１においては、クラスドライバ１ｃからＵＳＢホストコントローラ１ｂへ、速度切り替えメッセージの通知を受けた旨の通知応答メッセージが送信され（ステップＳ５３）、ＵＳＢホストコントローラ１ｂからクラスドライバ１ｃへ送信完了の通知が送信される（ステップＳ５４）。さらに、ＵＳＢホストコントローラ１ｂからＥＨＣＩ１ａ１へ、速度切り替えメッセージの通知を受けた旨の通知応答メッセージが送信され（ステップＳ５５）、ＥＨＣＩ１ａ１からＵＳＢホストコントローラ１ｂへ送信完了の通知が送信される（ステップＳ５６）。
【００４２】
そして、通知応答メッセージは、ＵＳＢホスト１のＥＨＣＩ１ａ１からＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａへ転送され（ステップＳ５７）、さらに、その通知応答メッセージは、ＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへ送信される（ステップＳ５８）。
【００４３】
これによって、ＵＳＢデバイス２のＵＳＢデバイス制御ファームウェア２ｂからＵＳＢデバイスコントローラ２ａへ、ハイスピードモードの停止指令が送信されるので（ステップＳ５９）、ＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａとＵＳＢホスト１のＥＨＣＩ１ａ１との間では、ハイスピードモードの通信が遮断される（ステップＳ６０）。そして、ハイスピードモードの遮断ＯＫの通知がＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへ送信される（ステップＳ６１）。
【００４４】
このようにして、ハイスピードモードの停止シーケンスにしたがってハイスピードモードが遮断され、フルスピードモードの開始シーケンスにしたがって、フルスピードモードのＯＨＣＩ／ＵＨＣＩ１ａ２の機能が立ち上がる。そして、ＯＨＣＩ／ＵＨＣＩ１ａ２の機能が立ち上がると、ＵＳＢデバイス２のＵＳＢデバイス制御ファームウェア２ｂからＵＳＢデバイスコントローラ２ａへフルスピードモードの開始指令が送信されるので（ステップＳ６２）、ＵＳＢデバイス２のＵＳＢデバイスコントローラ２ａとＵＳＢホスト１のＯＨＣＩ／ＵＨＣＩ１ａ２はフルスピードモードの通信を接続する（ステップＳ６３）。また、フルスピードモードの接続がＯＫである旨の通知がＵＳＢデバイスコントローラ２ａからＵＳＢデバイス制御ファームウェア２ｂへ送信される（ステップＳ６４）。
【００４５】
これによって、ＵＳＢホスト１では、ＵＳＢホストコントローラ１ｂからクラスドライバ１ｃへフルスピードモードの通信開始通知が送信され（ステップＳ６５）、ＵＳＢデバイス２では、ＵＳＢデバイスコントローラ１ｂからクラスドライバ１ｃへフルスピードモードの通信開始通知が送信される（ステップＳ６６）。このようにして、ハイスピードモードにおいて通信品質が低下したときは、自動的にフルスピードモードへ切り替えることができる。
【００４６】
すなわち、本発明のＵＳＢ通信装置においては、ＵＳＢデバイス２のＵＳＢデバイス制御ファームウェア２ｂが、ＵＳＢホスト１からＵＳＢデバイス２への通信のタイムアウトを検出したら、ハイスピードモードによる通信を停止した上で、ＵＳＢホスト１とＵＳＢデバイス２に対してフルスピードモードへの切替通知を送信する。このとき、ＵＳＢホスト１への切替通知はコントロール転送を利用する。つまり、ハイスピードモードが、通信エラーなどによってデータ転送のリトライがタイムアウトとなったら、ＵＳＢホスト１からＵＳＢデバイス２へベンダーリクエストを出し、それに応答する形でＵＳＢデバイス２からＵＳＢホスト１へ切替通知を送信してフルスピードモードへ切り替える。
【００４７】
また、本発明のＵＳＢ通信装置においては、必要に応じてハイスピードモードとフルスピードモードとを何度でも切り替えることができる。図５は、本発明のＵＳＢ通信装置においてハイスピードモードとフルスピードモードとを適宜に切り替える処理の流れを示すフローチャートである。
【００４８】
図５において、ＵＳＢ通信装置のＵＳＢホスト１とＵＳＢデバイス２がハイスピードモードで接続されているとき（ステップＳ７１）、ＵＳＢデバイス２がＵＳＢホスト１よりデータを受信する（ステップＳ７２）。ここで、通信がタイムアウトになったか否かを判定し（ステップＳ７３）、まだ、通信がタイムアウトになっていなければ（ステップＳ７３でＮｏ）、そのままＵＳＢホスト１よりデータの受信を続けるが（ステップＳ７２）、通信がタイムアウトになったら（ステップＳ７３でＹｅｓ）、通信速度をフルスピードモードに変更する（ステップＳ７４）。
【００４９】
ここで、通信速度がフルスピードモードの状態で通信がタイムアウトになったか否かを判定し（ステップＳ７５）、もし、通信がタイムアウトになっていれば（ステップＳ７５でＹｅｓ）、これ以上は通信を継続することができないのでエラー処理を行う（ステップＳ７６）。一方、ステップＳ７５で通信がタイムアウトになっていなければ（ステップＳ７５でＮｏの場合）、その通信がアイドル状態になるまでフルスピードモードで通信を続ける（ステップＳ７７）。
【００５０】
そして、その通信がアイドル状態になったら通信速度を再びハイスピードモードに切り替える（ステップＳ７８）。そして、アイドル時にテストパターンを送信してタイムアウトになったか否かにより、通信可能か否かを判定する（ステップＳ７９）。ここで、ハイスピードモードでの通信が可能であれば（ステップＳ７９でＹｅｓ）、ステップＳ７２に戻って、ハイスピードモードでＵＳＢホスト１よりデータを受信し、前述の各ステップを繰り返す。また、ステップＳ７９で、ハイスピードモードでの通信が不可能であれば（ステップＳ７９でＮｏ）、ステップＳ７４に戻って、通信速度をフルスピードモードに変更し、前述の各ステップを繰り返す。このようにして、ハイスピードモードとフルスピードモードとを任意に切り替えることができる。
【００５１】
本実施形態によれば、ハイスピードモードに切り替えて通信速度を優先させたり、フルスピードモードに切り替えて通信品質を優先させたりする選択を任意に行うことができる。例えば、ノイズが多くて通信品質が保証できないような環境で使用する場合は、ハイスピードモードからフルスピードモードへ選択的に通信を切り替えることにより、通信品質を一定レベル以上に安定化させることができる。
【図面の簡単な説明】
【００５２】
【図１】本発明の一実施形態に係るＵＳＢ通信装置の構成図である。
【図２】ハイスピードモードでの接続処理の流れを示すシーケンス図である。
【図３】ハイスピードモードの終了処理の流れを示すシーケンス図である。
【図４】ハイスピードモードからフルスピードモードへの切替処理の流れを示すシーケンス図である。
【図５】ハイスピードモード及びフルスピードモードを適宜に切り替える処理を示すフローチャートである。
【符号の説明】
【００５３】
１  ＵＳＢホスト
１ａ  インタフェース
１ａ１  ＥＨＣＩ
１ａ２  ＯＨＣＩ／ＵＨＣＩ
１ｂ  ＵＳＢホストコントローラ
１ｃ  クラスドライバ
１ｄ  ＵＳＢホストアプリケーション
２  ＵＳＢデバイス
２ａ  ＵＳＢデバイスコントローラ
２ｂ  ＵＳＢデバイス制御ファームウェア
２ｃ  ＵＳＢデバイスアプリケーション
【図１】
2007172160.tif 000003
【図２】
2007172160.tif 000004
【図３】
2007172160.tif 000005
【図４】
2007172160.tif 000006
【図５】
2007172160.tif 000007