(57)【要約】  本開示は、より確実に通信を行うことができるようにする通信装置、通信方法、プログラム、および、通信システムに関する。少なくとも１台以上の他の通信装置との間で、データ信号線およびクロック信号線を介して信号の送受信を行う送受信部と、バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、その通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うエラー回避部とを備える。本技術は、例えば、バスＩＦに適用できる。
2018150868.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１台以上の他の通信装置との間で信号の送受信を行う送受信部と、
バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うエラー回避部と
を備える通信装置。
【請求項２】
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置による制御に従って通信を行い、前記通信システムに追加的に接続される第２の通信装置であって、
前記送受信部は、前記バスを構成するデータ信号線およびクロック信号線を介して前記他の通信装置との間で信号の送受信を行い、
前記エラー回避部は、前記データ信号線および前記クロック信号線の電位がＨレベルであることを検出したことをカウントの開始条件として、前記データ信号線および前記クロック信号線の電位がＨレベルである状態が所定期間よりも長く継続していることを検出したときに、前記通信システムへの追加的な接続を要求する信号を前記送受信部により送信させる
請求項１に記載の通信装置。
【請求項３】
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置であって、
前記エラー回避部は、前記第２の通信装置が前記通信システムに追加的に接続される可能性がある場合、前記第２の通信装置の通信における通信速度より低速で通信を行う通信装置である低速通信装置と通信を行う際の通信速度の下限を制限する
請求項２に記載の通信装置。
【請求項４】
前記第１の通信装置には、前記第２の通信装置が前記通信システムに追加的に接続される可能性があるか否かを示す情報が予め設定されている
請求項３に記載の通信装置。
【請求項５】
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置であって、
前記エラー回避部は、前記バスでの通信の終了を宣言する終了信号を含む任意のポーリング信号を定期的に前記送受信部に送信させる
請求項１に記載の通信装置。
【請求項６】
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置であって、
前記送受信部は、前記バスを構成するデータ信号線およびクロック信号線を介して前記他の通信装置との間で信号の送受信を行い、
前記エラー回避部は、
前記通信システムに追加的に接続される第２の通信装置が、前記データ信号線および前記クロック信号線の電位がＨレベルであることを検出したことをカウントの開始としてカウントするカウント部を備えていない場合、前記バスでの通信の終了を宣言する終了信号を含む任意のポーリング信号を定期的に前記送受信部に送信させ、
前記通信システムに追加的に接続される第２の通信装置が、前記データ信号線および前記クロック信号線の電位がＨレベルであることを検出したことをカウントの開始としてカウントするカウント部を備えていて、かつ、前記第２の通信装置の通信における通信速度より低速で通信を行う通信装置である低速通信装置が前記通信システムに接続されている場合、前記低速通信装置と通信を行う際の通信速度の下限を制限する
請求項１に記載の通信装置。
【請求項７】
少なくとも１台以上の他の通信装置との間で信号の送受信を行い、
バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行う
ステップを含む通信方法。
【請求項８】
少なくとも１台以上の他の通信装置との間で信号の送受信を行い、
バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行う
ステップを含む処理をコンピュータに実行させるプログラム。
【請求項９】
バスを介した通信の主導権を有する第１の通信装置、および、前記第１の通信装置による制御に従って通信を行う第２の通信装置によって、前記バスを介して通信を行うことができるように構成される通信システムにおいて、
前記第１の通信装置および前記第２の通信装置それぞれは、少なくとも１台以上の他の通信装置との間で信号の送受信を行う送受信部を備え、
前記第１の通信装置および前記第２の通信装置うち少なくとも一方が、前記第１の通信装置が少なくとも前記バスに接続されて通信システムが既に稼働している状態で、前記通信システムに前記第２の通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うエラー回避部を備える
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【背景技術】
【０００２】
従来、複数のデバイスが実装されたボード内でバスを介したデバイス間の通信に用いられるバスＩＦ（Interface）として、例えば、I2C（Inter-Integrated Circuit）が多く利用されている。また、近年、I2Cの高速化を実現することが求められており、次世代の規格としてI3C（Improved Inter Integrated Circuit）の規定が策定され、その改定が進められている。【０００３】
例えば、I2CおよびI3Cは、バスＩＦを介した通信の主導権を有するマスタによる制御に従って、バスＩＦに接続されているスレーブと通信を行うことができるように構成される。また、I3Cでは、I2Cのスレーブと通信を行うことができるように互換性を維持するための機能や、バスＩＦに途中からスレーブが参加することを可能とするホットジョインと称される機能などが提供される。【０００４】
例えば、特許文献１には、ホスト・プロセッサとサブシステム・コントローラとを、I2Cにより相互接続するディジタル・データ処理システムが開示されている。また、特許文献２には、標準I2Cプロトコルの上部に層状に配置された通信プロトコルを実現する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−９９４４８号公報
【特許文献２】特開２００２−１７５２６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、I3Cにおいてホットジョインが行われるとき、ある特定の条件下において、新たに接続されたスレーブがバスＩＦに参加することができなくなるデッドロックが発生する可能性があった。そのため、新たに接続されたスレーブが、通信を正常に行うことができない状態となることが懸念される。【０００７】
本開示は、このような状況に鑑みてなされたものであり、より確実に通信を行うことができるようにするものである。
【課題を解決するための手段】
【０００８】
本開示の一側面の通信装置は、少なくとも１台以上の他の通信装置との間で信号の送受信を行う送受信部と、バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うエラー回避部とを備える。【０００９】
本開示の一側面の通信方法またはプログラムは、少なくとも１台以上の他の通信装置との間で信号の送受信を行い、バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うステップを含む。【００１０】
本開示の一側面の通信システムは、バスを介した通信の主導権を有する第１の通信装置、および、前記第１の通信装置による制御に従って通信を行う第２の通信装置によって、前記バスを介して通信を行うことができるように構成される通信システムにおいて、前記第１の通信装置および前記第２の通信装置それぞれは、少なくとも１台以上の他の通信装置との間で信号の送受信を行う送受信部を備え、前記第１の通信装置および前記第２の通信装置うち少なくとも一方が、前記第１の通信装置が少なくとも前記バスに接続されて通信システムが既に稼働している状態で、前記通信システムに前記第２の通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うエラー回避部を備える。【００１１】
本開示の一側面においては、少なくとも１台以上の他の通信装置との間で信号の送受信が行われ、バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理が行われる。
【発明の効果】
【００１２】
本開示の一側面によれば、より確実に通信を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】バスＩＦおよびホットジョインについて説明する図である。
【図２】ホットジョイン要求の流れについて説明する図である。
【図３】本技術を適用したバスＩＦの第１の実施の形態の構成例を示すブロック図である。
【図４】ホットジョイン要求について説明する図である。
【図５】I3Cメインマスタが実行する処理を説明するフローチャートである。
【図６】I3Cスレーブがホットジョインを行う際に実行する処理を説明するフローチャートである。
【図７】本技術を適用したバスＩＦの第２の実施の形態の構成例を示すブロック図である。
【図８】ＨＪ要求エラーの検出について説明する図である。
【図９】ホットジョイン要求に続いて伝送される信号の一例を示す図である。
【図１０】本技術を適用したバスＩＦの第３の実施の形態の構成例を示すブロック図である。
【図１１】I3Cメインマスタの実装例を示す図である。
【図１２】I3Cスレーブの実装例を示す図である。
【図１３】図１１のI3Cメインマスタが実行する処理を説明するフローチャートである。
【図１４】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１５】
＜バスＩＦおよびホットジョインについて＞
まず、図１を参照して、I3C規格に準じて構成されるバスＩＦ、および、I3Cスレーブのホットジョインについて説明する。
【００１６】
図１に示すバスＩＦ１１は、I3Cメインマスタ１２、I3Cセカンダリマスタ１３−１および１３−２、I3Cスレーブ１４−１乃至１４−３、並びに、I2Cスレーブ１５−１および１５−２が、データ信号線１６−１およびクロック信号線１６−２を介して接続されて構成される。そして、図１では、I3Cスレーブ１４−３が、バスＩＦ１１にホットジョインされる例が示されている。
【００１７】
I3Cメインマスタ１２は、バスＩＦ１１における通信の主導権を有するデバイスであり、データ信号線１６−１およびクロック信号線１６−２を介して、バスＩＦ１１に接続される他のデバイスと通信を行うことができる。
【００１８】
I3Cセカンダリマスタ１３−１および１３−２は、I3Cメインマスタ１２に替わって、バスＩＦ１１における通信の主導権を有することができる機能を備えたデバイスであり、I3Cメインマスタ１２による制御に従って通信が行われているときにはI3Cスレーブ１４と同様の動作を行う。なお、以下適宜、I3Cセカンダリマスタ１３−１および１３−２を区別する必要がない場合、単に、I3Cセカンダリマスタ１３と称する。
【００１９】
I3Cスレーブ１４−１乃至１４−３は、I3Cメインマスタ１２による制御に従って通信を行うデバイスであり、データ信号線１６−１およびクロック信号線１６−２を介して、I3Cメインマスタ１２と通信を行うことができる。なお、以下適宜、I3Cスレーブ１４−１乃至１４−３を区別する必要がない場合、単に、I3Cスレーブ１４と称する。
【００２０】
I2Cスレーブ１５−１および１５−２は、I2C規格に準じて通信を行うことができるデバイスであり、I3CがI2Cと互換性を維持していることより、バスＩＦ１１においてI3Cメインマスタ１２による制御に従って通信を行うことができる。なお、以下適宜、I2Cスレーブ１５−１および１５−２を区別する必要がない場合、単に、I2Cスレーブ１５と称する。
【００２１】
データ信号線１６−１は、シリアルデータSDAを伝送する信号線であり、クロック信号線１６−２は、シリアルクロックSCLを伝送する信号線である。
【００２２】
このように、バスＩＦ１１は、I3C規格に準拠したI3Cセカンダリマスタ１３およびI3Cスレーブ１４だけでなく、I2C規格に準拠したI2Cスレーブ１５が混在した構成であっても正常に稼働することができる。
【００２３】
また、I3Cでは、例えば、バスＩＦ１１に接続されている複数のデバイスのうち、使用されていないデバイスについては、電源をオフ状態とすることによって、バスＩＦ１１全体としての低消費電力化を図ることができる。
【００２４】
例えば、図１の上側に示すように、電源がオフ状態とされているI3Cスレーブ１４−３の使用を開始するとき、I3Cスレーブ１４−３以外のデバイスによって稼働している状態のバスＩＦ１１に対して、I3Cスレーブ１４−３がホットジョインされる。即ち、図１の下側に示すように、I3Cスレーブ１４−３の電源がオン状態に切り替えられた後、後述するようなホットジョイン要求が行われることで、I3Cスレーブ１４−３が、バスＩＦ１１に参加することができる。
【００２５】
なお、このようにI3Cスレーブ１４−３の電源をオン／オフさせる他、稼働している状態のバスＩＦ１１に対して、電源がオン状態のI3Cスレーブ１４−３を物理的に接続することによっても、I3Cスレーブ１４−３をホットジョインさせることができる。また、I3Cメインマスタ１２とI3Cスレーブ１４およびI2Cスレーブ１５とによって稼働しているバスＩＦ１１に、追加的にI3Cスレーブ１４がホットジョインされる他、例えば、１台のI3Cメインマスタ１２だけによって稼働しているバスＩＦ１１に、新たに１台のI3Cスレーブ１４がホットジョインされることもある。
【００２６】
次に、図２を参照して、図１のバスＩＦ１１におけるホットジョイン要求の流れについて説明する。
【００２７】
バスＩＦ１１では、ホットジョインに対応したI3Cスレーブ１４が、バスＩＦ１１がアイドル状態であることを認識したときにデータ信号線１６−１の電位をＨレベルからＬレベルに切り替えることによって、ホットジョイン要求を行うと規定することができる。また、I3Cスレーブ１４は、バスアイドルカウンタによって、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が所定期間よりも長く継続されていることを検出することで、バスＩＦ１１がアイドル状態であることを認識することができる。
【００２８】
ここで、図２には、バスＩＦ１１での通信の終了を宣言するストップコンディション（STOP）の検出が、バスアイドルカウンタがカウントを開始するカウント起点の条件として設定されているときにおけるホットジョイン要求の一例が示されている。
【００２９】
図２のＡに示すように、バスＩＦ１１の通信が行われている最中のタイミングｔ１において、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続されると、そのI3Cスレーブ１４は、ストップコンディションが検出されるのを待機する状態となる。そして、バスＩＦ１１に接続されたI3Cスレーブ１４は、ストップコンディションの検出に応じてバスアイドルカウンタを起動してカウントを開始する。
【００３０】
その後、I3Cスレーブ１４は、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルである状態が所定期間より長く、例えば、１ｍｓよりも長く継続することを検出したときに、バスＩＦ１１がアイドル状態であると認識することができる。従って、ホットジョインに対応したI3Cスレーブ１４は、バスＩＦ１１がアイドル状態であると認識した後のタイミングｔ２において、データ信号線１６−１の電位をＨレベルからＬレベルに切り替えることによって、ホットジョイン要求を行うことができる。
【００３１】
一方、I3Cメインマスタ１２は、ホットジョイン要求（または、割り込みの要求）があったことを認識すると、クロック信号線１６−２を介してシリアルクロックSCLの送信を開始し、その後の通信処理を行うことができる。
【００３２】
このように、バスＩＦ１１で通信が行われているときにI3Cスレーブ１４が接続されると、そのI3Cスレーブ１４は、ストップコンディションを検出した後にバスＩＦ１１がアイドル状態であることを認識し、問題なくホットジョイン要求を行うことができる。
【００３３】
ところが、図２のＢに示すように、バスＩＦ１１の通信が行われていないタイミングｔ１において、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続された場合、I3Cメインマスタ１２と他のデバイスとの間で通信が完了しているため、ストップコンディションが発行されることがない。この場合、バスＩＦ１１に接続されたI3Cスレーブ１４は、ストップコンディションが検出されるのを待機し続けるデッドロックとなってしまう。従って、バスＩＦ１１に接続されたにも関わらず、I3Cスレーブ１４は、ホットジョイン要求を行うことができなくなる結果、バスＩＦ１１に参加することができない状態となってしまう。
【００３４】
このように、ストップコンディションの検出が、バスアイドルカウンタのカウント起点の条件として設定されている場合、バスＩＦ１１に接続されたI3Cスレーブ１４がデッドロックしてしまうことが懸念される。そのため、このような状態となることを回避し、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に確実に参加し、その後の通信を正常に行うことができるようにする必要がある。
【００３５】
＜バスＩＦの第１の構成例＞
図３は、本技術を適用したバスＩＦ１１の第１の実施の形態の構成例を示すブロック図である。
【００３６】
図３に示すバスＩＦ１１は、I3Cメインマスタ１２、I3Cスレーブ１４−１および１４−２、並びに、I2Cスレーブ１５が、データ信号線１６−１およびクロック信号線１６−２を介して接続されて構成される。
【００３７】
I3Cメインマスタ１２は、送受信部２１およびエラー回避通信処理部２２を備えて構成される。
【００３８】
送受信部２１は、データ信号線１６−１およびクロック信号線１６−２を介して、I3Cスレーブ１４およびI2Cスレーブ１５と信号の送受信を行う。例えば、送受信部２１は、クロック信号線１６−２を駆動することにより送信するシリアルクロックSCLのタイミングに合わせて、データ信号線１６−１に対する駆動を行う（電位をＨレベルまたはＬレベルに切り替える）ことにより、I3Cスレーブ１４またはI2Cスレーブ１５に信号を送信する。また、送受信部２１は、クロック信号線１６−２のシリアルクロックSCLのタイミングに合わせて、I3Cスレーブ１４またはI2Cスレーブ１５がデータ信号線１６−１に対する駆動を行うことによって、I3Cスレーブ１４またはI2Cスレーブ１５から送信されてくる信号を受信する。なお、クロック信号線１６−２に対する駆動は、常に、マスタ１２側により行われる。
【００３９】
エラー回避通信処理部２２は、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性がある場合、送受信部２１に対して、I2Cスレーブ１５と通信を行う際の通信速度の下限を規定する。これにより、エラー回避通信処理部２２は、後述する図４を参照して説明するように、I3Cメインマスタ１２およびI2Cスレーブ１５の通信中に意図しないホットジョイン要求が行われることに起因した通信エラーが発生することを防止することができる。例えば、上述したように、I3Cスレーブ１４がホットジョインする際に、バスＩＦ１１がアイドル状態であると認識するのに１ｍｓを要する場合、エラー回避通信処理部２２は、I2Cスレーブ１５の通信速度の下限を、例えば、１kHz（Ｈ幅＝0.5ｍＳ）に制限する。つまり、I2Cスレーブ１５が通信に用いるシリアルクロックSCLの周波数に応じてクロック信号線１６−２の電位がＨレベルである時間が、I3Cスレーブ１４がバスＩＦ１１のアイドル状態を認識するのに要する時間より短くなるように制限される。
【００４０】
I3Cスレーブ１４は、送受信部３１およびエラー回避接続処理部３２を備えて構成される。
【００４１】
送受信部３１は、データ信号線１６−１およびクロック信号線１６−２を介して、I3Cメインマスタ１２と信号の送受信を行う。例えば、送受信部３１は、クロック信号線１６−２のシリアルクロックSCLのタイミングに合わせて、I3Cメインマスタ１２がデータ信号線１６−１に対する駆動を行うことによって、I3Cメインマスタ１２から送信されてくる信号を受信する。また、送受信部３１は、クロック信号線１６−２のシリアルクロックSCLのタイミングに合わせて、データ信号線１６−１に対する駆動を行うことによって、I3Cメインマスタ１２に信号を送信する。
【００４２】
エラー回避接続処理部３２は、上述の図２を参照して説明したようなデッドロックの発生を回避して、I3Cスレーブ１４がホットジョインを確実に行うことができるようにするための接続処理を行う。例えば、エラー回避接続処理部３２には、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることの検出が、バスアイドルカウンタのカウント起点の条件として設定されている。
【００４３】
従って、エラー回避接続処理部３２は、データ信号線１６−１およびクロック信号線１６−２の電位を監視し、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることを検出したタイミングでバスアイドルカウンタを起動する。そして、エラー回避接続処理部３２は、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が１ｍｓよりも長く継続することを検出したときに、バスＩＦ１１がアイドル状態であると認識して、ホットジョイン要求を行う。
【００４４】
I2Cスレーブ１５は、送受信部４１を備えて構成され、送受信部４１は、データ信号線１６−１およびクロック信号線１６−２を介して、I3Cメインマスタ１２と信号の送受信を行う。例えば、I2Cでは、I3Cにおける通信よりも低速のシリアルクロックSCLを用いて通信を行うように規定されており、I2Cスレーブ１５は、I3Cスレーブ１４よりも低速で通信を行う。
【００４５】
図４を参照して、図３のバスＩＦ１１におけるホットジョイン要求について説明する。
【００４６】
図３を参照して上述したように、I3Cスレーブ１４のエラー回避接続処理部３２では、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることの検出が、バスアイドルカウンタのカウント起点の条件として設定されている。また、I3Cでは、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が１ｍｓよりも長く継続することを検出したときに、バスＩＦ１１がアイドル状態であると認識して、ホットジョイン要求を行うように規定されている。
【００４７】
例えば、I3Cメインマスタ１２がI3Cスレーブ１４と通信を行っているときには、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態は１ｍｓ未満となっている。そのため、I3Cメインマスタ１２が他のI3Cスレーブ１４と通信を行っているときに、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続されても、バスＩＦ１１がアイドル状態ではないため、ホットジョイン要求は行われない。従って、この場合、I3Cメインマスタ１２が他のI3Cスレーブ１４との通信を終了したタイミングで、バスＩＦ１１に接続されたI3Cスレーブ１４は、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルとなったことを検出し、バスアイドルカウンタを起動することができる。
【００４８】
そして、図４のＡに示すように、バスＩＦ１１の通信が行われていないタイミングｔ１で、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続されたとする。この場合、I3Cスレーブ１４のエラー回避接続処理部３２は、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることを検出して、バスアイドルカウンタを起動する。そして、エラー回避接続処理部３２は、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が１ｍｓよりも長く継続することを検出すると、バスＩＦ１１がアイドル状態であると認識することができる。従って、エラー回避接続処理部３２は、バスＩＦ１１がアイドル状態であると認識した後のタイミングｔ２において、データ信号線１６−１の電位をＨレベルからＬレベルに切り替えることによって、ホットジョイン要求を行うことができる。
【００４９】
このように、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることの検出を、バスアイドルカウンタのカウント起点の条件として設定することで、図２を参照して上述したようなデッドロックの発生を回避することができる。
【００５０】
即ち、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続されるタイミングが、バスＩＦ１１において通信が行われているか否かに関わらず、I3Cスレーブ１４は、デッドロックとなることを回避して確実に、ホットジョインを行うことができる。従って、バスＩＦ１１では、I3Cスレーブ１４がバスＩＦ１１に確実に参加して、その後の通信を正常に行うことができる。
【００５１】
ところで、I2Cでは、I3Cでの通信よりも低速のシリアルクロックSCLで通信が行われるため、例えば、0.1kHz（＝10ｍｓ）などの非常に低速で通信が行われることもある。従って、I3Cメインマスタ１２がI2Cスレーブ１５と通信を行っているときに、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が１ｍｓよりも長く継続することがある。
【００５２】
例えば、図４のＢに示すように、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続されるタイミングｔ１によっては、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が１ｍｓよりも長く継続することがある。そのため、バスＩＦ１１に接続されたI3Cスレーブ１４が、バスＩＦ１１はアイドル状態であると誤認識したタイミングｔ２において、ホットジョイン要求を行ってしまうことがある。しかしながら、タイミングｔ２においてI3Cメインマスタ１２およびI2Cスレーブ１５が通信中であるため、そのような意図しないホットジョイン要求に起因して通信エラーが発生してしまうことが想定される。
【００５３】
そこで、I3Cメインマスタ１２のエラー回避通信処理部２２は、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性がある場合、I2Cスレーブ１５と通信を行う際の通信速度の下限を、例えば、１kHz（Ｈ幅＝0.5ｍＳ）に制限する。これにより、I3Cメインマスタ１２がI2Cスレーブ１５と通信を行っているときに、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が１ｍｓよりも長く継続することを回避することができる。
【００５４】
従って、I3Cメインマスタ１２およびI2Cスレーブ１５の通信中に意図しないホットジョイン要求が行われることがなく、上述したような通信エラーが発生することは回避される。
【００５５】
なお、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性がなければ、I2Cスレーブ１５と通信を行う際の通信速度の下限を制限する必要はない。そこで、I3Cメインマスタ１２のファームウェアには、バスＩＦ１１のシステム設計者が設計を行う際に知っている必要がある設定情報（要件）として、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があるか否かを示す情報が予め書き込まれている。その他、I3Cメインマスタ１２のファームウェアには、バスＩＦ１１に接続されるI3Cの規格に準拠したデバイスの個数や、それらのデバイスのスタティックアドレス、バスＩＦ１１に接続されているI2Cスレーブ１５に関する情報などが、設定情報として書き込まれている。
【００５６】
このように、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があるか否かを示す情報をI3Cメインマスタ１２のファームウェアに書き込むのは、I3Cメインマスタ１２が、その情報を事前に認識することができないためである。例えば、仮に、バスＩＦ１１に接続されるI3Cスレーブ１４の内部のレジスタに、そのI3Cスレーブ１４がホットジョインに対応していることを示すフラグが設定されていたとする。しかしながら、I3Cメインマスタ１２は、そのI3Cスレーブ１４の電源がオン状態となる前に、バスＩＦ１１を介してレジスタの内容を読み出すことができない。即ち、I3Cメインマスタ１２は、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続されるかどうかを、ホットジョインが行われる前に認識することはできない。
【００５７】
従って、上述したように、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があるか否かを示す情報をI3Cメインマスタ１２のファームウェアに予め書き込む必要がある。なお、このようにファームウェアに書き込む他、例えば、I3Cメインマスタ１２に設けられる外部接続端子を利用してピンを設定することで、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があるか否かを認識させることができる。
【００５８】
＜I3CメインマスタおよびI3Cスレーブによる処理＞
【００５９】
図５に示すフローチャートを参照して、I3Cメインマスタ１２が実行する処理について説明する。
【００６０】
例えば、I3Cメインマスタ１２に電源が投入されると処理が開始され、ステップＳ１１において、エラー回避通信処理部２２は、I3Cメインマスタ１２のファームウェアに書き込まれている設定情報を読み出す。
【００６１】
ステップＳ１２において、エラー回避通信処理部２２は、ステップＳ１１で読み出した設定情報に基づいて、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があるか否かを判定する。
【００６２】
ステップＳ１２において、エラー回避通信処理部２２が、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があると判定した場合、処理はステップＳ１３に進む。一方、その可能性がないと判定された場合には、ステップＳ１３の処理はスキップされる。
【００６３】
ステップＳ１３において、エラー回避通信処理部２２は、送受信部２１に対して、I2Cスレーブ１５と通信を行う際の通信速度の下限を規定する。これに従い、送受信部２１は、I2Cスレーブ１５との通信速度の下限を、例えば、１kHz（Ｈ幅＝0.5ｍＳ）程度に制限する。
【００６４】
その後、ステップＳ１４において、I3Cメインマスタ１２は通常の通信処理を実行し、送受信部２１は、I3Cスレーブ１４またはI2Cスレーブ１５と信号の送受信を行う。
【００６５】
ステップＳ１５において、送受信部２１は、ホットジョインに対応したI3Cスレーブ１４によるホットジョイン要求が検出されたか否かを判定する。例えば、バスＩＦ１１がアイドル状態であるときに、データ信号線１６−１の電位がＨレベルからＬレベルに切り替えられた場合、送受信部２１は、ホットジョイン要求が検出されたと判定する。
【００６６】
ステップＳ１５において、送受信部２１が、ホットジョインに対応したI3Cスレーブ１４によるホットジョイン要求が検出されていないと判定した場合、処理はステップＳ１４に戻り、以下同様に、通常の通信処理が継続して行われる。
【００６７】
一方、ステップＳ１５において、送受信部２１が、ホットジョインに対応したI3Cスレーブ１４によるホットジョイン要求が検出されたと判定した場合、処理はステップＳ１６に進む。
【００６８】
ステップＳ１６において、送受信部２１は、ホットジョインを要求したI3Cスレーブ１４との間で、バスＩＦ１１への参加に必要となる各種の処理を行う。その後、処理はステップＳ１４に戻り、以下同様に、通常の通信処理が継続して行われる。
【００６９】
以上のように、I3Cメインマスタ１２は、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性がある場合には、I2Cスレーブ１５との通信速度の下限を制限することができる。これにより、I3Cメインマスタ１２は、I2Cスレーブ１５の通信中に意図しないホットジョイン要求が行われることを回避して、そのようなホットジョイン要求に起因した通信エラーの発生を防止することができる。従って、I3Cメインマスタ１２は、バスＩＦ１１における通信を、より確実に行うことができる。
【００７０】
図６に示すフローチャートを参照して、I3Cスレーブ１４がホットジョインを行う際に実行する処理について説明する。
【００７１】
例えば、バスＩＦ１１に接続されたI3Cスレーブ１４に電源が投入されると処理が開始され、ステップＳ２１において、エラー回避接続処理部３２は、データ信号線１６−１およびクロック信号線１６−２の電位を監視する。
【００７２】
ステップＳ２２において、エラー回避接続処理部３２は、ステップＳ２１における電位の監視結果に基づいて、バスアイドルカウンタのカウント起点の条件が検出されたか否かを判定する。例えば、エラー回避接続処理部３２は、上述の図３を参照して説明したように、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることを検出したとき、バスアイドルカウンタのカウント起点の条件が検出されたと判定する。
【００７３】
ステップＳ２２において、エラー回避接続処理部３２が、バスアイドルカウンタのカウント起点の条件が検出されていないと判定した場合、処理はステップＳ２１に戻り、データ信号線１６−１およびクロック信号線１６−２の電位の監視が継続して行われる。
【００７４】
一方、ステップＳ２２において、エラー回避接続処理部３２が、バスアイドルカウンタのカウント起点の条件が検出されたと判定した場合、エラー回避接続処理部３２はバスアイドルカウンタを起動してカウントを開始させて、処理はステップＳ２３に進む。
【００７５】
ステップＳ２３において、エラー回避接続処理部３２は、バスＩＦ１１がアイドル状態であることが確認されたか否かを判定する。例えば、バスアイドルカウンタは、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態を維持している間だけカウントを継続する。従って、エラー回避接続処理部３２は、バスアイドルカウンタによるカウントが１ｍｓを超えたとき、バスＩＦ１１がアイドル状態であると確認することができる。
【００７６】
ステップＳ２３において、エラー回避接続処理部３２が、バスＩＦ１１がアイドル状態であることが確認されていないと判定した場合、処理はステップＳ２１に戻る。例えば、バスアイドルカウンタによるカウントが１ｍｓ未満のうちにデータ信号線１６−１またはクロック信号線１６−２の電位がＬレベルになった場合、バスＩＦ１１がアイドル状態であることが確認されていないと判定される。つまり、この場合、バスＩＦ１１はアイドル状態ではないため、ホットジョイン要求が行われず、処理はステップＳ２１に戻って、データ信号線１６−１およびクロック信号線１６−２の電位の監視が継続して行われる。
【００７７】
一方、ステップＳ２３において、エラー回避接続処理部３２が、バスＩＦ１１がアイドル状態であることが確認されたと判定した場合、処理はステップＳ２４に進み、エラー回避接続処理部３２は、送受信部３１に対してホットジョイン要求を行うように指示する。これに応じ、送受信部３１は、データ信号線１６−１の電位をＨレベルからＬレベルに切り替えることにより、ホットジョイン要求を行う。
【００７８】
ステップＳ２４の処理後、I3Cスレーブ１４がホットジョインを行う際に実行する処理は終了される。その後、例えば、上述した図５のステップＳ１６において、I3Cメインマスタ１２との間で、バスＩＦ１１への参加に必要となる各種の処理が行われ、I3Cスレーブ１４は、バスＩＦ１１に参加することができる。
【００７９】
以上のように、I3Cスレーブ１４は、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることの検出を、バスアイドルカウンタのカウント起点の条件として、バスＩＦ１１がアイドル状態であるか否かを確認することができる。これにより、バスＩＦ１１に接続されたI3Cスレーブ１４が、バスＩＦ１１がアイドル状態であるか否かの確認を開始することができずに、バスＩＦ１１に参加することができなくなることを回避することができる。従って、バスＩＦ１１に接続されたI3Cスレーブ１４は、ホットジョイン要求を確実に行うことができ、バスＩＦ１１に参加して通信を行うことができる。
【００８０】
＜バスＩＦの第２の構成例＞
図７は、本技術を適用したバスＩＦ１１の第２の実施の形態の構成例を示すブロック図である。
【００８１】
図７に示すバスＩＦ１１Ａは、I3Cメインマスタ１２Ａ、および、I3Cスレーブ１４−１乃至１４−３が、データ信号線１６−１およびクロック信号線１６−２を介して接続されて構成されている。なお、バスＩＦ１１Ａにおいて、図３のバスＩＦ１１と共通する構成については、同一の符号を付し、その詳細な説明は省略する。
【００８２】
即ち、バスＩＦ１１Ａは、I2Cスレーブ１５の共存が禁止されており、I2Cスレーブ１５が接続されない構成となっている点で、図３を参照して説明したバスＩＦ１１と異なる構成となっている。
【００８３】
上述したように、図３のバスＩＦ１１では、I2Cスレーブ１５の共存が許可されていることより、I3Cメインマスタ１２およびI2Cスレーブ１５の通信中に意図しないホットジョイン要求が行われることがあり、これによって通信エラーが発生することがあった。そのため、図３のバスＩＦ１１では、I3Cメインマスタ１２がI2Cスレーブ１５と通信を行う際の通信速度の下限を制限して、通信エラーの発生を回避する必要があった。
【００８４】
これに対し、バスＩＦ１１Ａでは、I2Cスレーブ１５が接続されない構成となっているため、意図しないホットジョイン要求が行われることもない。従って、I3Cメインマスタ１２Ａは、送受信部２１を備えるだけでよく、図３のエラー回避通信処理部２２を備える必要がない構成となっている。
【００８５】
また、バスＩＦ１１ＡのI3Cスレーブ１４は、図３のバスＩＦ１１のI3Cスレーブ１４と同様に、送受信部３１およびエラー回避接続処理部３２を備えて構成され、デッドロックが発生することなくホットジョインを行うことができる。即ち、I3Cスレーブ１４のエラー回避接続処理部３２は、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることを検出したとき、バスアイドルカウンタのカウントを開始させ、バスＩＦ１１がアイドル状態であるか否かを確認する。つまり、I3Cスレーブ１４は、上述の図５に示したフローチャートと同様の処理を行うことができる。
【００８６】
以上のように、バスＩＦ１１Ａは、I2Cスレーブ１５の共存が禁止された構成とすることで、意図しないホットジョイン要求に起因した通信エラーが発生することがなく、バスＩＦ１１Ａに接続されるI3Cスレーブ１４は、ホットジョインを確実に行うことができる。従って、バスＩＦ１１Ａでは、ホットジョインされたI3Cスレーブ１４は確実に通信を行うことができる。
【００８７】
ところで、I2Cスレーブ１５の共存が禁止されているにも拘らず、バスＩＦ１１Ａに対してI2Cスレーブ１５が接続されてしまうことについて対策する必要がある。
【００８８】
例えば、I3Cメインマスタ１２Ａが、禁止事項に反して接続されているI2Cスレーブ１５と通信を行っているときに、I3Cスレーブ１４がホットジョイン要求を行うことによって通信エラー（以下適宜、ＨＪ要求エラーと称する）が発生する。但し、伝播遅延が発生するのに伴って、I3Cメインマスタ１２ＡがＨＪ要求エラーを検出することができないこともある。
【００８９】
図８を参照して、I3Cメインマスタ１２ＡがI2Cスレーブ１５と0.1kHz（＝10ｍｓ）の通信速度で通信を行っているときに、ＨＪ要求エラーが発生したときの信号について説明する。
【００９０】
図８のＡには、I3Cメインマスタ１２Ａが、ＨＪ要求エラーを検出することができる場合における信号の波形が示されており、図８のＢには、I3Cメインマスタ１２Ａが、ＨＪ要求エラーを検出することができない場合における信号の波形が示されている。また、図８のＡおよび図８のＢの上側には、I3Cメインマスタ１２Ａの出力端でのシリアルクロックSCLm、および、I3Cメインマスタ１２Ａの出力端でのシリアルデータSDAmが示されている。同様に、図８のＡおよび図８のＢの下側には、I3Cスレーブ１４の出力端でのシリアルクロックSCLs、および、I3Cスレーブ１４の出力端でのシリアルデータSDAsが示されている。
【００９１】
図８のＡに示すように、I3Cメインマスタ１２ＡがシリアルクロックSCLmをＨレベルからＬレベルに駆動したとき、伝播遅延に応じて遅延した後、シリアルクロックSCLsが、ＨレベルからＬレベルに切り替えられる。その後、シリアルクロックSCLsおよびシリアルデータSDAsがＨレベルであるときに、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１Ａに接続されると、そのI3Cスレーブ１４は、バスアイドルカウンタを起動する。そして、シリアルクロックSCLsおよびシリアルデータSDAsがＨレベルを維持したまま１ｍｓが経過すると、I3Cスレーブ１４は、シリアルクロックSCLsをＨレベルからＬレベルに駆動してホットジョイン要求を行う。
【００９２】
このとき、図８のＡに示すように、伝播遅延に応じてシリアルクロックSCLmがＨレベルからＬレベルに切り替えられるまでのタイミングが、I3Cメインマスタ１２ＡがシリアルクロックSCLmをＨレベルからＬレベルに駆動するタイミングよりも早ければ、I3Cメインマスタ１２Ａは、ＨＪ要求エラーを検出することができる。従って、この場合、I3Cメインマスタ１２Ａは、I2Cスレーブ１５との通信で使用する通信速度に従ってシリアルクロックSCLmをＨレベルからＬレベルに駆動するよりも前に、I2Cスレーブ１５との通信で使用する通信速度のシリアルクロックSCLの送信を停止する。そして、I3Cメインマスタ１２Ａは、I3Cスレーブ１４との通信で使用する通信速度のシリアルクロックSCLの送信に切り替えて、I3Cスレーブ１４と通信を行うことができる。
【００９３】
一方、図８のＢに示すように、伝播遅延に応じてシリアルクロックSCLmがＨレベルからＬレベルに切り替えられるまでのタイミングが、I3Cメインマスタ１２ＡがシリアルクロックSCLmをＨレベルからＬレベルに駆動するタイミングよりも遅ければ、I3Cメインマスタ１２Ａは、ＨＪ要求エラーを検出することができない。つまり、図８のＢにおいて白抜きの矢印で示すように、ホットジョイン要求を行ってから、I3Cメインマスタ１２Ａの駆動に従ってシリアルクロックSCLsがＨレベルからＬレベルに切り替えられるまでの間隔が短い場合、ＨＪ要求エラーを検出することは困難である。従って、この場合、I3Cメインマスタ１２Ａは、I3Cスレーブ１４と通信を行うことはできない。
【００９４】
このようにＨＪ要求エラーが発生する事態に対して、I3Cメインマスタ１２ＡまたはI2Cスレーブ１５は、次に示すような第１乃至第４の対策を行うことができる。
【００９５】
第１の対策では、I3Cメインマスタ１２Ａは、ＨＪ要求エラーを検出することができた場合、ホットジョインを要求してきたI3Cスレーブ１４を優先して、I2Cスレーブ１５との通信を中断する。そして、I3Cメインマスタ１２Ａは、I3Cの通信で使用する通信速度のシリアルクロックSCLを送信して、I3Cスレーブ１４がバスＩＦ１１Ａに参加するのに必要な処理を行う。その後、I3Cメインマスタ１２Ａは、中断する前と同じ通信速度でI2Cスレーブ１５との通信を再開する。なお、第１の対策では、I3Cメインマスタ１２Ａが、再度、ＨＪ要求エラーを検出する可能性がある。このため、I3Cメインマスタ１２Ａは、ＨＪ要求エラーを検出するたびに、同様の処理を行う必要がある。
【００９６】
第２の対策では、I3Cメインマスタ１２Ａは、ＨＪ要求エラーを検出することができた場合、ホットジョインを要求してきたI3Cスレーブ１４を優先して、I2Cスレーブ１５との通信を中断する。そして、I3Cメインマスタ１２Ａは、I3Cの通信で使用する通信速度のシリアルクロックSCLを送信して、I3Cスレーブ１４がバスＩＦ１１Ａに参加するのに必要な処理を行う。その後、I3Cメインマスタ１２Ａは、ＨＪ要求エラーが発生しない程度に、通信を中断する前よりも通信速度を上げて、例えば、シリアルクロックSCLを0.1kHz以上にして、I2Cスレーブ１５との通信を再開する。
【００９７】
第３の対策では、I3Cメインマスタ１２Ａは、ＨＪ要求エラーを検出することができた場合、ホットジョインを要求してきたI3Cスレーブ１４を優先して、I2Cスレーブ１５との通信を中断する。そして、I3Cメインマスタ１２Ａは、ホットジョインに対応しているI3Cスレーブ１４が以降、ホットジョインを要求しないように指示するコモンコマンドコード（DISEC CCC）を一斉に送信する。これにより、バスＩＦ１１Ａに接続されている各I3Cスレーブ１４では、ホットジョイン要求が無効（Hot-Join Event bitがdisable）に設定される。その後、I3Cメインマスタ１２Ａは、中断したI2Cスレーブ１５との通信を再開する。
【００９８】
第４の対策では、I3Cメインマスタ１２Ａは、ＨＪ要求エラーを検出することができなかった場合、I2Cスレーブ１５との通信を継続して行うことになる。このため、I3Cスレーブ１４が、I3Cメインマスタ１２ＡにおいてＨＪ要求エラーを検出することができなかったことを認識して、再度、ホットジョイン要求を行うことができるようにする必要がある。
【００９９】
ここで、図９に示すホットジョイン要求に続いて伝送される信号を参照して、第４の対策について説明する。
【０１００】
例えば、I3Cスレーブ１４は、ホットジョイン要求（Ｓ）を送信するのに続いて、ホットジョイン予約アドレス（0ｘ02）を送信する。なお、ホットジョイン要求、即ち、シリアルデータSDAをＨレベルからＬレベルに切り替える駆動は、スタートコンディション（START）の発行と同様に駆動される。
【０１０１】
一方、I3Cでは、ホットジョイン要求（Ｓ）を受信し、続いてホットジョイン予約アドレス（0ｘ02）を受信したI3Cメインマスタ１２Ａは、以下の３つの動作のうちの１つを選択して行うように規定されている。
【０１０２】
第１の動作として、I3Cメインマスタ１２Ａは、信号の受信を正常に行うことができなかったことを示すNACK（Negative Acknowledgement）を送信する。そして、NACKを受信したI3Cスレーブ１４は、ホットジョイン要求をリトライすることができる。
【０１０３】
第２の動作として、I3Cメインマスタ１２Ａは、一旦、信号の受信を正常に行うことができたことを示すACK（Acknowledgement）を送信し、続いて、ホットジョインを要求しないように指示するコモンコマンドコード（DISEC CCC）を送信する。これにより、上述した第３の対策と同様に、I3Cスレーブ１４では、ホットジョイン要求が無効（Hot-Join Event bitがdisable）に設定される。
【０１０４】
第３の動作として、I3Cメインマスタ１２Ａは、ACKを送信した後、図９に示すように、ダイナミックデバイス割り当てを入力するENTDAA（Enter Dynamic Device Assignment）を送信して、アドレスをアサインする。
【０１０５】
このように、I3C では、ホットジョイン要求に対して、I3Cメインマスタ１２Ａが、第１乃至第３の動作を行うことが定義されている。従って、I3Cスレーブ１４は、これら以外の動作が行われたことを検出した場合、ホットジョイン要求に対して定義されている動作とは異なる動作が行われたことによるエラー（以下、ＨＪフォーマットエラーと称する）を認識することができる。
【０１０６】
ここで、I3Cメインマスタ１２ＡがＨＪ要求エラーを検出することができなかった場合、I3Cメインマスタ１２Ａは、I2Cスレーブ１５との通信を継続して行うことになる。一方、ホットジョインを要求したI3Cスレーブ１４は、ホットジョイン予約アドレス（0ｘ02）などの送信を行って、その後の通信を続けようとする。このように、I3Cメインマスタ１２ＡがI2Cスレーブ１５との通信を継続して行う場合、ホットジョインを要求したI3Cスレーブ１４は、上述した第１乃至第３の動作がいずれも行われないのに基づいて、ＨＪフォーマットエラーを検出することができる。
【０１０７】
従って、第４の対策では、I3Cスレーブ１４が、ＨＪフォーマットエラーを検出した後、ホットジョイン要求を行う処理を一旦停止し、十分な時間が経過した後に、再度、ホットジョイン要求を行う。これにより、I3Cスレーブ１４がデッドロックすることを回避することができる。
【０１０８】
なお、第４の対策における他の方法として、I3Cスレーブ１４がモニタリングエラー（既存のＳ６エラー）を用いる方法を採用してもよい。モニタリングエラーとは、原則として、I3Cスレーブ１４が自ら送信した値と、バスＩＦ１１Ａ上に送信したデータとが不一致であることを示すエラーである。
【０１０９】
例えば、I3Cスレーブ１４がホットジョイン要求を送信する一方、I3Cメインマスタ１２ＡがI2Cスレーブ１５に信号を送信する場合、バスＩＦ１１Ａ上で信号が衝突することによって、どちらの信号にもモニタリングエラーが検出される。従って、I3Cスレーブ１４は、モニタリングエラーを検出した後、ホットジョイン要求を行う処理を一旦停止し、十分な時間が経過した後に、再度、ホットジョイン要求を行う。これにより、I3Cスレーブ１４がデッドロックすることを回避することができる。
【０１１０】
以上のように、I2Cスレーブ１５の共存が禁止されたバスＩＦ１１Ａでは、上述したような第１乃至第４の対策を行うように規定する。これにより、禁止事項に反してバスＩＦ１１ＡにI2Cスレーブ１５が接続され、ＨＪ要求エラーが発生したとしても、I3Cメインマスタ１２Ａは、バスＩＦ１１Ａに接続されたI3Cスレーブ１４によるホットジョイン要求に対応することができる。従って、ホットジョインを要求するI3Cスレーブ１４がバスＩＦ１１Ａに確実に参加することができ、その後の通信を正常に行うことができる。
【０１１１】
＜バスＩＦの第３の構成例＞
図１０は、本技術を適用したバスＩＦ１１の第３の実施の形態の構成例を示すブロック図である。
【０１１２】
図１０に示すバスＩＦ１１Ｂは、I3Cメインマスタ１２Ｂ、I3Cスレーブ１４Ｂ−１および１４Ｂ−２、並びに、I2Cスレーブ１５が、データ信号線１６−１およびクロック信号線１６−２を介して接続されて構成される。なお、バスＩＦ１１Ｂにおいて、図３のバスＩＦ１１と共通する構成については、同一の符号を付し、その詳細な説明は省略する。
【０１１３】
即ち、バスＩＦ１１Ｂでは、I3Cメインマスタ１２Ｂが、図３のエラー回避通信処理部２２とは異なる処理を行うエラー回避通信処理部２２Ｂを備えて構成されるとともに、I3Cスレーブ１４Ｂが、図３のエラー回避接続処理部３２を備えずに構成される点で、図３のバスＩＦ１１と異なる構成となっている。
【０１１４】
また、I3Cスレーブ１４Ｂでは、図２を参照して説明したのと同様に、ストップコンディションを検出することが、バスアイドルカウンタがカウントを開始するカウント起点の条件として設定されている。
【０１１５】
そして、I3Cメインマスタ１２Ｂのエラー回避通信処理部２２Ｂは、I3Cスレーブ１４Ｂのデッドロックを回避するために、送受信部２１に対して、ストップコンディションを含む任意のポーリング信号を定期的に発行するように指示する処理を行う。この指示に従って、送受信部２１は、例えば、バスＩＦ１１Ｂのシステム全体に対する制御に悪影響を与えることのないポーリング信号を、定期的（例えば、10ｍｓごと）に送信するポーリングを行う。
【０１１６】
例えば、ポーリング信号として、デバイスの状態の取得を指示するコモンコマンドコードであるゲットステータス（GETSTATUS）を使用することができる。その他、４８ビットのＰＩＤ（Provisional ID）と称される情報（例えば、デバイスの製造メーカ名などが記述された固定値）の取得を指示するゲットＰＩＤ（GETPID）や、デバイスのBCR（Bus Characteristics Register）の取得を指示するゲットＢＣＲ（GETBCR）などを使用してもよい。
【０１１７】
従って、上述の図２のＢを参照して説明したように、バスＩＦ１１Ｂの通信が行われていないタイミングにおいてI3Cスレーブ１４が接続されたとしても、ポーリング信号が定期的に送信されることによって、I3Cスレーブ１４Ｂがデッドロックすることは回避される。即ち、バスＩＦ１１Ｂに接続されたI3Cスレーブ１４Ｂは、ポーリング信号に含まれているストップコンディションを検出することで、バスアイドルカウンタを起動することができ、その後、バスＩＦ１１Ｂがアイドル状態であるか否かを判定することができる。
【０１１８】
以上のように、バスＩＦ１１Ｂでは、I3Cメインマスタ１２Ｂが、ストップコンディションを含む任意のポーリング信号を定期的に発行することによって、バスＩＦ１１Ｂに接続されたI3Cスレーブ１４Ｂは、ホットジョイン要求を確実に行うことができる。これにより、ホットジョインに対応したI3Cスレーブ１４Ｂは、バスＩＦ１１に参加して確実に通信を行うことができる。
【０１１９】
＜I3CメインマスタおよびI3Cスレーブの実装例＞
図１１は、I3Cメインマスタ１２の実装例を示すブロック図である。
【０１２０】
図１１に示すように、I3Cメインマスタ１２は、第１のバスアイドルカウンタ５１、第２のバスアイドルカウンタ５２、選択部５３、ＦＳＭ（Finite State Machine）５４、レジスタ５５、速度判定部５６、および定期送信用タイマ５７を備えて構成される。なお、レジスタ５５および速度判定部５６は、ハードウエアとして実装する必要はない。
【０１２１】
ここで、図１１に示すI3Cメインマスタ１２は、図１のI3Cセカンダリマスタ１３と同様に、ホットジョインに対応したI3Cスレーブ１４としても動作することができるように構成されている。従って、図１１に示されている第１のバスアイドルカウンタ５１、第２のバスアイドルカウンタ５２、および選択部５３は、ホットジョインに対応したI3Cスレーブ１４として動作する場合にのみ駆動する。このことより、第１のバスアイドルカウンタ５１、第２のバスアイドルカウンタ５２、および選択部５３については、図１２に示すI3Cスレーブ１４を参照して後述する。
【０１２２】
ＦＳＭ５４には、シリアルデータSDAを伝送するデータ信号線１６−１、および、シリアルクロックSCLを伝送するクロック信号線１６−２が接続されている。例えば、ＦＳＭ５４は、後述する図１２に示すI3Cスレーブ１４のＦＳＭ５４との間で、データ信号線１６−１およびクロック信号線１６−２を駆動することによる信号の送信および受信を行う。
【０１２３】
レジスタ５５には、ＦＳＭ５４が通信を行う際に用いる各種の情報が記録されており、例えば、図４を参照して上述したようなI2Cスレーブ１５と通信を行う際の通信速度の下限を指示する速度指示値が記録されている。
【０１２４】
速度判定部５６は、レジスタ５５から速度指示値を読み出し、速度指示値により指示されている通信速度の下限を下回らないようにＦＳＭ５４に対する設定を行う。そして、速度判定部５６は、I3Cメインマスタ１２がI2Cスレーブ１５と通信を行う際に、その通信速度が下限を下回ったか否かを判定する。例えば、速度判定部５６は、I2Cスレーブ１５との通信速度が下限を下回ったと判定した場合には、通信速度が下限を下回るエラーが発生したことを示す情報をレジスタ５５に記録する。
【０１２５】
定期送信用タイマ５７は、図１０を参照して上述したようなストップコンディションを含む任意のポーリング信号を定期的に送信する際に、その定期的な間隔を計時し、ポーリング信号の送信を行うタイミングをＦＳＭ５４に対して指示する。例えば、I3Cメインマスタ１２が、ストップコンディションを含む任意のポーリング信号を定期的に送信するように運用される場合、ＦＳＭ５４は、定期的な間隔の計時を有効にすることを指示する信号（stp_timer_en）を、定期送信用タイマ５７に供給する。これに応じて、定期送信用タイマ５７は、ポーリング信号を送信するタイミングになると、ポーリング信号の送信を指示する信号（stp_send）を、ＦＳＭ５４に供給する。
【０１２６】
このようにI3Cメインマスタ１２を実装することができ、I3Cメインマスタ１２は、上述したようなデッドロックまたは通信エラーが発生することを回避するように、バスＩＦ１１による通信処理を制御することができる。
【０１２７】
図１２は、I3Cスレーブ１４の実装例を示すブロック図である。
【０１２８】
図１２に示すように、I3Cスレーブ１４は、第１のバスアイドルカウンタ５１、第２のバスアイドルカウンタ５２、選択部５３、およびＦＳＭ５４を備えて構成される。
【０１２９】
第１のバスアイドルカウンタ５１および第２のバスアイドルカウンタ５２は、それぞれデータ信号線１６−１およびクロック信号線１６−２に接続されており、バスＩＦ１１がアイドル状態であることを確認するためのカウントを行う。
【０１３０】
例えば、第１のバスアイドルカウンタ５１には、図２を参照して説明したように、ストップコンディションを検出したときにカウントを開始するようにカウント起点の条件が設定されている。従って、第１のバスアイドルカウンタ５１は、ストップコンディションを検出したタイミングでカウントを開始し、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が継続している時間が、例えば、１ｍｓとなったときに、その旨を示す信号を出力する。例えば、第１のバスアイドルカウンタ５１は、通常の通信が終了したときに発行されるストップコンディション、または、図１１の定期送信用タイマ５７によって定期的に送信されるポーリング信号に含まれるストップコンディションを検出することができる。
【０１３１】
また、第２のバスアイドルカウンタ５２には、図４を参照して説明したように、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることを検出したときにカウントを開始するようにカウント起点の条件が設定されている。従って、第２のバスアイドルカウンタ５２は、データ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることを検出したタイミングでカウントを開始し、データ信号線１６−１およびクロック信号線１６−２がＨレベルである状態が継続している時間が、例えば、１ｍｓとなったときに、その旨を示す信号を出力する。
【０１３２】
選択部５３は、外部端子を介して行われる設定（例えば、ピンを利用した設定）に従って、第１のバスアイドルカウンタ５１および第２のバスアイドルカウンタ５２のうち、いずれか一方の出力を選択してＦＳＭ５４に供給する。なお、選択部５３に対する選択の設定は、外部端子の他、例えば、不揮発性メモリを利用して行うことができ、レジスタによる設定は不可となる。これは、例えば、I3Cメインマスタ１２がレジスタにアクセスする前に、選択部５３に対する選択の設定を行う必要があるためである。
【０１３３】
ＦＳＭ５４は、上述した図１１のI3Cメインマスタ１２のＦＳＭ５４との間で、データ信号線１６−１およびクロック信号線１６−２を駆動することによる信号の送信および受信を行う。そして、ＦＳＭ５４は、I3Cスレーブ１４がバスＩＦ１１に接続され、第１のバスアイドルカウンタ５１または第２のバスアイドルカウンタ５２から出力される信号が、選択部５３を介して供給されると、データ信号線１６−１の電位をＨレベルからＬレベルに切り替えてホットジョイン要求を行う。
【０１３４】
このようにI3Cスレーブ１４を実装することができ、第１のバスアイドルカウンタ５１によりストップコンディションを検出したとき、または、第２のバスアイドルカウンタ５２によりデータ信号線１６−１およびクロック信号線１６−２の電位がＨレベルであることを検出したとき、いずれかに対応して、ホットジョイン要求を行うことができる。なお、バスＩＦ１１の構成が、どちらか一方に決定されている場合、I3Cスレーブ１４は、その決定に従って、第１のバスアイドルカウンタ５１および第２のバスアイドルカウンタ５２の一方を備える構成としてもよい。
【０１３５】
例えば、I3Cスレーブ１４が第１のバスアイドルカウンタ５１を備えて構成されるときには、上述した図１０のI3Cスレーブ１４Ｂとして機能する。一方、I3Cスレーブ１４が第２のバスアイドルカウンタ５２を備えて構成されるときには、上述した図３または図７のI3Cスレーブ１４として機能する。
【０１３６】
図１３を参照して、図１１のI3Cメインマスタ１２が実行する処理について説明する。
【０１３７】
例えば、I3Cメインマスタ１２に電源が投入されると処理が開始され、ステップＳ３１において、I3Cメインマスタ１２は、ファームウェアに書き込まれている設定情報を読み出す。
【０１３８】
ステップＳ３２において、I3Cメインマスタ１２のＦＳＭ５４は、ステップＳ３１で読み出した設定情報に基づいて、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があるか否かを判定する。
【０１３９】
ステップＳ３２において、I3Cメインマスタ１２のＦＳＭ５４が、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性がないと判定した場合、処理はステップＳ３７に進んで、通常の通信処理が実行される。即ち、この場合、I3Cスレーブ１４のホットジョインに伴うデッドロックまたは通信エラーが発生することなく通信処理が行われる。
【０１４０】
一方、ステップＳ３２において、I3Cメインマスタ１２のＦＳＭ５４が、ホットジョインに対応したI3Cスレーブ１４がバスＩＦ１１に接続される可能性があると判定した場合、処理はステップＳ３３に進む。
【０１４１】
ステップＳ３３において、I3Cメインマスタ１２のＦＳＭ５４は、バスＩＦ１１に接続される可能性があるホットジョインに対応したI3Cスレーブ１４は、図１２に示した第２のバスアイドルカウンタ５２を備えているか否かを判定する。なお、この判定を行うために必要な設定情報も、システム設計者によりI3Cメインマスタ１２のファームウェアに予め書き込まれている。
【０１４２】
ステップＳ３３において、バスＩＦ１１に接続される可能性があるホットジョインに対応したI3Cスレーブ１４は、図１２に示した第２のバスアイドルカウンタ５２を備えていないと判定された場合、処理はステップＳ３４に進む。即ち、この場合、そのI3Cスレーブ１４は、第１のバスアイドルカウンタ５１によるストップコンディションの検出をカウント起点の条件としている。従って、バスＩＦ１１に接続される可能性があるI3Cスレーブ１４は、上述の図１０に示されているI3Cスレーブ１４Ｂのようにエラー回避接続処理部３２を備えていないことが想定されるため、デッドロックの発生を回避させる必要がある。
【０１４３】
ステップＳ３４において、I3Cメインマスタ１２のＦＳＭ５４は、ストップコンディションを含む任意のポーリング信号を定期的に送信するように設定を行う。例えば、I3Cメインマスタ１２のＦＳＭ５４は、定期的な間隔の計時を有効にすることを指示する信号（stp_timer_en）を、定期送信用タイマ５７に供給する。その後、処理はステップＳ３７に進んで、この場合、通常の通信処理において定期的にポーリング信号の送信が行われる。
【０１４４】
一方、ステップＳ３３において、バスＩＦ１１に接続される可能性があるホットジョインに対応したI3Cスレーブ１４は、図１２に示した第２のバスアイドルカウンタ５２を備えていると判定された場合、処理はステップＳ３５に進む。
【０１４５】
ステップＳ３５において、I3Cメインマスタ１２のＦＳＭ５４は、ステップＳ３１で読み出した設定情報に基づいて、バスＩＦ１１上にI2Cスレーブ１５が接続されているか否かを判定する。
【０１４６】
ステップＳ３５において、I3Cメインマスタ１２のＦＳＭ５４が、バスＩＦ１１上にI2Cスレーブ１５が接続されていないと判定した場合、処理はステップＳ３７に進んで、通常の通信処理が実行される。即ち、この場合、バスＩＦ１１では、図４を参照して上述したような意図しないホットジョイン要求が行われることはなく通信処理を行うことができる。
【０１４７】
一方、ステップＳ３５において、I3Cメインマスタ１２のＦＳＭ５４が、バスＩＦ１１上にI2Cスレーブ１５が接続されていると判定した場合、処理はステップＳ３６に進む。即ち、この場合、バスＩＦ１１では、図２を参照して上述したようなデッドロックの発生を回避させる必要がある。
【０１４８】
ステップＳ３６において、I3Cメインマスタ１２のＦＳＭ５４は、バスＩＦ１１に接続されているI2Cスレーブ１５との通信速度の下限を制限する。例えば、速度判定部５６が、レジスタ５５から速度指示値を読み出してＦＳＭ５４に設定することで、ＦＳＭ５４は、速度指示値による指示に従った通信速度となるように下限を制限することができる。
【０１４９】
ステップＳ３６の処理後、処理はステップＳ３７に進み、I3Cメインマスタ１２のＦＳＭ５４は、ステップＳ３６で設定された通信速度の下限を下回らないように、通常の通信処理を実行する。
【０１５０】
以上のように、I3Cメインマスタ１２は、バスＩＦ１１に接続されているデバイス、または、バスＩＦ１１に接続される可能性のあるデバイスに基づいて、デッドロックや通信エラーなどの発生を回避して、通信処理を確実に実行することができる。即ち、I3Cメインマスタ１２は、ＦＳＭ５４、速度判定部５６、定期送信用タイマ５７により、図３のエラー回避通信処理部２２、または、図１０のエラー回避通信処理部２２Ｂとしての機能を実行することができる。
【０１５１】
なお、本技術は、I3Cの規格に従ったバスＩＦ１１に限定されることはなく、その他の規格に従ったバスＩＦ１１に適用することができる。また、バスＩＦ１１に接続されるデバイスの種類または個数は、例えば、図１に示したような構成例に限定されることはない。
【０１５２】
＜コンピュータの構成例＞
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、単一のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【０１５３】
また、上述した一連の処理（情報処理方法）は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
【０１５４】
図１４は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１５５】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３、およびEEPROM（Electronically Erasable and Programmable Read Only Memory）１０４は、バス１０５により相互に接続されている。バス１０５には、さらに、入出力インタフェース１０６が接続されており、入出力インタフェース１０６が外部に接続される。
【０１５６】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、ROM１０２およびEEPROM１０４に記憶されているプログラムを、バス１０５を介してRAM１０３にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ（CPU１０１）が実行するプログラムは、ROM１０２に予め書き込んでおく他、入出力インタフェース１０５を介して外部からEEPROM１０４にインストールしたり、更新したりすることができる。
【０１５７】
＜構成の組み合わせ例＞
なお、本技術は以下のような構成も取ることができる。
（１）
少なくとも１台以上の他の通信装置との間で信号の送受信を行う送受信部と、
バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うエラー回避部と
を備える通信装置。
（２）
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置による制御に従って通信を行い、前記通信システムに追加的に接続される第２の通信装置であって、
前記送受信部は、前記バスを構成するデータ信号線およびクロック信号線を介して前記他の通信装置との間で信号の送受信を行い、
前記エラー回避部は、前記データ信号線および前記クロック信号線の電位がＨレベルであることを検出したことをカウントの開始条件として、前記データ信号線および前記クロック信号線の電位がＨレベルである状態が所定期間よりも長く継続していることを検出したときに、前記通信システムへの追加的な接続を要求する信号を前記送受信部により送信させる
上記（１）に記載の通信装置。
（３）
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置であって、
前記エラー回避部は、前記第２の通信装置が前記通信システムに追加的に接続される可能性がある場合、前記第２の通信装置の通信における通信速度より低速で通信を行う通信装置である低速通信装置と通信を行う際の通信速度の下限を制限する
上記（２）に記載の通信装置。
（４）
前記第１の通信装置には、前記第２の通信装置が前記通信システムに追加的に接続される可能性があるか否かを示す情報が予め設定されている
上記（３）に記載の通信装置。
（５）
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置であって、
前記エラー回避部は、前記バスでの通信の終了を宣言する終了信号を含む任意のポーリング信号を定期的に前記送受信部に送信させる
上記（１）から（４）までのいずれかに記載の通信装置。
（６）
前記通信装置は、前記バスを介した通信の主導権を有する第１の通信装置であって、
前記送受信部は、前記バスを構成するデータ信号線およびクロック信号線を介して前記他の通信装置との間で信号の送受信を行い、
前記エラー回避部は、
前記通信システムに追加的に接続される第２の通信装置が、前記データ信号線および前記クロック信号線の電位がＨレベルであることを検出したことをカウントの開始としてカウントするカウント部を備えていない場合、前記バスでの通信の終了を宣言する終了信号を含む任意のポーリング信号を定期的に前記送受信部に送信させ、
前記通信システムに追加的に接続される第２の通信装置が、前記データ信号線および前記クロック信号線の電位がＨレベルであることを検出したことをカウントの開始としてカウントするカウント部を備えていて、かつ、前記第２の通信装置の通信における通信速度より低速で通信を行う通信装置である低速通信装置が前記通信システムに接続されている場合、前記低速通信装置と通信を行う際の通信速度の下限を制限する
上記（１）から（５）までのいずれかに記載の通信装置。
（７）
少なくとも１台以上の他の通信装置との間で信号の送受信を行い、
バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行う
ステップを含む通信方法。
（８）
少なくとも１台以上の他の通信装置との間で信号の送受信を行い、
バスを介して通信を行うことができるように構成されている通信システムが既に稼働している状態で、前記通信システムに通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行う
ステップを含む処理をコンピュータに実行させるプログラム。
（９）
バスを介した通信の主導権を有する第１の通信装置、および、前記第１の通信装置による制御に従って通信を行う第２の通信装置によって、前記バスを介して通信を行うことができるように構成される通信システムにおいて、
前記第１の通信装置および前記第２の通信装置それぞれは、少なくとも１台以上の他の通信装置との間で信号の送受信を行う送受信部を備え、
前記第１の通信装置および前記第２の通信装置うち少なくとも一方が、前記第１の通信装置が少なくとも前記バスに接続されて通信システムが既に稼働している状態で、前記通信システムに前記第２の通信装置が追加的に接続される際におけるエラーの発生を回避する処理を行うエラー回避部を備える
通信システム。
【０１５８】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１５９】
１１  バスＩＦ，  １２  I3Cメインマスタ，  １３  I3Cセカンダリマスタ，  １４  I3Cスレーブ，  １５  I2Cスレーブ，  １６−１  データ信号線，  １６−２  クロック信号線，  ２１  送受信部，  ２２  エラー回避通信処理部，  ３１  送受信部，  ３２  エラー回避接続処理部，  ４１  送受信部，  ５１  第１のバスアイドルカウンタ，  ５２  第２のバスアイドルカウンタ，  ５３  選択部，  ５４  ＦＳＭ，  ５５  レジスタ，  ５６  速度判定部，  ５７  定期送信用タイマ
【図１】
2018150868.tif 000003
【図２】
2018150868.tif 000004
【図３】
2018150868.tif 000005
【図４】
2018150868.tif 000006
【図５】
2018150868.tif 000007
【図６】
2018150868.tif 000008
【図７】
2018150868.tif 000009
【図８】
2018150868.tif 000010
【図９】
2018150868.tif 000011
【図１０】
2018150868.tif 000012
【図１１】
2018150868.tif 000013
【図１２】
2018150868.tif 000014
【図１３】
2018150868.tif 000015
【図１４】
2018150868.tif 000016
【国際調査報告】
2018150868.tif 000017
2018150868.tif 000018