(57)【要約】【課題】複数の通信端子の一部に異常が生じても通信を継続できる通信装置を提供する。【解決手段】他の通信装置と接続される複数の通信端子と、上記通信端子を介して上記他の通信装置と通信を行う、通信に用いる通信端子の数が異なる複数の通信方式を有した通信部と、上記複数の通信端子のうち、通信に異常を生じる通信端子を特定する異常特定部と、上記複数の通信端子のうち、上記異常特定部で特定された通信端子を除く他の通信端子を用いる通信方式で上記通信部に通信を行わせる通信制御部と、を備える。【選択図】図１
2017175243.tif 000002
【特許請求の範囲】
【請求項１】
他の通信装置と接続される複数の通信端子と、
前記通信端子を介して前記他の通信装置と通信を行う、通信に用いる通信端子が異なる複数の通信方式を有した通信部と、
前記複数の通信端子のうち、通信に異常を生じる通信端子を特定する異常特定部と、
前記複数の通信端子のうち、前記異常特定部で特定された通信端子を除く他の通信端子を用いる通信方式で前記通信部に通信を行わせる通信制御部と、
を備えたことを特徴とする通信装置。
【請求項２】
前記異常特定部が、前記通信部に、前記複数の通信端子を用いて前記他の通信装置から既知のデータを受信させ、実際に受信されたデータと前記既知のデータとの相違箇所の通信を担っていた通信端子を異常と特定するものであることを特徴とする請求項１記載の通信装置。
【請求項３】
前記他の通信装置が、確認応答の求めに対し確認応答を返すものであり、
前記異常特定部が、前記他の通信装置に前記求めを送り、その求めに対する確認応答が返されなかった通信端子を異常と特定するものであることを特徴とする請求項１記載の通信装置。
【請求項４】
前記異常特定部が、前記通信部による通信に用いられていない通信端子を介して該通信中に前記求めを送り前記確認応答を得るものであることを特徴とする請求項３記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関する。
【背景技術】
【０００２】
従来、中央演算装置（ＣＰＵ）と周辺デバイスとの間ではＳＰＩ方式のシリアル通信が行われており、これらのデバイスは通信装置の一種としての機能を有する。このＳＰＩ方式のシリアル通信回路としては、複数の通信端子を備えたものが知られており、それら複数の通信端子で同時に通信が行われることによって通信の高速化が図られている。
【０００３】
例えば、特許文献１には、ＳＰＩ方式のシリアル通信回路であって、コマンドと同期識別コードとを１セットのデータとして受信するものが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−０８６８７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来は、複数の通信端子のうちの１つでも通信端子が、通信に異常を生じる異常状態である場合には、残りの通信端子が正常な状態であっても通信は継続できず、基板や回路の交換が必要となる。
【０００６】
本発明は、複数の通信端子のうちの一部の通信端子が異常であっても通信が継続可能な通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
請求項１に係る通信装置は、
他の通信装置と接続される複数の通信端子と、
上記通信端子を介して上記他の通信装置と通信を行う、通信に用いる通信端子が異なる複数の通信方式を有した通信部と、
上記複数の通信端子のうち、通信に異常を生じる通信端子を特定する異常特定部と、
上記複数の通信端子のうち、上記異常特定部で特定された通信端子を除く他の通信端子を用いる通信方式で上記通信部に通信を行わせる通信制御部と、
を備えたことを特徴とする。
【０００８】
請求項２に係る通信装置は、
上記異常特定部が、上記通信部に、上記複数の通信端子を用いて上記他の通信装置から既知のデータを受信させ、実際に受信されたデータと上記既知のデータとの相違箇所の通信を担っていた通信端子を異常と特定するものであることを特徴とする。
【０００９】
請求項３に係る通信装置は、
上記他の通信装置が、確認応答の求めに対し確認応答を返すものであり、
上記異常特定部が、上記他の通信装置に上記求めを送り、その求めに対する確認応答が返されなかった通信端子を異常と特定するものであることを特徴とする。
【００１０】
請求項４に係る通信装置は、
上記異常特定部が、上記通信部による通信に用いられていない通信端子を介してその通信中に上記求めを送り上記確認応答を得るものであることを特徴とする。
【発明の効果】
【００１１】
請求項１に係る通信装置によれば、複数の通信端子のうちの一部の通信端子が異常であっても通信を継続することができる。
【００１２】
請求項２に係る通信装置によれば、通常の通信機能を使って異常な通信端子を特定することができる。
【００１３】
請求項３に係る通信装置によれば、確認応答を用いない場合に較べて通信端子の正常異常を明確に区別することができる。
【００１４】
請求項４に係る通信装置によれば、通信時間内に通信端子の正常異常を確認することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の通信装置の第１実施形態が組み込まれた通信システムの概略構成図である。
【図２】図１に示す通信システムで用いられるコマンドを示す一覧表である。
【図３】通信異常時の動作を示すフローチャートである。
【図４】異常端子特定処理における処理動作を示すフローチャートの第１段階である。
【図５】異常端子特定処理における処理動作を示すフローチャートの第２段階である。
【図６】異常端子特定処理における処理動作を示すフローチャートの第３段階である。
【図７】異常端子特定処理における処理動作を示すフローチャートの第４段階である。
【図８】本発明の通信装置の第２実施形態が組み込まれた通信システムの概略構成図である。
【図９】異常端子判定シーケンスにおける動作手順を示すフローチャートである。
【図１０】Ｄ１−Ｄ３端子判定シーケンスにおける動作手順を示すフローチャートである。
【図１１】Ｄ１−Ｄ３端子判定シーケンスにおける動作タイミングの例を示すタイミングチャートである。
【発明を実施するための形態】
【００１６】
本発明の実施形態について、以下図面を参照して説明する。
【００１７】
図１は、本発明の通信装置の第１実施形態が組み込まれた通信システムの概略構成図である。
【００１８】
この通信システム１は、ＳＰＩ通信を行うシステムである。通信システム１は、マスタ回路１０とスレーブ回路２０とを備え、マスタ回路１０は、コマンド生成部１１と、ビット配列変更部１２と、異常端子特定部１３と、複数（ここでは一例として４本）の通信端子１４とを備えている。また、スレーブ回路２０は、コマンド／アドレス判定部２１と、ビット配列識別部２２とを備えている。
【００１９】
マスタ回路１０の通信端子１４はスレーブ回路２０に接続されており、マスタ回路１０は通信端子１４を介してスレーブ回路２０とコマンドやデータの通信を行う。図１では１つのスレーブ回路２０が示されているが、１つのマスタ回路１０には複数のスレーブ回路２０が接続されてもよい。
【００２０】
マスタ回路１０はスレーブ回路２０に対し、通信の同期をとるためのクロック信号ＣＬＫや、スレーブ回路２０を選択するためのチップセレクト信号ＣＳを送信する。
【００２１】
マスタ回路１０のコマンド生成部１１は、通信の指示を表したコマンドを生成してビット配列変更部１２に入力するものである。ビット配列変更部１２は、マスタ回路１０が組み込まれているＣＰＵなどのデバイス内部で他の回路と送受信データをやり取りし、その送受信データの通信を、４本の通信端子１４のうち、コマンド生成部１１から入力されたコマンドに応じた通信端子１４に割り振るものである。従来のSPI規格ではコマンドおよびアドレスはData0端子を用いて通信を行うが、通信システム１では、ビット配列変更部１２により、そのコマンド自体およびアドレスも、そのコマンドに応じた通信端子１４を介してスレーブ回路２０に送信する。図１ではスレーブ回路２０のビット配列識別部２２で４本の通信端子１４いずれの端子からもコマンドおよびアドレスを受信可能としている。スレーブ回路は従来のSPIデバイスでもよい。以下の説明では、４本の通信端子１４を互いに区別する必要がある場合には、Ｄ０端子、Ｄ１端子、Ｄ２端子、およびＤ３端子と称する。
【００２２】
マスタ回路１０のコマンド生成部１１とビット配列変更部１２とを併せたものが、本発明にいう通信部の一例に相当し、４本の通信端子１４が、本発明にいう複数の通信端子の一例に相当する。
【００２３】
ここで、通信システム１で用いられるコマンドについて説明する。
【００２４】
図２は、図１に示す通信システム１で用いられるコマンドを示す一覧表である。
【００２５】
図２に示す一覧表３０には、読出し（Ｒｅａｄ；スレーブ回路２０からマスタ回路１０へのデータ転送）用のコマンドとしてＮｏ．１からＮｏ．１５までのコマンドが記載されている。また、書込み（Ｗｒｉｔｅ；マスタ回路１０からスレーブ回路２０へのデータ転送）用のコマンドとしてもＮｏ．１からＮｏ．１５までのコマンドが記載されている。そして、互いに同一のＮｏ．が付与されているＲｅａｄコマンドとＷｒｉｔｅコマンドは、通信に使用される通信端子１４が同一となっている。
【００２６】
また、一覧表３０に記載されたコマンドには、１本の通信端子１４のみを用いた通信を指示する「Ｓｉｎｇｌｅ」タイプのコマンドと、２本の通信端子１４を用いた通信を指示する「Ｄｕａｌ」タイプのコマンドと、３本の通信端子１４を用いた通信を指示する「Ｔｒｉｐｌｅ」タイプのコマンドと、４本すべての通信端子１４を用いた通信を指示する「Ｑｕａｄ」タイプのコマンドが存在する。
【００２７】
従来のSPIデバイスではNo.1,5,15,のみを用いることができる。第１実施形態ではそれを拡張する。
【００２８】
図１に戻って説明を続ける。
【００２９】
マスタ回路１０のコマンド生成部１１は、上述したようにコマンドを生成してビット配列変更部１２に入力し、そのコマンドはビット配列変更部１２からスレーブ回路２０に送信される。
【００３０】
スレーブ回路２０では、マスタ回路１０から送られてきたコマンドをコマンド／アドレス判定部２１が判定することで、今回の通信で用いる通信端子１４が特定される。そして、スレーブ回路２０のビット配列識別部２２は、コマンドに応じた通信端子１４を用いて送受信データの通信を行い、その送受信データを、スレーブ回路２０が組み込まれているデバイス内で他の回路とやり取りする。
【００３１】
マスタ回路１０の異常端子特定部１３は、コマンド生成部１１およびビット配列変更部１２による通信で通信異常が生じた場合に、４つの通信端子１４のうち通信に異常を生じる異常状態になっている通信端子１４を特定し、その特定した通信端子１４を除いた他の通信端子１４を使った通信を指示するものである。この異常端子特定部１３が、本発明にいう異常特定部と通信制御部とを併せた一例に相当する。以下、通信異常時の動作について説明する。
【００３２】
図３は、通信異常時の動作を示すフローチャートである。
【００３３】
コマンド生成部１１およびビット配列変更部１２による通信で通信異常が検知されると（ステップＳ１０１）、異常端子特定部１３が動作を開始して、４つの通信端子１４のうち異常な通信端子１４を特定する異常端子特定処理を実行する（ステップＳ１０２）。この異常端子特定処理では、異常端子特定部１３がコマンド生成部１１およびビット配列変更部１２を制御して異常な通信端子１４を特定する。また、この異常端子特定処理では、特定された異常な通信端子１４を除いた通信端子１４で正常な通信を行うための設定も行われる。そして、異常端子特定処理が終了すると、その設定の下で通信が再開される（ステップＳ１０３）。
【００３４】
図４〜図７は、異常端子特定処理における処理動作を示すフローチャートである。
【００３５】
図４〜図７には、１つのフローチャートが４つに分割されて示されている。即ち、図４のステップＳ２３０から図５のステップＳ２３３へと処理が繋がり、図５のステップＳ２４５から図６のステップＳ２４８へと処理が繋がり、図６のステップＳ２５４から図７のステップＳ２５７へと処理が繋がっている。
【００３６】
異常端子特定処理が開始されると、まず、異常端子特定部１３がビット配列変更部１２に対し、コマンドの送信端子としてＤ０端子を設定する（ステップＳ２０１）。次に、異常端子特定部１３がコマンド生成部１１に対し、Ｎｏ．１５のコマンド（即ち「Ｑｕａｄ」タイプのコマンド）による送受信を指示する（ステップＳ２０２）。そして、異常端子特定部１３がビット配列変更部１２に対し、値「ＦＦＦＦ（１６進数表記）」を送信データとして指示する（ステップＳ２０３）。これらの指示を受けたコマンド生成部１１およびビット配列変更部１２により、Ｄ０端子からＤ３端子までの４つの通信端子１４それぞれについて、２進数表記で「１１１１」を表す信号が送信され、同一信号の返信がスレーブ回路２０に指示される。
【００３７】
この結果としてスレーブ回路２０から返信されてきた値が、ステップＳ２０４，Ｓ２１１，Ｓ２１４，Ｓ２２１，Ｓ２２４，Ｓ２２７，Ｓ２３０で確認される。
【００３８】
まず、スレーブ回路２０から返信されてきた値（受信データ）が「７７７７（１６進数表記）」であった場合（ステップＳ２０４；Ｙ）、２進数表記では「０１１１０１１１０１１１０１１１」である。「Ｑｕａｄ」タイプのコマンドによる通信では、送受信データの下位桁から順に、Ｄ０端子、Ｄ１端子、Ｄ２端子、Ｄ３端子、そして再びＤ０端子、という順で各通信端子に信号が割り当てられている。このため、受信データが「７７７７（１６進数表記）」であった場合はＤ３端子が通信を担っている信号が値「０」（即ち異常）を示していることになる（ステップＳ２０５）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．１１のコマンド（即ち、Ｄ３端子以外を用いる「Ｔｒｉｐｌｅ」タイプのコマンド）による送受信を（仮設定として）指示する（ステップＳ２０６）。そして、異常端子特定部１３がビット配列変更部１２に対し、値「ＦＦＦＦ（１６進数表記）」を送信データとした書込みと読出しを再度実行させる（ステップＳ２０７）。この結果、送信データと受信データが一致した場合（ステップＳ２０８；Ｙ）には、今後の通信に仮設定のＮｏ．のコマンドを用いることが決定され（ステップＳ２０９）、不一致であった場合（ステップＳ２０８；Ｎ）には、スレーブが従来のSPIデバイスであると判断し、今後の通信にＮｏ．５のコマンド（即ち、Ｄ０端子、Ｄ１端子を用いる「Ｄｕａｌ」タイプのコマンド）を用いることが決定される。
【００３９】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「ＢＢＢＢ（１６進数表記）」であった場合（ステップＳ２１１；Ｙ）、２進数表記では「１０１１１０１１１０１１１０１１」である。このため、Ｄ２端子が通信を担っている信号が値「０」（即ち異常）を示していることになる（ステップＳ２１２）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．１２のコマンド（即ち、Ｄ２端子以外を用いる「Ｔｒｉｐｌｅ」タイプのコマンド）による送受信を（仮設定として）指示し（ステップＳ２１３）、その後、上述したステップＳ２０７以降の処理が実行される。この結果、仮設定のＮｏ．１２のコマンドか、あるいは上記Ｎｏ．５のコマンドが今後の通信のコマンドとして決定されることとなる。
【００４０】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「ＤＤＤＤ（１６進数表記）」であった場合（ステップＳ２１４；Ｙ）、２進数表記では「１１０１１１０１１１０１１１０１」である。このため、Ｄ１端子が通信を担っている信号が値「０」（即ち異常）を示していることになる（ステップＳ２１５）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．１３のコマンド（即ち、Ｄ１端子以外を用いる「Ｔｒｉｐｌｅ」タイプのコマンド）による送受信を（仮設定として）指示する（ステップＳ２１６）。そして、異常端子特定部１３がビット配列変更部１２に対し、値「ＦＦＦＦ（１６進数表記）」を送信データとした書込みと読出しを再度実行させる（ステップＳ２１７）。この結果、送信データと受信データが一致した場合（ステップＳ２１８；Ｙ）には、今後の通信に仮設定のＮｏ．のコマンドを用いることが決定され（ステップＳ２１９）、不一致であった場合（ステップＳ２１８；Ｎ）には、スレーブが従来のSPIデバイスであると判断し、今後の通信にＮｏ．１のコマンド（即ち、Ｄ０端子を用いる「Ｓｉｎｇｌｅ」タイプのコマンド）を用いることが決定される。
【００４１】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「５５５５（１６進数表記）」であった場合（ステップＳ２２１；Ｙ）、２進数表記では「０１０１０１０１０１０１０１０１」である。このため、Ｄ１端子とＤ３端子が通信を担っている信号が値「０」（即ち異常）を示していることになる（ステップＳ２２２）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．６のコマンド（即ち、Ｄ０端子、Ｄ２端子を用いる「Ｄｕａｌ」タイプのコマンド）による送受信を（仮設定として）指示し（ステップＳ２２３）、その後、上述したステップＳ２１７以降の処理が実行される。この結果、仮設定のＮｏ．６のコマンドか、あるいは上記Ｎｏ．１のコマンドが今後の通信のコマンドとして決定されることとなる。
【００４２】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「９９９９（１６進数表記）」であった場合（ステップＳ２２４；Ｙ）、２進数表記では「１００１１００１１００１１００１」である。このため、Ｄ１端子とＤ２端子が通信を担っている信号が値「０」（即ち異常）を示していることになる（ステップＳ２２５）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．７のコマンド（即ち、Ｄ０端子、Ｄ３端子を用いる「Ｄｕａｌ」タイプのコマンド）による送受信を（仮設定として）指示し（ステップＳ２２６）、その後、上述したステップＳ２１７以降の処理が実行される。この結果、仮設定のＮｏ．７のコマンドか、あるいは上記Ｎｏ．１のコマンドが今後の通信のコマンドとして決定されることとなる。
【００４３】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「３３３３（１６進数表記）」であった場合（ステップＳ２２７；Ｙ）、２進数表記では「００１１００１１００１１００１１」である。このため、Ｄ２端子とＤ３端子が通信を担っている信号が値「０」（即ち異常）を示していることになる（ステップＳ２２８）。そこで、異常端子特定部１３はコマンド生成部１１に対し、上記Ｎｏ．５のコマンドを、今後の通信のコマンドとして決定して指示する（ステップＳ２２９）。
【００４４】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「１１１１（１６進数表記）」であった場合（ステップＳ２３０；Ｙ）、２進数表記では「０００１０００１０００１０００１」である。このため、Ｄ１端子からＤ３端子までの３つの通信端子１４が通信を担っている信号がいずれも値「０」（即ち異常）を示していることになる（ステップＳ２３１）。そこで、異常端子特定部１３はコマンド生成部１１に対し、上記Ｎｏ．１のコマンドを、今後の通信のコマンドとして決定して指示する（ステップＳ２２９）。
【００４５】
上述したステップＳ２０４，Ｓ２１１，Ｓ２１４，Ｓ２２１，Ｓ２２４，Ｓ２２７，Ｓ２３０における確認で、受信データが上記値のいずれとも一致しなかった場合（ステップＳ２３０；Ｎ）は、上述したステップＳ２０１でコマンドの送信端子として設定されたＤ０端子に異常が生じていると考えられる。そこで、処理手順は図５のステップＳ２３３に進み、異常端子特定部１３がビット配列変更部１２に対し、コマンドの送信端子としてＤ１端子を設定する。次に、異常端子特定部１３がコマンド生成部１１に対し、Ｎｏ．１４のコマンド（即ち、Ｄ０端子以外を用いる「Ｔｒｉｐｌｅ」タイプのコマンド）による送受信を指示する（ステップＳ２３４）。そして、異常端子特定部１３がビット配列変更部１２に対し、値「ＦＦＦＦ（１６進数表記）」を送信データとした書込みと読出しを指示する（ステップＳ２３５）。
【００４６】
この結果としてスレーブ回路２０から返信されてきた値が、ステップＳ２３６，Ｓ２３９，Ｓ２４２，Ｓ２４５で確認される。
【００４７】
まず、スレーブ回路２０から返信されてきた値（受信データ）が「ＦＦＦＦ（１６進数表記）」であった場合（ステップＳ２３６；Ｙ）、受信データが送信データと一致したのでＤ０端子のみが異常であったと判断される（ステップＳ２３７）。そこで、異常端子特定部１３はコマンド生成部１１に対し、上記Ｎｏ．１４のコマンドを、今後の通信のコマンドとして決定して指示する（ステップＳ２３８）。
【００４８】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「Ｂ６ＤＢ（１６進数表記）」であった場合（ステップＳ２３９；Ｙ）、２進数表記では「１０１１０１１０１１０１１０１１」である。上記Ｎｏ．１４のコマンドによる通信では、送受信データの下位桁から順に、Ｄ１端子、Ｄ２端子、Ｄ３端子、そして再びＤ１端子、という順で各通信端子に信号が割り当てられている。このため、受信データが「Ｂ６ＤＢ（１６進数表記）」であった場合は、Ｄ３端子が通信を担っている信号が値「０」（即ち異常）を示していることになり、結局Ｄ０端子とＤ３端子が異常であると判断される（ステップＳ２４０）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．８のコマンド（即ち、Ｄ１端子、Ｄ２端子を用いる「Ｄｕａｌ」タイプのコマンド）を、今後の通信のコマンドとして決定して指示する（ステップＳ２４１）。
【００４９】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「ＤＢ６Ｄ（１６進数表記）」であった場合（ステップＳ２４２；Ｙ）、２進数表記では「１１０１１０１１０１１０１１０１」である。このため、Ｄ２端子が通信を担っている信号が値「０」（即ち異常）を示していることになり、結局Ｄ０端子とＤ２端子が異常であると判断される（ステップＳ２４３）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．９のコマンド（即ち、Ｄ１端子、Ｄ３端子を用いる「Ｄｕａｌ」タイプのコマンド）を、今後の通信のコマンドとして決定して指示する（ステップＳ２４４）。
【００５０】
次に、スレーブ回路２０から返信されてきた値（受信データ）が「９２４９（１６進数表記）」であった場合（ステップＳ２４５；Ｙ）、２進数表記では「１００１００１００１００１００１」である。このため、Ｄ２端子とＤ３端子が通信を担っている信号が値「０」（即ち異常）を示していることになり、結局Ｄ０端子、Ｄ２端子、およびＤ３端子が異常であると判断される（ステップＳ２４６）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．２のコマンド（即ち、Ｄ１端子を用いる「Ｓｉｎｇｌｅ」タイプのコマンド）を、今後の通信のコマンドとして決定して指示する（ステップＳ２４７）。
【００５１】
上述したステップＳ２３６，Ｓ２３９，Ｓ２４２，Ｓ２４５における確認で、受信データが上記値のいずれとも一致しなかった場合（ステップＳ２４５；Ｎ）は、Ｄ０端子とＤ１端子に異常が生じていると考えられる。そこで、処理手順は図６のステップＳ２４８に進み、異常端子特定部１３がビット配列変更部１２に対し、コマンドの送信端子としてＤ２端子を設定する。次に、異常端子特定部１３がコマンド生成部１１に対し、Ｎｏ．１０のコマンド（即ち、Ｄ２端子とＤ３端子を用いる「Ｄｕａｌ」タイプのコマンド）による送受信を指示する（ステップＳ２４９）。そして、異常端子特定部１３がビット配列変更部１２に対し、値「ＦＦＦＦ（１６進数表記）」を送信データとした書込みと読出しを指示する（ステップＳ２５０）。
【００５２】
この結果としてスレーブ回路２０から返信されてきた値が、ステップＳ２５１，Ｓ２５４で確認される。
【００５３】
まず、スレーブ回路２０から返信されてきた値（受信データ）が、「ＦＦＦＦ（１６進数表記）」であった場合（ステップＳ２５１；Ｙ）、受信データが送信データと一致したのでＤ０端子およびＤ１端子が異常であったと判断される（ステップＳ２５２）。そこで、異常端子特定部１３はコマンド生成部１１に対し、上記Ｎｏ．１０のコマンドを、今後の通信のコマンドとして決定して指示する（ステップＳ２５３）。
【００５４】
また、スレーブ回路２０から返信されてきた値（受信データ）が、「５５５５（１６進数表記）」であった場合（ステップＳ２５４；Ｙ）は、２進数表記では「０１０１０１０１０１０１０１０１」である。このため、Ｄ３端子が通信を担っている信号が値「０」（即ち異常）を示していることになり、結局Ｄ０端子、Ｄ１端子、およびＤ３端子が異常であると判断される（ステップＳ２５５）。そこで、異常端子特定部１３はコマンド生成部１１に対し、Ｎｏ．３のコマンド（即ち、Ｄ２端子を用いる「Ｓｉｎｇｌｅ」タイプのコマンド）を、今後の通信のコマンドとして決定して指示する（ステップＳ２５６）。
【００５５】
上述したステップＳ２５１，Ｓ２５４における確認で、受信データが上記値のいずれとも一致しなかった場合（ステップＳ２５４；Ｎ）は、Ｄ０端子、Ｄ１端子、およびＤ２端子までの通信端子に異常が生じていると考えられる。そこで、処理手順は図７のステップＳ２５７に進み、異常端子特定部１３がビット配列変更部１２に対し、コマンドの送信端子としてＤ３端子を設定する。次に、異常端子特定部１３がコマンド生成部１１に対し、Ｎｏ．４のコマンド（即ち、Ｄ３端子を用いる「Ｓｉｎｇｌｅ」タイプのコマンド）による送受信を指示する（ステップＳ２５８）。そして、異常端子特定部１３がビット配列変更部１２に対し、値「ＦＦＦＦ（１６進数表記）」を送信データとした書込みと読出しを指示する（ステップＳ２５９）。
【００５６】
この結果としてスレーブ回路２０から返信されてきた値（受信データ）が、「ＦＦＦＦ（１６進数表記）」であった場合（ステップＳ２６０；Ｙ）、受信データが送信データと一致したのでＤ０端子を除いたＤ０端子からＤ２端子までが異常であると判断される（ステップＳ２６１）。そこで、異常端子特定部１３はコマンド生成部１１に対し、上記Ｎｏ．４のコマンドを、今後の通信のコマンドとして決定して指示する（ステップＳ２６２）。
【００５７】
一方、スレーブ回路２０から返信されてきた値（受信データ）が、「ＦＦＦＦ（１６進数表記）」でなかった場合（ステップＳ２６０；Ｎ）には、４つの通信端子１４全てが異常である、もしくは、スレーブ回路がコマンドの送信端子としてＤ０端子しか設定できない従来デバイスであると考えられるので、基板を交換するべき旨のエラー通知が異常端子特定部１３から出力される（ステップＳ２６３）。
【００５８】
このような異常端子特定処理により、４つの通信端子１４のうち異常な通信端子１４が特定されるとともに、その異常な通信端子１４を除いた他の通信端子１４を用いた通信が設定されて通信が継続される。また、第１実施形態の場合、スレーブ回路の構造が従来通りであってもマスター回路で識別が可能であり応用範囲が広い。なお、第１実施形態ではマスタ回路１０内に異常端子特定部１３が設けられているものとして説明したが、異常端子特定部１３は、既存のマスタ回路１０に外付けされたものと観念してもよい。
【００５９】
次に、第２実施形態について説明する。
【００６０】
図８は、本発明の通信装置の第２実施形態が組み込まれた通信システムの概略構成図である。
【００６１】
この通信システム２も、ＳＰＩ通信を行うシステムである。通信システム２は、マスタ回路４０とスレーブ回路５０とを備え、マスタ回路４０は、データ送受信部４１と、コマンド生成部４２と、発行ライン判定部４３と、確認コマンド生成部４４と、複数（ここでは一例として４本）の通信端子４５とセレクタ４６とを備えている。また、スレーブ回路５０は、データ送受信部５１と、通常コマンド検出部５２と、確認応答部５３とを備えている。
【００６２】
マスタ回路４０の通信端子４５はスレーブ回路５０に接続されており、マスタ回路４０は通信端子４５を介してスレーブ回路５０とコマンドやデータの通信を行う。図８でも１つのスレーブ回路５０が示されているが、１つのマスタ回路４０には複数のスレーブ回路５０が接続されてもよい。また、マスタ回路４０に接続されるスレーブ回路としては、図１に示したスレーブ回路２０も接続され得る。
【００６３】
第２実施形態でも、マスタ回路４０はスレーブ回路５０に対し、通信の同期をとるためのクロック信号ＣＬＫや、スレーブ回路５０を選択するためのチップセレクト信号ＣＳを送信する。
【００６４】
マスタ回路４０のコマンド生成部４２は、通信を指示する命令を受けてコマンドを生成し、そのコマンドを、データ送受信部４１に入力するとともに通信端子４５のうちＤ０端子を介してスレーブ回路５０にも送信する。
【００６５】
マスタ回路４０のデータ送受信部４１は、マスタ回路４０が組み込まれているＣＰＵなどのデバイス内部で他の回路と送受信データをやり取りし、その送受信データの通信を、４本の通信端子４５のうち、コマンド生成部４１から入力されたコマンドに応じた通信端子４５に割り振る。
【００６６】
図８の通信システム２では、通信端子の異常を確認するためのコマンドとして、スレーブ回路５０に確認応答を求める確認コマンドが、通常の通信用のコマンドとは別に用意されている。
【００６７】
マスタ回路４０の発行ライン判定部４３は、コマンド生成部４２によって生成される通常のコマンドを確認することで、通常の通信で使用される通信端子４５を判定する。そして、確認コマンドを発行するための通信端子４５として、通常の通信で使用されていない通信端子４５を決定し、セレクタ４６にその決定された通信端子４５を選択させる。
【００６８】
確認コマンド生成部４４は、発行ライン判定部４３によって決定されセレクタ４６によって選択された通信端子４５を介してスレーブ回路５０に確認コマンドを送信する。また、確認コマンド生成部４４は、その確認コマンドに対してスレーブ回路５０から確認応答が得られたか否かの判定も行い、確認応答が得られない場合にはエラー通知を出力する。
【００６９】
スレーブ回路５０の通常コマンド検出部５２は、マスタ回路４０から受信した通常の通信用のコマンドを検出することで、今回の通信で用いる通信端子４５を特定し、データ送受信部５１に通知する。
【００７０】
スレーブ回路５０のデータ送受信部５１は、通常コマンド検出部５２から通知された通信端子４５を用いて送受信データの通信を行い、その送受信データを、スレーブ回路５０が組み込まれているデバイス内で他の回路とやり取りする。
【００７１】
スレーブ回路５０の確認応答部５３は、マスタ回路４０から送信されてきた確認コマンドを検出し、その確認コマンドに対し確認応答を返信する。
【００７２】
マスタ回路４０のコマンド生成部４２とデータ送受信部４１とを併せたものが、本発明にいう通信部の一例に相当し、４本の通信端子４５が、本発明にいう複数の通信端子の一例に相当し、確認コマンド生成部４４が、本発明にいう異常特定部と通信制御部とを併せた一例に相当する。
【００７３】
次に、図８の通信システム２における、異常な通信端子４５を特定する動作手順について説明する。以下の説明でも、４本の通信端子４５を互いに区別する必要がある場合には、Ｄ０端子、Ｄ１端子、Ｄ２端子、およびＤ３端子と称する。
【００７４】
図８の通信システム２では、上述したようにスレーブ回路として、図８に示すタイプのスレーブ回路５０と確認応答部５３を持たない従来デバイスが接続され得る。このため、異常な通信端子４５を特定するために、コマンド生成部４２とデータ送受信部４１による「異常端子判定シーケンス」と、発行ライン判定部４３と確認コマンド生成部４４による「Ｄ１−Ｄ３端子判定シーケンス」が実行されて、異常端子の特定とともに、スレーブ回路のタイプ判定も行われる。
【００７５】
図９は、異常端子判定シーケンスにおける動作手順を示すフローチャートである。
【００７６】
異常端子判定シーケンスが開始されると、コマンド生成部４２によって、Ｄ０端子を用いた「Ｓｉｎｇｌｅ」タイプの書込みを指示する通常のコマンドが生成され、送信データとして値「０ｘＦ０（１６進数表記）」が指定される（ステップＳ３０１）。その後、データ送受信部４１によるデータ送信（即ちスレーブ回路５０への書込み）の完了待ちとなる（ステップＳ３０２）。
【００７７】
書込みが完了するとコマンド生成部４２によって「Ｑｕａｄ」タイプの読出しを指示する通常のコマンドが生成され（ステップＳ３０３）、データ送受信部４１によるデータ受信（即ちスレーブ回路５０からの読出し）の完了待ちとなる（ステップＳ３０４）。
【００７８】
このように異常端子判定シーケンスで通常通信によるデータの送受信が行われている間に、並行して、「Ｄ１−Ｄ３端子判定シーケンス」が実行される。
【００７９】
図１０は、Ｄ１−Ｄ３端子判定シーケンスにおける動作手順を示すフローチャートである。
【００８０】
Ｄ１−Ｄ３端子判定シーケンスの開始に当たって、発行ライン判定部４３により、図９のステップＳ３０１で生成されたコマンドで指定されている通信端子がＤ０端子のみであることが判定される。そして、Ｄ１−Ｄ３端子判定シーケンスでは、Ｄ１端子からＤ３端子までの３本の通信端子について、図９のステップＳ３０１〜ステップＳ３０４における送受信と並行して、以下説明する手順で異常確認が行われる。
【００８１】
先ず、発行ライン判定部４３の指示に従ってセレクタ４６によりＤ１端子が選択され、確認コマンド生成部４４によってＤ１端子に確認コマンドが発行される（ステップＳ４０１）。そして、確認コマンド生成部４４により、Ｄ１端子から確認応答が返信されてきたか否かが判定され（ステップＳ４０２）、確認応答がない場合（ステップＳ４０２；Ｎ）は、Ｄ１端子は異常と判断される（ステップＳ４０３）。このように確認応答が用いられることにより、通信端子が異常であるか正常であるかが、単純な処理で正確に判定される。
【００８２】
次に、発行ライン判定部４３の指示に従ってセレクタ４６によりＤ２端子が選択され、確認コマンド生成部４４によってＤ２端子に確認コマンドが発行される（ステップＳ４０４）。そして、確認コマンド生成部４４により、Ｄ２端子から確認応答が返信されてきたか否かが判定され（ステップＳ４０５）、確認応答がない場合（ステップＳ４０５；Ｎ）は、Ｄ２端子は異常と判断される（ステップＳ４０６）。
【００８３】
次に、発行ライン判定部４３の指示に従ってセレクタ４６によりＤ３端子が選択され、確認コマンド生成部４４によってＤ３端子に確認コマンドが発行される（ステップＳ４０７）。そして、確認コマンド生成部４４により、Ｄ３端子から確認応答が返信されてきたか否かが判定され（ステップＳ４０８）、確認応答がない場合（ステップＳ４０８；Ｎ）は、Ｄ３端子は異常と判断される（ステップＳ４０９）。
【００８４】
Ｄ１−Ｄ３端子判定シーケンスで得られた各通信端子の異常・正常の判定結果は、異常端子判定シーケンスで用いられるためにコマンド生成部４２へと送られる。
【００８５】
図１１は、Ｄ１−Ｄ３端子判定シーケンスにおける動作タイミングの例を示すタイミングチャートである。
【００８６】
図１１には、上述したクロック信号ＣＬＫとチップセレクト信号ＣＳが示されており、更に、Ｄ０端子からＤ３端子のそれぞれにおける信号Ｄａｔａ０、Ｄａｔａ１、Ｄａｔａ２、Ｄａｔａ３が示されている。
【００８７】
Ｄ０端子では、マスタ回路４０のコマンド生成部４２およびデータ送受信部４１による通常の通信におけるコマンド６１と、読み書きのアドレス６２と、データ６３がやり取りされる。ここに示す例では、Ｄ０端子を用いた「Ｓｉｎｇｌｅ」タイプのコマンドが用いられているので、Ｄ１端子からＤ３端子までは通常の通信には用いられていない。このため、Ｄ１端子からＤ３端子までの３つの通信端子では、Ｄ０端子におけるコマンド６１、アドレス６２、およびデータ６３のやり取りと並行して、確認コマンド６５と確認応答６６のやり取りが行われている。このように、通信端子の異常確認用のコマンドや応答が通常の通信と並行して行われることにより、確認時間を余分に用意する必要が無く、効率がよい。
【００８８】
以下、図９に戻って説明を続ける。
【００８９】
図９のステップＳ３０１〜ステップＳ３０４における送受信が完了すると、Ｄ１−Ｄ３端子判定シーケンスで得られた各通信端子の異常・正常の判定結果がコマンド生成部４２によって取得され、その判定結果が、Ｄ１端子からＤ３端子までの３本の通信端子すべてについて異常を表しているか否かが判定される（ステップＳ３０５）。そして、少なくとも１つの通信端子について正常判定が得られている場合（ステップＳ３０５；Ｎ）は、スレーブ回路が図８に示すタイプのスレーブ回路５０であることが分かる。この場合は、Ｄ１−Ｄ３端子判定シーケンスで判定されていないＤ０端子について正常か異常かを確認するために、上記ステップＳ１０４で得られた読出しデータが値「０ｘＦＦ（１６進数表記）」若しくは値「０ｘ００（１６進数表記）」であるかが判定される（ステップＳ３０６）。そして、読出しデータが値「０ｘＦＦ（１６進数表記）」でも値「０ｘ００（１６進数表記）」でもなかった場合（ステップＳ３０６；Ｎ）は、Ｄ０端子は正常と考えられるので、Ｄ１−Ｄ３端子判定シーケンスで異常と判定された通信端子を除いた通信端子を用いるコマンドが上記第１実施形態と同様に選択される（ステップＳ３０７）。この結果、一部の通信端子が異常であっても正常な通信端子によって通信が継続されることとなる。
【００９０】
一方、読出しデータが値「０ｘＦＦ（１６進数表記）」若しくは値「０ｘ００（１６進数表記）」であった場合（ステップＳ３０６；Ｙ）には、Ｄ０端子も異常と判断される（ステップＳ３０８）。この結果、Ｄ１−Ｄ３端子判定シーケンスで異常と判定された通信端子とＤ０端子を除いた通信端子を用いるコマンドがステップＳ３０７で選択される。
【００９１】
Ｄ１−Ｄ３端子判定シーケンスで得られた各通信端子の異常・正常の判定結果が、Ｄ１端子からＤ３端子までの３本の通信端子すべてについて異常を表している場合は（ステップＳ３０５；Ｙ）、スレーブ回路が確認応答部５３を持たない従来デバイスである可能性がある。そこで、上記ステップＳ３０４で得られた読出しデータが値「０ｘＦ０（１６進数表記）」であるかが判定される（ステップＳ３０９）。読出しデータが値「０ｘＦ０（１６進数表記）」である場合（ステップＳ３０９；Ｙ）は、書込みデータと同じ読出しデータが得られたことになる。そこで、スレーブ回路が確認応答部５３を持たない従来デバイスであり、かつ、図２に示す全ての通常コマンドが使用可能と決定される。
【００９２】
一方、読出しデータが値「０ｘＦ０（１６進数表記）」でなかった場合（ステップＳ３０９；Ｎ）は、読出しデータが値「０ｘ３０（図9も）（１６進数表記）」若しくは値「０ｘＦＣ（図9も）（１６進数表記）」であるかが判定される（ステップＳ３１１）。そして、読出しデータが値「０ｘ３０（１６進数表記）」若しくは値「０ｘＦＣ（１６進数表記）」である場合（ステップＳ３１１；Ｙ）は、スレーブ回路が確認応答部５３を持たない従来デバイスであり、かつＤ２端子もしくはＤ３端子が異常であると判断され、「Ｄｕａｌ」タイプと「Ｓｉｎｇｌｅ」タイプのコマンドのみが使用可能と決定される（ステップＳ３１２）。なお、具体的なコマンドは、異常な通信端子に応じて第１実施形態と同様に決定されるがここでは詳細説明は省略する。
【００９３】
読出しデータが値「０ｘ３０（１６進数表記）」と値「０ｘＦＣ（１６進数表記）」のいずれでもなかった場合には、正常な通信端子が判断できないため、基板を交換するべき旨のエラー通知が確認コマンド生成部４４から出力される（ステップＳ３１３）。
【００９４】
以上説明した異常端子判定シーケンスとＤ１−Ｄ３端子判定シーケンスが一度実行されると、異常端子とスレーブ回路のタイプが特定されるので、スレーブ回路のタイプが既存のタイプであった場合は、以後は異常端子判定シーケンスとＤ１−Ｄ３端子判定シーケンスを実行する必要は無い。スレーブ回路のタイプが図８に示すタイプのスレーブ回路５０であった場合には、異常端子判定シーケンスとＤ１−Ｄ３端子判定シーケンスを一定周期で繰り返し実行することによって通信端子の経時的な故障が監視される。
【符号の説明】
【００９５】
１……通信システム、１０……マスタ回路、１１……コマンド生成部、１２……ビット配列変更部、１３……異常端子特定部、１４……通信端子、２０……スレーブ回路、２１……コマンド／アドレス判定部、２２……ビット配列識別部、４０……マスタ回路、４１……データ送受信部、４２……コマンド生成部、４３……発行ライン判定部、４４……確認コマンド生成部、４５……複数の通信端子、５０……スレーブ回路、５１……データ送受信部、５２……通常コマンド検出部、５３……確認応答部、
【図１】
2017175243.tif 000003
【図２】
2017175243.tif 000004
【図３】
2017175243.tif 000005
【図４】
2017175243.tif 000006
【図５】
2017175243.tif 000007
【図６】
2017175243.tif 000008
【図７】
2017175243.tif 000009
【図８】
2017175243.tif 000010
【図９】
2017175243.tif 000011
【図１０】
2017175243.tif 000012
【図１１】
2017175243.tif 000013