(57)【特許請求の範囲】
【請求項１】
少なくとも１つの主プロセッサと１つの従プロセッサとから成る複数のマスタ装置と、
前記マスタ装置とＩ２Ｃバスを共有するスレーブ装置と
を備え、
前記主プロセッサは、
通信相手を指定するスレーブアドレスを前記Ｉ２Ｃバスへ出力する手段
を有し、
前記従プロセッサは、
前記主プロセッサが前記Ｉ２Ｃバスへ出力した通信相手を指定するスレーブアドレスを取得するアドレスデコーダと、
前記アドレスデコーダが取得したスレーブアドレスを保存するデータ保存レジスタと、
前記Ｉ２Ｃバスがフリーズしているか否かを確認する確認手段と、
前記Ｉ２Ｃバスがフリーズしていることを前記確認手段が確認した場合に、前記データ保存レジスタに保存されているスレーブアドレスに基づいて特定されるスレーブ装置に対してリセット信号を送信するリセット信号発生部と
を有し、
前記主プロセッサは、
前記Ｉ２Ｃバスに流れるスレーブアドレスに一致するスレーブアドレスを有するスレーブ装置との間でデータを送受信する手段
を更に有するＩ２Ｃバス通信制御システム。
【請求項２】
少なくとも１つの主プロセッサと１つの従プロセッサとから成り、スレーブ装置とＩ２Ｃバスを共有する複数のマスタ装置の前記主プロセッサが、通信相手を指定するスレーブアドレスを前記Ｉ２Ｃバスへ出力する段階と、
前記従プロセッサが、前記主プロセッサが前記Ｉ２Ｃバスへ出力した通信相手を指定するスレーブアドレスを取得する段階と、
前記従プロセッサが、前記取得されたスレーブアドレスを保存する段階と、
前記従プロセッサが、前記Ｉ２Ｃバスがフリーズしているか否かを確認する段階と、
前記Ｉ２Ｃバスがフリーズしていることが確認された場合に、前記従プロセッサが、前記保存されたスレーブアドレスに基づいて特定されるスレーブ装置に対してリセット信号を送信する段階と、
前記主プロセッサが、前記Ｉ２Ｃバスに流れるスレーブアドレスに一致するスレーブアドレスを有するスレーブ装置との間でデータを送受信する段階と、
を備えるＩ２Ｃバス通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマスタ装置とスレーブ装置とでＩ２Ｃバスを共有するマルチプロセッサシステムにおけるＩ２Ｃバス通信制御システム、及びＩ２Ｃバス通信制御方法に関する。
【背景技術】
【０００２】
Ｉ２Ｃ（ＩＩＣ、Inter-Integrated Circuit）バス通信方式は、二線式双方向バスを用いた通信方式の１つである。Ｉ２Ｃバスは、主に家庭用機器等に広く用いられてきたが、近年では、サーバ製品等にも用いられている。その中には、Ｉ２Ｃバスを共有するマルチプロセッサ構成をとるものも存在する。
【０００３】
Ｉ２Ｃバスの信号線は、２本であり、ＳＤＡ（シリアルデータ）信号線とＳＣＬ（シリアルクロック）信号線とで構成される。Ｉ２Ｃバスに接続される各装置は、マスタ装置とスレーブ装置とに分類され、各装置は、固有のアドレスを持つ。マスタ装置は、アドレス（Ｉ２Ｃスレーブアドレス）を用いて通信相手のスレーブ装置を指定し、マスタ装置とスレーブ装置との間でデータ転送が行われる。
【０００４】
Ｉ２Ｃの仕様として、どの装置も信号を出していない場合には、信号線の値はＨｉｇｈとなり、１つでも装置がＬｏｗ信号を出している場合には、信号線の値はＬｏｗとなる。また、Ｉ２Ｃの仕様として、ＳＣＬ信号線の値がＨｉｇｈのときには、ＳＤＡ信号線の値は変化できない。よって、Ｉ２Ｃ通信中に処理が強制的に中断された場合、タイミングによっては、スレーブ装置がＩ２Ｃバスを使用中の状態で各信号線の値を固定してしまい、他の装置がＩ２Ｃバスを使用できなくなる可能性がある。つまり、Ｉ２Ｃバスフリーズが発生する。
【０００５】
例えば、Ｉ２Ｃバスを共有するマルチプロセッサ構成において、主プロセッサの故障等が発生すると、従プロセッサに切り替わり、従プロセッサがＩ２Ｃバス通信を行うことになる。しかし、主プロセッサがＩ２Ｃ通信中に故障した場合などには、前述したようにＩ２Ｃバスフリーズが発生することがあり、この場合、従プロセッサは、Ｉ２Ｃバスを使用することができない。また、Ｉ２Ｃの仕様により、従プロセッサは、Ｉ２Ｃバスフリーズ原因となっているスレーブ装置を特定することができない。
【０００６】
Ｉ２Ｃバスは、元々、家電等に用いられる簡易インターフェースを想定して発展してきた経緯があり、通信の信頼性や、故障箇所の分解能などは、あまり考慮されていなかった。しかし、近年では、高機能・多機能なスレーブ装置も存在し、スレーブ装置がシステムの重要な機能を担う構成がとられることもある。この場合、Ｉ２Ｃバスフリーズが発生すると、システムに深刻な悪影響を及ぼすことになる。
【０００７】
よって、Ｉ２Ｃバスフリーズから復帰するための技術が所望されている。加えて、Ｉ２Ｃバスフリーズの原因となったスレーブ装置を特定することができれば、復旧作業を対象スレーブ装置のみに限定することができ、より速やかに正常状態に復帰可能となる。つまり、Ｉ２Ｃバスフリーズの影響を極小化することができる。
【０００８】
Ｉ２Ｃバスフリーズから復帰するための対策の例として、特許文献１では、スレーブ装置が間違ったタイミングでＡＣＫを返答し、Ｉ２Ｃバスフリーズが発生したときに、Ｉ２Ｃバス状態検出部がＳＣＬ信号線へパルスを強制的に送出し、バスを開放させる方法が開示されている。しかし、この技術では、Ｉ２Ｃバスフリーズの原因となったスレーブ装置を特定することができない。
【０００９】
また、特許文献２では、スレーブ装置１つ１つに順に所定のコマンドを送り、応答がなかった装置をハングアップしたスレーブ装置として特定する方法が開示されている。しかし、特許文献２では、ハングアップしたスレーブ装置を特定するまでに複数回のコマンド送出、または全スレーブ装置数分のコマンド送出を行うことになる。つまり、Ｉ２Ｃバスウォークが必要である。よって、問題があるスレーブ装置を特定するまでの処理が膨大になるという問題がある。また、所定のコマンドを送るためには、Ｉ２Ｃバスが正常動作している必要がある。つまり、Ｉ２Ｃバスフリーズ時には、この技術を用いることはできない。
【００１０】
また、特許文献３では、Ｉ２Ｃバスと各スレーブ装置の間にそれぞれ異なる抵抗値を持つ駆動抵抗を接続し、スレーブ装置がハングアップした時の電圧を、スレーブ装置毎に違う値にすることで、ハングアップしたスレーブ装置を特定する方法が開示されている。しかし、Ｉ２Ｃバスと各スレーブ装置の間に異なる抵抗値を持つ駆動抵抗を追加するということは、通常のＩ２Ｃ通信を行うときの電圧値も、通信相手のスレーブ装置によってそれぞれ異なるということを示す。つまり、あるスレーブ装置と通信するとき、Ｉ２Ｃバスに接続されている他の各装置に不正な電圧が印加される危険性があり、Ｉ２Ｃバスの動作が不安定になる恐れがある。
【００１１】
また、特許文献４では、データ送受信処理を開始する際、マスタ装置は内部のアドレス・バッファにアドレスを送信し、アドレス・バッファから共通アドレス・バスへアドレスを送信し、一定期間内にスレーブ装置から応答がない場合、アドレス等の情報を故障診断部に報告することが開示されている。しかし、特許文献４では、共通バス上のアドレスを取得する動作は行わないため、あるマスタ装置がデータ送受信中に障害が発生し、Ｉ２Ｃバスがフリーズした場合、他のマスタ装置は、バスフリーズ原因となっているスレーブ装置のアドレス情報を取得することができないという問題がある。
【００１２】
また、特許文献５では、主プロセッサと各副プロセッサ間にエラー信号線をそれぞれ接続し、副プロセッサから送られてくるエラー信号の状態に基づいてハングアップした副プロセッサを特定し、個別にリセットする技術が開示されている。この場合、Ｉ２Ｃに置き換えるならば、副プロセッサがスレーブ装置となる。しかし、Ｉ２Ｃバスを共有するマルチマスタ構成の場合、全プロセッサと全スレーブ装置にそれぞれ専用のエラー信号線を接続する必要があるため、ハードウェア構成が複雑となってしまう。
【００１３】
また、データ送信中にマスタ装置に障害が起こり、スレーブ装置が信号線の値を固定してしまうことで、Ｉ２Ｃバスフリーズが発生した場合、Ｉ２Ｃの仕様では、スレーブ装置は、単なるマスタ装置からのクロック信号待ち状態であり、スレーブ装置側としてはエラーではない。つまり、Ｉ２Ｃバスがフリーズしたとしても、スレーブ装置は、エラー信号を発生しない状況が存在するため、特許文献５に記載された技術では、Ｉ２Ｃバスフリーズ原因のスレーブ装置を検出できない場合がある。
【００１４】
また、特許文献６では、ＰＣＩバス上に発生する全トランザクションを解析する装置と、アドレス及びコマンドを保存する装置とを内蔵したホストブリッジが示されているが、対象装置をリセットする手段を持たず、速やかに正常状態に復帰することができないという問題がある。
【００１５】
また、特許文献７では、バスバッファ制御信号線を別途用意する必要がある。また、バスで送受信する信号にパリティビットを付与する必要があるが、Ｉ２Ｃの送受信データ仕様には、パリティビットは含まれていないため、この技術をＩ２Ｃへ適用できないという問題がある。
【００１６】
さらに、特許文献８では、プロセッサ自身に障害が発生したことで通信が中断し、他のプロセッサにメインの処理が移行した場合、他のプロセッサが以前に通信していたマイクロプロセッサを特定することはできないという問題がある。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００７−１６４７６５号公報
【特許文献２】特開２０１０−０５５４７４号公報
【特許文献３】特開２０１０−０５５４７２号公報
【特許文献４】特開昭６０−１７８５５５号公報
【特許文献５】特開平０５−３２４５９７号公報
【特許文献６】特開平１１−１４９４２１号公報
【特許文献７】特開２００９−００３６１３号公報
【特許文献８】特開平０９−１０６３７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
上述したように、Ｉ２Ｃバスを共有するマルチプロセッサ構成において、主プロセッサがＩ２Ｃ通信中に故障した場合等では、タイミングによってはＩ２Ｃバスがフリーズする可能性がある。Ｉ２Ｃバスフリーズは、通信を行っていたスレーブ装置がバスをロックするため発生する。
【００１９】
この状態で従プロセッサがバスマスタとなった場合、上述した特許文献１〜８では、通信中のスレーブ装置を他の装置が特定する方法がないため、従プロセッサは、Ｉ２Ｃバスフリーズ原因となっているスレーブ装置を特定することができない。つまり、障害原因の特定ができないということであり、Ｉ２Ｃバスフリーズから復帰するには、全スレーブ装置に対してリセット等の処理、または部品交換を行わなければならないという問題があった。
【００２０】
本発明は、上述の課題を解決することのできるＩ２Ｃバス通信制御システム、及びＩ２Ｃバス通信制御方法を提供することにある。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、本発明の第１の形態によると、Ｉ２Ｃバス通信制御システムであって、少なくとも１つの主プロセッサと１つの従プロセッサとから成る複数のマスタ装置と、マスタ装置とＩ２Ｃバスを共有するスレーブ装置とを備え、主プロセッサは、通信相手を指定するスレーブアドレスをＩ２Ｃバスへ出力する手段を有し、従プロセッサは、主プロセッサがＩ２Ｃバスへ出力した通信相手を指定するスレーブアドレスを取得するアドレスデコーダと、アドレスデコーダが取得したスレーブアドレスを保存するデータ保存レジスタと、Ｉ２Ｃバスがフリーズしているか否かを確認する確認手段と、Ｉ２Ｃバスがフリーズしていることを確認手段が確認した場合に、データ保存レジスタに保存されているスレーブアドレスに基づいて特定されるスレーブ装置に対してリセット信号を送信するリセット信号発生部とを有し、主プロセッサは、Ｉ２Ｃバスに流れるスレーブアドレスに一致するスレーブアドレスを有するスレーブ装置との間でデータを送受信する手段を更に有する。
【００２２】
本発明の第２の形態によると、Ｉ２Ｃバス通信制御方法であって、少なくとも１つの主プロセッサと１つの従プロセッサとから成り、スレーブ装置とＩ２Ｃバスを共有する複数のマスタ装置の主プロセッサが、通信相手を指定するスレーブアドレスをＩ２Ｃバスへ出力する段階と、従プロセッサが、主プロセッサがＩ２Ｃバスへ出力した通信相手を指定するスレーブアドレスを取得する段階と、従プロセッサが、取得されたスレーブアドレスを保存する段階と、従プロセッサが、Ｉ２Ｃバスがフリーズしているか否かを確認する段階と、Ｉ２Ｃバスがフリーズしていることが確認された場合に、従プロセッサが、保存されたスレーブアドレスに基づいて特定されるスレーブ装置に対してリセット信号を送信する段階と、主プロセッサが、Ｉ２Ｃバスに流れるスレーブアドレスに一致するスレーブアドレスを有するスレーブ装置との間でデータを送受信する段階と、を備える。
【発明の効果】
【００２３】
この発明によれば、Ｉ２Ｃバスフリーズの原因となっているスレーブ装置を速やかに特定することができ、また、特定したスレーブ装置にリセットをかけることで、Ｉ２Ｃバスフリーズから容易に復帰することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１実施形態によるＩ２Ｃバス通信制御システム１の構成を示すブロック図である。
【図２】本第１実施形態によるプロセッサ１００（１１０、１ｍ０）の内部構成を示すブロック図である。
【図３】本第１実施形態によるＩ２Ｃバス通信制御システム１の動作を説明するためのフローチャートである。
【図４】本第１実施形態において、Ｉ２Ｃバスに流れるデータ列を示す概念図である。
【図５】本発明の第２実施形態によるＩ２Ｃバス通信制御システム２の構成を示すブロック図である。
【図６】本第２実施形態によるプロセッサ１００（１１０、１ｍ０）の内部構成を示すブロック図である。
【図７】本第２実施形態によるＩ２Ｃバス通信制御システム２の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の一実施形態を、図面を参照して説明する。
【００２６】
Ａ．第１実施形態
図１は、本発明の第１実施形態によるＩ２Ｃバス通信制御システム１の構成を示すブロック図である。図において、Ｉ２Ｃバス通信制御システム１は、プロセッサ１００、プロセッサ１１０、プロセッサ１ｍ０、…、スレーブ装置２００、スレーブ装置２ｎ０、…、ＳＤＡ信号線１０、ＳＣＬ信号線１１から構成される。プロセッサ１００は、マスタ装置１０１、データ保存部１０２から構成される。プロセッサ１１０は、マスタ装置１１１、データ保存部１１２から構成される。プロセッサ１ｍ０は、マスタ装置１ｍ１、データ保存部１ｍ２から構成される。マスタ装置１０２、１１２、１ｍ２、スレーブ装置２００、２ｎ０は、各々、ＳＤＡ信号線１０とＳＣＬ信号線１１とに接続される。
【００２７】
マスタ装置１０１、１１１、１ｍ１は、Ｉ２Ｃバスに流れるデータからＩ２Ｃスレーブアドレスを検出する。データ保存部１０２、１１２、１ｍ２は、検出したＩ２Ｃスレーブアドレスを保存する。
【００２８】
なお、プロセッサ１００、１１０、１ｍ０、…は、２つ以上の任意の個数、スレーブ装置２００、２ｎ０、…は、１つ以上の任意の個数をバスに接続することが可能である。
【００２９】
図２は、本第１実施形態によるプロセッサ１００（１１０、１ｍ０）の詳細な構成を示すブロック図である。プロセッサ１００（１１０、１ｍ０）は、Ｉ２Ｃバスに流れるＩ２Ｃスレーブアドレスを検出するための、マスタ装置１０１（１１１、１ｍ１）内のレジスタ等から成るＩ２Ｃアドレスデコーダ１２を有する。Ｉ２Ｃアドレスデコーダ１２は、Ｉ２Ｃバスに流れるデータからＩ２Ｃスレーブアドレスを検出する装置であれば、マスタ装置１０１（１１１、１ｍ１）とは別に用意してもよい。また、プロセッサ１００（１１０、１ｍ０）は、検出したＩ２Ｃスレーブアドレスを保存するための、各種記録装置から成るデータ保存レジスタ１３を有する。
このようなＩ２Ｃバス通信制御システム１の構成により、Ｉ２Ｃバスを共有する構成において、Ｉ２Ｃバスフリーズの原因となったスレーブ装置を速やかに特定することができる技術を提供する。
【００３０】
次に、本第１実施形態の動作について説明する。
図３は、本第１実施形態によるＩ２Ｃバス通信制御システム１の動作を説明するためのフローチャートである。プロセッサ１００が主プロセッサ、それ以外のプロセッサ１１０、１ｍ０が従プロセッサの場合を例に挙げる。このとき、Ｉ２Ｃバスマスタは、プロセッサ１００のマスタ装置１０１である。プロセッサ１００は、マスタ装置１０１を用いてＩ２Ｃバスへスタートコンディションを発行し、Ｉ２Ｃバスの使用権を獲得する（ステップＳ１）。
【００３１】
プロセッサ１００は、通信相手を指定するスレーブアドレスを、マスタ装置１０１を用いてＩ２Ｃバスへ出力する（ステップＳ２）。従プロセッサのいずれか１つ、または複数、または全ては、Ｉ２Ｃバスに流れるスレーブアドレスを、自身のマスタ装置内のＩ２Ｃスレーブアドレスデコーダを介して取得し、データ保存レジスタ１３に保存する（ステップＳ３）。あるいは、マスタ装置１０１とは別に存在するＩ２Ｃスレーブアドレスデコーダ１２からＩ２Ｃスレーブアドレスを取得してもよい。
【００３２】
スレーブ装置２００、２ｎ０の中で、自身のスレーブアドレスとＩ２Ｃバスに流れるスレーブアドレスとが一致するスレーブ装置が、Ｉ２Ｃバスを介して主プロセッサ１００へＡＣＫを出力する（ステップＳ４）。次に、プロセッサ１００、またはステップＳ４にてＡＣＫを出力したスレーブ装置がデータを送信する（ステップＳ５）。データを受信したプロセッサ１００、またはステップＳ４にてＡＣＫを出力したスレーブ装置は、Ｉ２ＣバスにＡＣＫを出力する（ステップＳ６）。プロセッサ１００は、マスタ装置１０１を用いてＩ２Ｃバスへストップコンディションを発行し、Ｉ２Ｃバスの使用権を破棄する（ステップＳ７）。
【００３３】
図４は、本第１実施形態において、Ｉ２Ｃバスに流れるデータ列を示す概念図である。従プロセッサは、図５に示す「ａｄｄｒｅｓｓ」のタイミングでＩ２Ｃスレーブアドレスを取得する。なお、プロセッサ１００以外のプロセッサが主プロセッサの場合も同様である。主プロセッサがＩ２Ｃ通信を行い、従プロセッサのいずれか１つ、または複数、または全てがＩ２Ｃバスに流れるスレーブアドレスを取得する。
【００３４】
上述した第１実施形態によれば、主プロセッサがＩ２Ｃバスへ出力した通信相手を指定するスレーブアドレスを、従プロセッサのＩＣアドレスデコーダ１２で取得し、データ保存レジスタ１３に保存するようにしたので、主プロセッサの故障等が発生しても、全スレーブ装置を検査することなく、Ｉ２Ｃバスフリーズの原因となっているＩ２Ｃスレーブ装置を特定することができる。このため、Ｉ２Ｃバスフリーズからの復帰処置のためのリセット処理、または部品交換を、特定したスレーブ装置のみに限定することができる。つまり、Ｉ２Ｃバスフリーズが発生したときの障害の波及範囲を極小化することができる。
【００３５】
Ｂ．第２実施形態
図５は、本発明の第２実施形態によるＩ２Ｃバス通信制御システム２の構成を示すブロック図である。図において、Ｉ２Ｃバス通信制御システム２は、プロセッサ１００、プロセッサ１１０、プロセッサ１ｍ０、…、スレーブ装置２００、スレーブ装置２ｎ０、…、ＳＤＡ信号線１０、ＳＣＬ信号線１１、リセット信号線２０、２１から構成される。プロセッサ１００は、マスタ装置１０１、データ保存部１０２、リセット信号発生部１０３から構成される。プロセッサ１１０は、マスタ装置１１１、データ保存部１１２、リセット信号発生部１１３から構成される。プロセッサ１ｍ０は、マスタ装置１ｍ１、データ保存部１ｍ２、リセット信号発生部１ｍ３から構成される。マスタ装置１０１、１１１、１ｍ１、スレーブ装置２００、２ｎ０は、各々、ＳＤＡ信号線１０とＳＣＬ信号線１１に接続される。
【００３６】
マスタ装置１０１、１１１、１ｍ１は、Ｉ２Ｃバスに流れるデータからＩ２Ｃスレーブアドレスを検出する。データ保存部１０２、１１２、１ｍ２は、検出したＩ２Ｃスレーブアドレスを保存する。リセット信号発生部１０３、１１３、１ｍ１は、Ｉ２Ｃスレーブアドレスからリセット信号用アドレスへと変換し、リセット信号用アドレスに基づいて、リセット信号線２０、２１を介して、対象スレーブ装置へリセット信号を送信する。
【００３７】
なお、プロセッサ１００、１１０、１ｍ０、…は、２つ以上の任意の個数、スレーブ装置２００、２ｎ０、…は、１つ以上の任意の個数をバスに接続することが可能である。
【００３８】
図６は、本第２実施形態によるプロセッサ１００（１１０、１ｍ０）の詳細な構成を示すブロック図である。プロセッサ１００（１１０、１ｍ０）は、Ｉ２Ｃバスに流れるＩ２Ｃスレーブアドレスを検出するための、マスタ装置１０１（１１１、１ｍ１）内のレジスタ等から成るＩ２Ｃアドレスデコーダ１２を有する。Ｉ２Ｃアドレスデコーダ１２は、Ｉ２Ｃバスに流れるデータからＩ２Ｃスレーブアドレスを検出する装置であれば、マスタ装置１０１（１１１、１ｍ１）とは別に用意してもよい。
【００３９】
また、プロセッサ１００（１１０、１ｍ０）は、検出したＩ２Ｃスレーブアドレスを保存するための、各種記憶装置から成るデータ保存レジスタ１３を有する。また、プロセッサ１００（１１０、１ｍ０）は、Ｉ２Ｃスレーブアドレスからリセット信号用アドレスへと変換するリセットアドレスエンコーダ１４を有する。さらに、プロセッサ１００（１１０、１ｍ０）は、リセット信号用アドレスに基づいて、対象スレーブ装置へのリセット信号を送信するリセット信号送出装置１５を有する。
【００４０】
次に、本第２実施形態の動作について説明する。
図７は、本第２実施形態によるＩ２Ｃバス通信制御システム２の動作を説明するためのフローチャートである。プロセッサ１００が主プロセッサ、その他のプロセッサが従プロセッサの場合を例に挙げる。まず、通常時のＩ２Ｃ通信は、上述した第１実施形態と同様に、図３に示すフローチャートに従った動作を行う。一方、主プロセッサであるプロセッサ１００の故障等により、従プロセッサがＩ２Ｃ通信を行う場合、図７に示すフローチャートに従って動作する。なお、Ｉ２Ｃ通信を行う従プロセッサは、図３に示すフローチャートに従ってスレーブアドレスが取得された従プロセッサのいずれか１つである。
【００４１】
従プロセッサがマスタ装置を介してＩ２Ｃ通信を開始し（ステップＳ１１）、ＳＤＡ信号線１０、ＳＣＬ信号線１１の状態に基づいて、Ｉ２Ｃバスがフリーズしているか否かを確認する（ステップＳ１２）。そして、Ｉ２Ｃバスがフリーズしていない場合には（ステップＳ１２のＮＯ）、スレーブ装置とのデータ送受信を行う（ステップＳ１６）。
【００４２】
一方、Ｉ２Ｃバスがフリーズしている場合には（ステップＳ１２のＹＥＳ）、Ｉ２Ｃバスフリーズの原因となっているスレーブ装置の特定を行う（ステップＳ１３）。従プロセッサは、図３に示すステップＳ３にて、主プロセッサとＩ２Ｃ通信をしていたスレーブ装置固有のＩ２Ｃスレーブアドレスを取得しているため、Ｉ２Ｃバスがフリーズする直前にＩ２Ｃ通信を行っていたスレーブ装置が何であるかを認識可能である。すなわち、Ｉ２Ｃバスがフリーズする直前にＩ２Ｃ通信を行っていたスレーブ装置が、Ｉ２Ｃバスフリーズの原因である。
【００４３】
従プロセッサは、リセットアドレスエンコーダを介して、Ｉ２Ｃスレーブアドレスをリセット信号送出装置４用のアドレスへ変換し、特定したスレーブ装置のみに対し、リセット信号送出装置４を介してリセット信号を送出、あるいは電源遮断後に電源供給を行って初期化、あるいは電源遮断処理を行い、Ｉ２Ｃバスフリーズ原因を除去する（ステップＳ１４）。これにより、Ｉ２Ｃバスフリーズから復帰することができる。なお、リセットアドレスエンコーダ３、リセット信号送出装置４は、プロセッサ外部に用意してもよい。
【００４４】
以後、従プロセッサは、Ｉ２Ｃバス通信を再開し（ステップＳ１５）、スレーブ装置とのデータ送受信を行う（ステップＳ１６）。このとき、バスフリーズ復帰処理を行った従プロセッサを主プロセッサと見なし、その他の従プロセッサは、Ｉ２Ｃバスに流れるＩ２Ｃスレーブアドレスを取得してもよい。
【００４５】
プロセッサ１００以外のプロセッサが主プロセッサである場合も同様である。主プロセッサがＩ２Ｃ通信を行い、従プロセッサのいずれか１つ、または複数、または全てがＩ２Ｃバスに流れるスレーブアドレスを取得する。そして、従プロセッサのいずれか１つに切り替わったならば、Ｉ２Ｃバスの状態を確認し、Ｉ２Ｃバスフリーズが発生していた場合には復帰処理を行う。
【００４６】
上述した第２実施形態によれば、従プロセッサにより、Ｉ２Ｃバスがフリーズしているか否かを確認し、Ｉ２Ｃバスがフリーズしていることが確認された場合、データ保存レジスタ１３に保存されているスレーブアドレスに基づいて特定されるスレーブ装置に対して、リセット信号発生部１１３によりリセット信号を送信するようにしたので、Ｉ２Ｃバスフリーズからの復帰処置のためのリセット処理、または部品交換を、特定したスレーブ装置のみに限定することができる。つまり、Ｉ２Ｃバスフリーズが発生したときの障害の波及範囲を極小化することができる。
【符号の説明】
【００４７】
１、２  Ｉ２Ｃバス通信制御システム
１０  ＳＤＡ信号線
１１  ＳＣＬ信号線
１２  Ｉ２Ｃアドレスデコーダ
１３  データ保存レジスタ
１４  リセットアドレスエンコーダ
１５  リセット信号送出装置
２０、２１  リセット信号線
１００、１１０、１ｍ０  プロセッサ
１０１、１１１、１ｍ１  マスタ装置
１０２、１１２、１ｍ２  データ保存部
１０３、１１３、１ｍ３  リセット信号発生部
２００、２ｎ０  スレーブ装置
【図１】
0005299443.tif 000002
【図２】
0005299443.tif 000003
【図３】
0005299443.tif 000004
【図４】
0005299443.tif 000005
【図５】
0005299443.tif 000006
【図６】
0005299443.tif 000007
【図７】
0005299443.tif 000008