(57)【要約】【課題】簡易な構成でありながら、通信エラーを確実に検出できる通信システム及び通信装置を実現する。【解決手段】スレーブ装置１０２側に、機能レジスタ１２３とは別に、マスタ装置１０１から送受信データＳ１として受信した送信データＳ３がそのまま書き込まれるミラーレジスタ１２４を設け、マスタ装置１０１側で、スレーブ装置１０２に送信した送信データＳ３と、ミラーレジスタ１２３から読み出されて返送されてくる送信データＳ３である受信データＳ６とを比較することで、通信エラーが発生しているかどうかを検出するようにした。これにより、簡易な構成でありながら、通信エラーを確実に検出できる。【選択図】図５
2016111672.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信装置と第２の通信装置との間でシリアル通信する通信方法であって、
前記第１の通信装置が、第２の通信装置へ送信する送信データを保持するとともに、当該送信データを１ビットずつ前記第２の通信装置へ送信し、
前記第２の通信装置が、前記第１の通信装置から送信されてくる前記送信データを１ビットずつ受信し、受信した送信データをそのまま記憶部に書き込み、当該記憶部に書き込まれた送信データを読み出し、返送データとして１ビットずつ前記第１の通信装置へ返送し、
前記第１の通信装置が、前記第２の通信装置から返送されてくる返送データを１ビットずつ受信し、保持している前記送信データと受信した前記返送データとを比較することで通信エラーの検出を行う
ことを特徴とする通信方法。
【請求項２】
第１の通信装置と第２の通信装置との間でシリアル通信する通信方法であって、
前記第１の通信装置が、前記第２の通信装置に送信する送信データを保持するとともに、当該送信データを転送クロックに同期させて１ビットずつ前記第２の通信装置へ送信し、
前記第２の通信装置が、前記第１の通信装置から送信されてくる前記送信データを前記転送クロックに同期させて１ビットずつ受信して取り込み、取り込んだ送信データを当該送信データを取り込んだときの前記転送クロックの変化タイミングより所定回数後に発生した前記転送クロックの変化タイミングに同期させて１ビットずつ返送データとして前記第１の通信装置へ返送し、
前記第１の通信装置が、前記第２の通信装置から返送されてくる返送データを前記転送クロックに同期させて１ビットずつ受信し、保持している前記送信データと受信した前記返送データとを前記転送クロックの変化タイミングに基づき前記所定回数ずらして比較することで通信エラーの検出を行う
ことを特徴とする通信方法。
【請求項３】
第１の通信装置と第２の通信装置とを有し、
前記第１の通信装置は、
前記第２の通信装置へ送信する送信データを保持するとともに、当該送信データを１ビットずつ前記第２の通信装置へ送信し、さらに、前記第２の通信装置から返送されてくる返送データを１ビットずつ受信し、保持している前記送信データと受信した前記返送データとを比較することで通信エラーの検出を行い、
前記第２の通信装置は、
前記第１の通信装置から送信されてくる前記送信データを１ビットずつ受信し、受信した送信データをそのまま記憶部に書き込み、当該記憶部に書き込まれた送信データを読み出し、前記返送データとして１ビットずつ前記第１の通信装置へ返送する
ことを特徴とする通信システム。
【請求項４】
前記第１の通信装置は、
前記送信データと前記返送データとを比較して、前記送信データと前記返送データとが一致する場合に通信エラー無しと判断する一方で、前記送信データと前記返送データとが不一致の場合に通信エラー有りと判断し、通信エラー有りと判断した場合には、前記送信データを、再度、前記第２の通信装置に送信する
ことを特徴とする請求項３に記載の通信システム。
【請求項５】
前記第１の通信装置と前記第２の通信装置は、当該第１の通信装置と当該第２の通信装置との間でデータを送受信する為の送受信信号線と、データの送受信のタイミングを同期する為の転送クロックを前記第１の通信装置が前記第２の通信装置へ送信する為のクロック信号線との２つの信号線で接続されている
ことを特徴とする請求項３又は４に記載の通信システム。
【請求項６】
前記第１の通信装置は、
前記第２の通信装置に設けられた第１のレジスタにデータを書き込む為の、当該第１のレジスタのアドレスと当該第１のレジスタに書き込むライトデータとで構成される前記送信データを保持するとともに、当該送信データを前記第２の通信装置に送信し、
前記第２の通信装置は、前記第１のレジスタにくわえて第２のレジスタを有し、前記第１の通信装置から送信されてくる前記送信データに基づいて、前記第１のレジスタにデータを書き込むとともに、当該送信データをそのまま前記第２のレジスタに書き込み、前記第２のレジスタへの書き込みが完了した後、前記第２のレジスタに書き込まれた送信データを読み出し、前記返送データとして前記第１の通信装置へ返送する
ことを特徴とする請求項３乃至５のいずれかに記載の通信システム。
【請求項７】
前記ライトデータは、
前記第１のレジスタのどのビットを書き換えるのかを示す書換情報と、当該書換情報により指定されたビットを書き換える為の値とで構成される
ことを特徴とする請求項６に記載の通信システム。
【請求項８】
第１の通信装置と第２の通信装置とを有し、
前記第１の通信装置と第２の通信装置とが、第１の通信装置が第２の通信装置へシリアルデータを送信する為の送信信号線と、第１の通信装置が第２の通信装置からシリアルデータを受信する為の受信信号線と、シリアルデータの送受信のタイミングを同期する為の転送クロックを前記第１の通信装置が前記第２の通信装置へ送信する為のクロック信号線との３つの信号線で接続され、
前記第１の通信装置は、
前記転送クロックに同期させてシリアルデータでなる送信データを１ビットずつ前記第２の通信装置へ前記送信信号線を介して送信するとともに、当該送信データを保持し、さらに前記第２の通信装置から前記受信信号線を介して返送されてくるシリアルデータでなる返送データを前記転送クロックに同期させて１ビットずつ受信し、保持している前記送信データと受信した前記返送データとを前記転送クロックの変化タイミングに基づき所定回数ずらして比較することで通信エラーの検出を行い、
前記第２の通信装置は、
前記第１の通信装置から前記送信信号線を介して送信されてくる前記送信データを前記クロック信号線を介して送信されてくる前記転送クロックに同期させて１ビットずつ受信して取り込み、取り込んだ送信データを当該送信データを取り込んだときの前記転送クロックの変化タイミングより前記所定回数後に発生した前記転送クロックの変化タイミングに同期させて前記返送データとして前記第１の通信装置へ返送する
ことを特徴とする通信システム。
【請求項９】
前記第１の通信装置は、
前記送信データと前記返送データとを比較して、前記送信データと前記返送データとが一致する場合に通信エラー無しと判断する一方で、前記送信データと前記返送データとが不一致の場合に通信エラー有りと判断し、通信エラー有りと判断した場合には、前記送信データを、再度、前記第２の通信装置に送信する
ことを特徴とする請求項８に記載の通信システム。
【請求項１０】
前記第１の通信装置は、
前記転送クロックのクロックパルスに同期させて前記送信データを１ビットずつ前記第２の通信装置へ送信するとともに、当該送信データを保持し、さらに当該送信データに続けて少なくとも１ビット以上の無効データを前記転送クロックのクロックパルスに同期させて前記送信信号線を介して１ビットずつ送信し、前記送信データと前記無効データを送信しつつ、前記送信データの各ビットを送信したタイミングから前記無効データのビット数と同数のクロックパルス分遅れたタイミングで前記第２の通信装置から返送されてくる前記返送データの各ビットを順番に受信し、前記送信データの各ビットと前記返送データの各ビットとを比較することで通信エラーの検出を行い、
前記第２の通信装置は、
前記第１の通信装置から送信されてくる前記送信データを前記転送クロックのクロックパルスに同期させて１ビットずつ受信して取り込み、さらに当該送信データに続けて送信されてくる前記無効データを前記転送クロックのクロックパルスに同期させて１ビットずつ受信し、前記送信データと前記無効データを受信しつつ、取り込んだ前記送信データの各ビットを、受信したタイミングから前記無効データのビット数と同数のクロックパルス分遅れたタイミングで順番に前記返送データとして前記第１の通信装置へ返送する
ことを特徴とする請求項８又は９に記載の通信システム。
【請求項１１】
前記第１の通信装置から前記第２の通信装置３に送信される転送クロックは、前記送信データのビット数と前記無効データのビット数を足した数と同数のクロックパルスでなる
ことを特徴とする請求項１０に記載の通信システム。
【請求項１２】
前記第２の通信装置は、
１ビットずつ受信して取り込んだ前記送信データを１ビットずつラッチして、前記転送クロックに同期させて１ビットずつ返送データとして出力するバッファを有している
ことを特徴とする請求項８乃至１１のいずれかに記載の通信システム。
【請求項１３】
前記無効データは、１ビット分のデータである
ことを特徴とする請求項８乃至１２のいずれかに記載の通信システム。
【請求項１４】
前記第１の通信装置は、
前記通信エラーの検出結果を示すエラー有無データを、前記送信信号線を介して前記第２の通信装置に送信する
ことを特徴とする請求項８乃至１３のいずれかに記載の通信システム。
【請求項１５】
通信相手となる相手側装置と接続され、
転送クロックに同期させて送信データを１ビットずつ前記相手側装置へ送信する送信制御部と、
前記相手側装置から返送されてくる、前記相手側装置が受信してそのまま記憶部に書き込んだ後に当該記憶部から読み出された送信データでなる返送データを受信する受信制御部と、
前記送信制御部から供給される前記送信データと、前記受信制御部から供給される前記返送データとを比較することで通信エラーの検出を行うエラー検出部と
を有することを特徴とする通信装置。
【請求項１６】
シリアルデータを送信する為の送信信号線と、シリアルデータを受信する為の受信信号線と、転送クロックを送信する為のクロック信号線との３つの信号線で通信相手となる相手側装置と接続され、
前記転送クロックに同期させてシリアルデータでなる送信データを１ビットずつ前記相手側装置へ前記送信信号線を介して送信する送信制御部と、
前記相手側装置から前記受信信号線を介して返送されてくる、前記相手側装置が受信して取り込んだ送信データでなる返送データを前記転送クロックに同期させて１ビットずつ受信する受信制御部と、
前記送信制御部から供給される前記送信データと、前記受信制御部から供給される前記返送データとを前記転送クロックの変化タイミングに基づき所定回数ずらして比較することで通信エラーの検出を行うエラー検出部と
を有することを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信方法、通信システム及び通信装置に関するものであり、シリアル通信を行う通信方法、通信システム及び通信装置に適用して好適なものである。
【背景技術】
【０００２】
従来、シリアル通信を行う場合の通信エラーの検出方法として、例えば、パリティチェックやＣＲＣ（Cyclic Redundancy Check）がある（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２６９９０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
パリティチェックは、簡易な回路構成で通信エラーを検出できる方法であるが、データ内の複数ビットに誤りが生じていると、それらが相殺されて正常なデータと誤認識してしまうという問題があった。一方、ＣＲＣは、パリティチェックよりもエラー検出精度が高い反面、パリティチェックよりも複雑な演算を行う為、パリティチェックを用いる場合と比べて、通信装置の回路構成（特にデータ受信側の回路構成）が複雑になるという問題があった。
【０００５】
本発明は以上の点を考慮したものであり、簡易な構成でありながら、通信エラーを確実に検出できる通信システム及び通信装置を提案しようとするものである。
【課題を解決するための手段】
【０００６】
本発明は、第１の通信装置と第２の通信装置との間でシリアル通信する通信方法において、前記第１の通信装置が、第２の通信装置へ送信する送信データを保持するとともに、当該送信データを１ビットずつ前記第２の通信装置へ送信し、前記第２の通信装置が、前記第１の通信装置から送信されてくる前記送信データを１ビットずつ受信し、受信した送信データをそのまま記憶部に書き込み、当該記憶部に書き込まれた送信データを読み出し、返送データとして１ビットずつ前記第１の通信装置へ返送し、前記第１の通信装置が、前記第２の通信装置から返送されてくる返送データを１ビットずつ受信し、保持している前記送信データと受信した前記返送データとを比較することで通信エラーの検出を行うようにした。
【０００７】
また、本発明は、前記第１の通信装置が、前記第２の通信装置に送信する送信データを保持するとともに、当該送信データを転送クロックに同期させて１ビットずつ前記第２の通信装置へ送信し、前記第２の通信装置が、前記第１の通信装置から送信されてくる前記送信データを前記転送クロックに同期させて１ビットずつ受信して取り込み、取り込んだ送信データを当該送信データを取り込んだときの前記転送クロックの変化タイミングより前記所定回数後に発生した前記転送クロックの変化タイミングに同期させて１ビットずつ返送データとして前記第１の通信装置へ返送し、前記第１の通信装置が、前記第２の通信装置から返送されてくる返送データを前記転送クロックに同期させて１ビットずつ受信し、保持している前記送信データと受信した前記返送データとを前記転送クロックの変化タイミングに基づき所定回数ずらして比較することで通信エラーの検出を行うようにした。
【発明の効果】
【０００８】
これにより、本発明は、受信側となる第２の通信装置の回路構成を、例えばＣＲＣを用いる場合よりも簡略化でき、そのうえで、送信側となる第１の通信装置側で、送信データと返送データとを比較することにより通信エラーを確実に検出することができる。かくして、簡易な構造でありながら、通信エラーを確実に検出できる通信方法、通信システム及び通信装置を実現できる。
【図面の簡単な説明】
【０００９】
【図１】第１実施例における通信システムの構成を示すブロック図である。
【図２】第１実施例におけるデータ比較部の構成を示す構成図である。
【図３】第１実施例におけるデータ転送処理手順を示すフローチャートである。
【図４】第１実施例におけるデータの送信及び返送のタイミングを示すタイミングチャートである。
【図５】第２実施例における通信システムの構成を示すブロック図である。
【図６】第２実施例におけるライト時のデータの送受信のタイミングを示すタイミングチャートである。
【図７】第２実施例におけるライト処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、発明を実施するための形態（以下、これを実施例と呼ぶ）について、図面を用いて詳細に説明する。
【００１１】
［１．第１実施例］
［１−１．通信システムの構成］
図１に、通信システム１の構成を示す。この通信システム１は、例えば、プリンタなどの画像形成装置に組み込まれ、画像形成装置に実装されたデバイス間でシリアル通信を行う為のシステムである。通信システム１は、シリアルデータの送信側であるマスタ装置２と、シリアルデータの受信側であるスレーブ装置３と、これらを接続する３本の信号線４、５、６とで構成される。マスタ装置２は、例えば、画像形成装置の画像形成プロセスを実行するデバイスであり、スレーブ装置３は、例えば、画像形成装置の駆動系／機構系を制御するデバイスである。
【００１２】
信号線４は、マスタ装置２がスレーブ装置３へシリアルデータを送信する為のラインであり、以下、送信信号線４と呼ぶ。信号線５は、マスタ装置２がスレーブ装置３からシリアルデータを受信する為のラインであり、以下、受信信号線５と呼ぶ。信号線６は、シリアルデータの送受信のタイミングを同期させる為の転送クロックをマスタ装置２がスレーブ装置３へ送信する為のラインであり、以下、クロック信号線６と呼ぶ。
【００１３】
マスタ装置２は、マイクロプロセッサ（以下、ＭＰＵと呼ぶ）１０と、送信制御部１１と、受信制御部１２と、データ比較部１３とを有している。ＭＰＵ１０は、スレーブ装置３へのデータのライト（書き込み）及びスレーブ装置３からのデータのリード（読み出し）を制御する。
【００１４】
ＭＰＵ１０は、スレーブ装置３へデータをライトする場合、データのライト先となるレジスタを指定する為のアドレスと、データをライトする旨を示す制御情報とでなる８ビットのパラレルデータと、指定のレジスタにライトするデータでなる８ビットのパラレルデータとを用意する。
【００１５】
ＭＰＵ１０は、まずアドレスと制御情報（ライト）とでなるパラレルデータを送信制御部１１に送る。送信制御部１１は、このパラレルデータを受け取ると、このパラレルデータを送信データとしてデータ比較部１３に送るとともに、シリアルデータに変換し、転送クロックに同期させて１ビットずつ送信信号線４を介してスレーブ装置３に送信する。さらに、このとき送信制御部１１は、転送クロックをクロック信号線６を介してスレーブ装置３に送信するとともに、受信制御部１２にも送る。その後、送信制御部１１は、シリアルデータを送信し終えると、転送完了通知信号をＭＰＵ１０に送る。
【００１６】
ＭＰＵ１０は、次に、指定のレジスタにライトするデータでなるパラレルデータを送信制御部１１に送る。送信制御部１１は、このパラレルデータを受け取ると、このパラレルデータを送信データとしてデータ比較部１３に送るとともに、シリアルデータに変換し、転送クロックに同期させて１ビットずつ送信信号線４を介してスレーブ装置３に送信する。また、このとき、送信制御部１１は、転送クロックをクロック信号線６を介してスレーブ装置３に送信するとともに、受信制御部１２にも送る。その後、送信制御部１１は、シリアルデータを送信し終えると、転送完了通知信号をＭＰＵ１０に送る。
【００１７】
このように、スレーブ装置３へデータをライトする場合、マスタ装置２は、まず、アドレスと制御情報（ライト）とでなるシリアルデータをスレーブ装置３へ転送して、その後、ライトするデータでなるシリアルデータをスレーブ装置３へ転送するようになっている。
【００１８】
受信制御部１２は、スレーブ装置３から受信信号線５を介して返送されるシリアルデータを転送クロックに同期させて１ビットずつ受信して取り込み、パラレルデータに変換して返送データとしてデータ比較部１３に送る。このとき、受信制御部１２には、まず、スレーブ装置３が受信して取り込んだアドレスと制御情報とでなるシリアルデータがスレーブ装置３から返送され、つづけて、スレーブ装置３が受信して取り込んだライトするデータでなるシリアルデータがスレーブ装置３から返送されてくる。ゆえに、受信制御部１２は、これら２つのシリアルデータを、順にパラレルデータに変換してデータ比較部１３に送る。
【００１９】
データ比較部１３は、送信制御部１１から受け取ったパラレルデータ（すなわちスレーブ装置３に送信した送信データ）と、受信制御部１２から受け取ったパラレルデータ（すなわちスレーブ装置３から返送された返送データ）とを比較して、比較結果を示すエラー信号をＭＰＵ１０に送る。具体的には、データ比較部１３は、まず送信制御部１１から受け取ったアドレスと制御情報（ライト）とでなるパラレルデータと、受信制御部１２から受け取ったアドレスと制御情報（ライト）とでなるパラレルデータとを比較してエラー信号をＭＰＵ１０に送り、その後、送信制御部１１から受け取ったライトするデータでなるパラレルデータと、受信制御部１２から受け取ったライトするデータでなるパラレルデータとを比較してエラー信号をＭＰＵ１０に送る。
【００２０】
また、ＭＰＵ１０は、スレーブ装置３からデータをリードする場合、データのリード先となるレジスタを指定する為のアドレスと、データをリードする旨を示す制御情報とでなる８ビットのパラレルデータを用意して、これを送信制御部１１に送る。
【００２１】
送信制御部１１は、このパラレルデータを受け取ると、このパラレルデータを送信データとしてデータ比較部１３に送るとともに、シリアルデータに変換し、転送クロックに同期させて１ビットずつ送信信号線４を介してスレーブ装置３に送信する。さらに、このとき送信制御部１１は、転送クロックをクロック信号線６を介してスレーブ装置３に送信するとともに、受信制御部１２にも送る。その後、送信制御部１１は、シリアルデータを送信し終えると、転送完了通知信号をＭＰＵ１０に送る。
【００２２】
受信制御部１２は、スレーブ装置３から受信信号線５を介して送信されてくるシリアルデータを転送クロックに同期させて１ビットずつ受信して取り込み、パラレルデータに変換する。このとき、受信制御部１２には、まず、スレーブ装置３が受信して取り込んだアドレスと制御情報（リード）とでなるシリアルデータがスレーブ装置３から返送され、つづけて、スレーブ装置３がリードしたデータでなるシリアルデータがスレーブ装置３から送られてくる。受信制御部１２は、最初に返送されてくるアドレスと制御情報（リード）とでなるシリアルデータについては、パラレルデータに変換した後、返送データとしてデータ比較部１３に送り、次に送られてくるリードしたデータでなるシリアルデータについては、パラレルデータに変換した後、受信データとしてＭＰＵ１０に送る。
【００２３】
データ比較部１３は、送信制御部１１から受け取った送信データ（アドレスと制御情報（リード）とでなるパラレルデータ）と、受信制御部１２から受け取った返送データ（アドレスと制御情報（リード）とでなるパラレルデータ）とを比較してエラー信号をＭＰＵ１０に送る。
【００２４】
一方、スレーブ装置３は、受信制御部２０と、送信バッファ２１と、送信制御部２２と、レジスタ部２３と、切替器２４を有している。受信制御部２０は、マスタ装置２から送信信号線４を介して送信されてくるシリアルデータを、クロック信号線６を介して送信されてくる転送クロックに同期させて１ビットずつ受信して取り込み、このシリアルデータを１ビットずつ送信バッファ２１に送るとともに、パラレルデータに変換してレジスタ部２３に送る。尚、データをライトする場合、受信制御部２０には、まずアドレスと制御情報（ライト）とでなるシリアルデータが送られ、その後、ライトするデータでなるシリアルデータが送られてくる。一方で、データをリードする場合、受信制御部２０には、アドレスと制御情報（リード）とでなるシリアルデータのみが送られてくる。受信制御部２０は、これらを１ビットずつ取り込み、送信バッファ２１に送るとともに、パラレルデータに変換してレジスタ部２３に送るようになっている。
【００２５】
送信バッファ２１は、１ビットの容量でなり、受信制御部２０から送られてくるシリアルデータを１ビットずつラッチして、転送クロックに同期させて１ビットずつ受信信号線５を介してマスタ装置２に送信する。
【００２６】
レジスタ部２３は、アドレスと制御情報とでなるパラレルデータを参照して、制御情報にデータをライトする旨が示されていれば、次に送られてくるパラレルデータを、指定のアドレスにライトする。このようにして指定のアドレスにライトされたパラレルデータは、スレーブ装置３内部の様々なモジュール（図示せず）の制御に使用される。また一方で、制御情報にデータをリードする旨が示されていれば、レジスタ部２３は、指定のレジスタからデータをリードして、これを送信制御部２２に送る。
【００２７】
送信制御部２２は、レジスタ部２３から、リードしたデータでなる８ビットのパラレルデータが送られてくると、切替器２４を制御して、受信信号線５との接続対象を送信バッファ２１から自身に切り替えた後、このパラレルデータをシリアルデータに変換し、クロック信号線６を介して送信されてくる転送クロックに同期させて１ビットずつ受信信号線５を介してスレーブ装置３に送信する。送信を完了すると、送信制御部２２は、切替器２４を制御して、受信信号線５との接続対象を送信バッファ２１に切り替える。
【００２８】
通信システム１は、このような構成でなり、マスタ装置２とスレーブ装置３との間でシリアル通信を行うことで、スレーブ装置３へのデータのライト及びスレーブ装置３からのデータのリードを実行する。
【００２９】
［１−２．データ比較部の構成］
ここで、データ比較部１３の構成を図２に示す。データ比較部１３は、８個のＸＯＲ回路３０と１個のＯＲ回路３１とで構成される。８個のＸＯＲ回路３０のそれぞれには、送信制御部１１から８ビットのパラレルデータでなる送信データの各ビットが入力されるとともに、受信制御部１２から８ビットのパラレルデータでなる返送データの各ビットが入力され、さらに８個のＸＯＲ回路３０のそれぞれの出力が、ＯＲ回路３１に入力されるようになっている。さらに、ＯＲ回路３１の出力は、エラー信号として、ＭＰＵ１０から読み取ることができるようになっている。
【００３０】
データ比較部１３は、このような構成でなり、送信制御部１１から入力される８ビットの送信データと、受信制御部１２から入力される８ビットの返送データとが完全に一致している場合にのみ、出力するエラー信号が『０』となり、それ以外の場合（すなわち送信データと返送データとが不一致の場合）は、出力するエラー信号が『１』となるように動作する。よって、データ比較部１３から出力されるエラー信号が『０』であれば、送信データと返送データとが完全に一致していること、つまり、マスタ装置２から送信された元データが、そのままスレーブ装置３によって受信されて取り込まれたことを意味する。一方で、エラー信号が『１』であれば、送信データと返送データとが不一致であること、つまり、マスタ装置２から送信された送信データが、通信エラーによりビット誤りが生じた状態で、スレーブ装置３によって受信されて取り込まれたことを意味する。
【００３１】
ＭＰＵ１０は、このエラー信号から、スレーブ装置３へ送信したデータが正常にスレーブ装置３へと転送されて取り込まれたかどうか、すなわち正常にデータの転送が完了したかどうかを判断することができる。
【００３２】
［１−３．データ転送処理手順］
次に、マスタ装置２からスレーブ装置３へデータを転送するときの処理手順（これをデータ転送処理手順と呼ぶ）について、図３に示すフローチャートを用いて詳しく説明する。
【００３３】
まずマスタ装置２のＭＰＵ１０が、スレーブ装置３に転送する８ビットのパラレルデータを用意する。このパラレルデータとしては、上述したように、アドレスと制御情報（ライト）とでなるパラレルデータと、ライトするデータでなるパラレルデータと、アドレスと制御情報（リード）とでなるパラレルデータの３種類が存在する。そして、最初のステップＳＰ１で、ＭＰＵ１０がこのパラレルデータを送信制御部１１に書き込み、その後、送信制御部１１がこのパラレルデータをシリアルデータに変換し、転送クロックに同期させて最上位ビット（ｂ７）からスレーブ装置３への転送を開始する。また、このとき送信制御部１１に書き込まれたパラレルデータは、データ比較の為に、送信制御部１１から受信制御部１２にも送られる。つづくステップＳＰ２でＭＰＵ１０は、送信制御部１１によるシリアルデータの転送が完了するのを待ち受け、送信制御部１１から転送完了通知信号を受け取ると、この時点でシリアルデータの転送が完了したと判断する。
【００３４】
ステップＳＰ１とステップＳＰ２とで行われるマスタ装置２からスレーブ装置３へのシリアルデータの転送は、マスタ装置２のハードウェアによって自動的に行われる。具体的に説明すると、マスタ装置２は、送信制御部１１によって、図４に示すように、送信データとしてのシリアルデータを転送クロックのクロックパルスの変化タイミングである立ち下りに同期させて最上位ビット（ｂ７）から順に１ビットずつ転送していき、最下位ビット（ｂ０）の転送後、追加で１ビットの無効データを転送する。この無効データはスレーブ装置３には取り込まれないダミーデータであり、この為、『１』でも『０』でもよく、本実施例では例えば『１』とする。尚、この無効データに対して、ｂ７〜ｂ０の８ビットの送信データは、スレーブ装置３に取り込まれる有効データである。つまり、マスタ装置２は、送信制御部１１によって、送信データ（有効データ）としての８ビットと、無効データ（ダミーデータ）としての１ビットとの計９ビットのシリアルデータを、９クロックパルスの転送クロックに同期させて転送する。このようにして、マスタ装置２によるシリアルデータの転送が行われる。
【００３５】
一方、マスタ装置２から転送されてくるシリアルデータの受信と返送は、スレーブ装置３のハードウェアによって自動的に行われる。具体的に説明すると、スレーブ装置３は、受信制御部２０によって、マスタ装置２から転送されてくるシリアルデータを、転送クロックの変化タイミングである立ち下りに同期させて順に１ビットずつ受信して取り込みながら、取り込んだシリアルデータを送信バッファ２１によって１ビットずつ順にラッチしていき、シリアルデータの各ビットを受信タイミングから１クロックパルス分遅れたタイミングで返送データとしてマスタ装置２に返送する。
【００３６】
このとき、受信制御部２０は、マスタ装置２から、９ビットのシリアルデータを受信することになるが、最後の９ビット目は無効データである為、取り込まない。一方で、送信バッファ２１には、８ビットの送信データ（有効データ）と１ビットの無効データでなる９ビット全てが順に送られ、各ビットが順にラッチされる。
【００３７】
送信バッファ２１からは、各ビットを受信タイミングから１クロックパルス分遅れたタイミングで返送する為、転送クロックの２番目のクロックパルスから９番目のクロックパルスまでの８クロックパルスで、受信した９ビットのうち、最後の無効データでなる１ビットを除く残りの８ビット（ｂ７〜ｂ０）がマスタ装置２に返送データとして返送されることになる。最後の無効データは、そのまま送信バッファ２１に残され、次の転送時の最初のクロックパルスでマスタ装置２に返送される。
【００３８】
よって、スレーブ装置３は、前回転送時に送信バッファ２１に残された無効データとしての１ビットと、今回受信したシリアルデータの無効データを除く残りの８ビットとの計９ビットのシリアルデータを、９クロックパルスの転送クロックに同期させて返送する。このようにしてスレーブ装置３によるシリアルデータの受信及び返送が行われる。
【００３９】
マスタ装置２の受信制御部１２は、スレーブ装置３から返送されてくる９ビットのシリアルデータを転送クロックの立ち下がりに同期して順に受信するが、最初のクロックパルスで受信した先頭のビットは、上述のように無効データである為、取り込まない。よって、受信制御部１２は、２番目のクロックパルスから９番目のクロックパルスまでの８クロックパルスで取り込んだ８ビットの返送データとしてのシリアルデータをパラレルデータに変換してデータ比較部１３に送る。このように、マスタ装置２からスレーブ装置３に送信される送信データと、スレーブ装置３からマスタ装置２に返送される返送データは、無効データのビット数と同数のクロックパルス分（１クロックパルス分）ずれている為、マスタ装置２では、受信制御部１２が、受信したシリアルデータの先頭のビットを取り込まないようにして、送信データの各ビットと返送データの各ビットの位置が合うように返送データを１クロックパルス分ずらしてデータ比較部１３に送るようになっている。これにより、データ比較部１３では、送信データの各ビットと返送データの各ビットとを比較することができる。
【００４０】
また、マスタ装置２からスレーブ装置３へシリアルデータの転送を開始してから、スレーブ装置３からマスタ装置２へのシリアルデータの返送が完了するまでの処理は、８ビットの送信データを転送するのに要する８クロックパルス＋１ビットの無効データを転送するのに要する１クロックパルスの計９クロックパルスの時間で完了することになる。
【００４１】
マスタ装置２の送信制御部１１は、最後（９番目）のクロックパルス及び無効データを送出し終えると、転送完了通知信号をＭＰＵ１０へと送る。ＭＰＵ１０は、転送完了通知信号を受け取り、シリアルデータの転送が完了したと判断すると、つづくステップＳＰ３（図３）でデータ比較部１３からエラー信号を読み取り、エラー判定を行う。
【００４２】
ここで、マスタ装置２の受信制御部１２には、最後のクロックパルスを送出し終えた時点で、送信制御部１１から送られてきた送信データとしての８ビットと、受信制御部１２から送られてきた返送データとしての８ビットが書き込まれていることになり、このとき出力されるエラー信号が『１』であれば、送信データと返送データとが不一致であること、『０』であれば、送信データと返送データとが一致していることを示す。
【００４３】
よって、ＭＰＵ１０は、エラー信号が『１』であれば、通信エラーと判断して、ステップＳＰ１に戻り、再度、シリアルデータの転送を行う。一方で、エラー信号が『０』であれば、ＭＰＵ１０は、転送が正常に終了したと判断して、転送を完了する。つまり、ＭＰＵ１０は、通信エラーがなくなるまで、シリアルデータの転送を繰り返す。
【００４４】
ところで、スレーブ装置３にデータをライトする場合、マスタ装置２からスレーブ装置３へのデータの転送は、アドレスと制御情報（ライト）でなるシリアルデータの転送と、ライトするデータでなるシリアルデータの転送とがセットで行われる。したがって、例えば、アドレスと制御情報（ライト）でなるシリアルデータの転送時に通信エラーが発生した場合、マスタ装置２のＭＰＵ１０は、つづくライトするデータでなるシリアルデータの転送を一旦完了してから、再度、アドレスと制御情報（ライト）でなるシリアルデータと、ライトするデータでなるシリアルデータとを順に転送する。また、ライトするデータでなるシリアルデータの転送時に通信エラーが発生した場合、ＭＰＵ１０は、再度、アドレスと制御情報（ライト）でなるシリアルデータを転送したうえで、ライトするデータでなるシリアルデータを再転送する。
【００４５】
一方、スレーブ装置３からデータをリードする場合、スレーブ装置３によってリードされたデータが受信信号線５を介してマスタ装置２に送信される間、この受信信号線５をデータの返送に使用することはできなくなる。したがって、アドレスと制御情報（リード）でなるシリアルデータの転送時に通信エラーが発生した場合、ＭＰＵ１０は、スレーブ装置３によってリードされたデータを受信制御部１２から受け取った後、再度、アドレスと制御情報（リード）でなるシリアルデータを転送する。
【００４６】
ところで、上述したように、本実施例の通信システム１では、通信エラーがなくなるまで、マスタ装置２からスレーブ装置３へのデータの転送を繰り返す為、例えば、通信エラーが発生すると、通信エラーがなくなるまでの間、スレーブ装置３のレジスタに、ビット誤りが生じたデータ（これをエラーデータと呼ぶ）が保持される状況が起こり得る。
【００４７】
このようなエラーデータが、そのままスレーブ装置３内部のモジュールの制御に用いられると、モジュールの動作が不安定になる恐れがある。そこで、通信システム１は、モジュールを制御する為にレジスタからデータが読み出される周期よりも、十分に短い時間でデータの転送処理を行う構成となっている。
【００４８】
例えば、モジュールを制御する為にレジスタから１秒ごとにデータを読み出す必要がある場合、通信システム１は、８ビットのシリアルデータの転送から返送までの転送処理を１秒間に４回以上実行できる速度で転送処理を行う。４回以上とする理由は、スレーブ装置３にデータをライトする場合、データの転送処理を２回連続で行う為、通信エラーによる再転送を含めると、レジスタからデータが読み出される周期の間にデータの転送処理を少なくとも４回実行する必要があるからである。
【００４９】
このように動作することで、通信システム１では、通信エラーが発生しても、レジスタからエラーデータが読み出されるより先に、レジスタに正常データを上書きすることができるので、エラーデータがモジュールの制御に用いられる状況を極力回避できる。ちなみに、スレーブ装置３側で制御されるモジュールは、例えばモータやヒータなどであり、シリアル通信で実現可能な通信速度（例えば数Ｍｂｐｓ）と比べて十分長い周期で制御されるモジュールであるとする。
【００５０】
［１−４．まとめと効果］
ここまで説明したように、本実施例の通信システム１では、スレーブ装置３側に、マスタ装置２から受信して取り込んだ送信データをそのまま返送データとしてマスタ装置２に返送する回路（送信バッファ２１）を組み込み、マスタ装置２側で、スレーブ装置３に転送した送信データの各ビットとスレーブ装置３から返送されてきた返送データの各ビットとを比較する。ここで、マスタ装置２側では、送信データと返送データとが１クロックパルス分ずれている為、返送データを１クロックパルス分（クロックパルス１回分）ずらすことにより、返送データの各ビットと送信データの各ビットとを対応させたうえで送信データと返送データとを比較する。そして、送信データと返送データとが一致しない場合には、通信エラーが発生しているとマスタ装置２側で判断して、再度、マスタ装置２からスレーブ装置３へ送信データを転送するようにした。こうすることで、スレーブ装置３側では、最終的に、ビット誤りのない正常なデータを取り込むことができる。
【００５１】
また、この通信システム１では、マスタ装置２側で、送信データの各ビットと返送データの各ビットとを比較して通信エラー（ビット誤り）を検出するようにしたことにより、パリティチェックと比べて、より確実に通信エラー（ビット誤り）を検出できる。
【００５２】
さらに、スレーブ装置３側には、取り込んだデータをそのまま返送データとしてマスタ装置２に返送する回路（送信バッファ２１）が組み込まれているが、この回路は、取り込んだデータをラッチして出力するだけの簡易な回路であり、データの返送をハードウェアによって自動的に行うようになっている。ゆえに、本実施例のスレーブ装置３は、例えばＣＲＣのような演算を行う回路が組み込まれている従来のスレーブ装置と比べて簡易な構成でなり、そのうえ通信エラーを検出する為の特別な処理をソフトウェアで行う必要がなく、低コストで信頼性の高いシステムを実現できる。
【００５３】
上述のように、本実施例の通信システム１によれば、簡易な構成でありながら、通信エラーを確実に検出することができる。
【００５４】
くわえて、通信システム１では、８ビットの送信データを転送するのに必要な時間（８クロックパルス分）に、１クロックパルス分を追加しただけの時間（９クロックパルス分）で、シリアルデータの転送から返送までの転送処理を完了できるので、通信エラーを検出する為にスレーブ装置３からマスタ装置２へデータを返送する仕組みでありながら、転送処理に要する時間の増加分を最小限（１クロックパルス分のみ）に抑えることができる。
【００５５】
［２．第２実施例］
次に、第２実施例について説明する。この第２実施例は、通信エラーの検出方法が第１実施例とは異なる実施例である。
【００５６】
［２−１．通信システムの構成］
図５に、第２実施例の通信システム１００の構成を示す。この通信システム１００も、例えば、プリンタなどの画像形成装置に組み込まれ、画像形成装置に実装されたデバイス間でシリアル通信を行う為のシステムである。通信システム１００は、シリアルデータの送信側であるマスタ装置１０１と、シリアルデータの受信側であるスレーブ装置１０２と、これらを接続する２本の信号線１０３、１０４とで構成される。マスタ装置１０１は、例えば、画像形成装置の画像形成プロセスを実行するデバイスであり、スレーブ装置１０２は、例えば、画像形成装置の駆動系／機構系を制御するデバイスである。
【００５７】
信号線１０３は、マスタ装置１０１とスレーブ装置１０２との間でシリアルデータでなる送受信データＳ１を送受信する為のラインであり、以下、送受信信号線１０３と呼ぶ。信号線１０４は、送受信データＳ１の送受信のタイミングを同期させる為の転送クロックＳ２をマスタ装置１０１がスレーブ装置１０２へ送信する為のラインであり、以下、クロック信号線１０４と呼ぶ。
【００５８】
マスタ装置１０１は、ＭＰＵ１１０と、送信制御部１１１と、受信制御部１１２と、データ比較部１１３と、トライステート送信バッファ１１４と、入力バッファ１１５とを有している。
【００５９】
ＭＰＵ１１０は、スレーブ装置１０２へのデータのライト（書き込み）及びスレーブ装置１０２からのデータのリード（読み出し）を制御する。ＭＰＵ１１０は、スレーブ装置１０２へ転送すべきデータを用意して、データの転送開始及び転送完了の処理を行う。送信制御部１１１は、ＭＰＵ１１０から、転送すべきデータであるパラレルデータを受け取り、これを送信データＳ３としてデータ比較部１１３に送るとともにシリアルデータ（送受信データＳ１）に変換し、送信イネーブルＳ４を制御して転送クロックＳ２に同期させて１ビットずつ送受信信号線１０３を介してスレーブ装置１０２に送信する。さらに、このとき送信制御部１１１は、転送クロックＳ２をクロック信号線１０４を介してスレーブ装置１０２に送信するとともに、受信制御部１１２にも送る。その後、送信制御部１１１は、シリアルデータ（送受信データＳ１）を送信し終えると、転送完了を示す転送完了通知信号Ｓ５をＭＰＵ１１０に送る。
【００６０】
受信制御部１１２は、スレーブ装置１０２から送受信信号線１０３を介して送信されてくるシリアルデータ（送受信データＳ１）を転送クロックＳ２に同期させて１ビットずつ受信して取り込み、パラレルデータに変換して受信データＳ６としてデータ比較部１１３に送る。
【００６１】
データ比較部１１３は、送信制御部１１１から受け取ったパラレルデータ（すなわちスレーブ装置１０２に送信した送信データＳ３）と、受信制御部１１２から受け取ったパラレルデータ（すなわちスレーブ装置１０２から受信した受信データＳ６）とをビット毎に比較して、比較結果を示すエラー信号Ｓ７をＭＰＵ１１０に送る。
【００６２】
一方、スレーブ装置１０２は、受信制御部１２０と、送信制御部１２１と、ライトリード制御部１２２と、機能レジスタ１２３と、ミラーレジスタ１２４と、切替器１２５と、トライステート送信バッファ１２６と、入力バッファ１２７とを有している。
【００６３】
受信制御部１２０は、マスタ装置１０１から送受信信号線１０３を介して送信されてくるシリアルデータ（送受信データＳ１）を、クロック信号線１０４を介して送信されてくる転送クロックＳ２に同期させて１ビットずつ受信して取り込み、このシリアルデータ（送受信データＳ１）をパラレルデータに変換して、ライトリード制御部１２２に送るとともに、ミラーレジスタ１２４に書き込む（ライトする）。
【００６４】
送信制御部１２１は、機能レジスタ１２３又はミラーレジスタ１２４から読み出されたパラレルデータでなるレジスタデータＳ８をシリアルデータに変換し、送信イネーブルＳ９を制御してクロック信号線１０４を介して送信されてくる転送クロックＳ２に同期させて１ビットずつ送受信信号線１０３を介して送受信データＳ１としてマスタ装置１０１に送信する。
【００６５】
ライトリード制御部１２２は、選択信号Ｓ１０により切替器１２５を制御することにより、機能レジスタ１２３の出力とミラーレジスタ１２４の出力の一方を、切替器１２５から送信制御部１２１に送るレジスタデータＳ８として選択するとともに、送信制御部１２１の送信を制御する。
【００６６】
機能レジスタ１２３は、ライトリード制御部１２２によってパラレルデータの読み書き（リード／ライト）が行われる。ミラーレジスタ１２４は、受信制御部１２０によってパラレルデータの読み書き（リード／ライト）が行われる。このミラーレジスタ１２４は、常に最後に書き込まれたデータ（詳しくは後述するが機能レジスタ１２３のアドレスと機能レジスタ１２３にライトするライトデータからなるデータ）を保持するようになっている。
【００６７】
通信システム１００は、このような構成でなり、マスタ装置１０１とスレーブ装置１０２との間でシリアル通信を行うことで、スレーブ装置１０２へのデータのライト及びスレーブ装置１０２からのデータのリードを実行する。
【００６８】
［２−２．通信システムの動作］
次に、図６に示すタイミングチャートを用いて、マスタ装置１０１からスレーブ装置１０２にデータをライトするときの動作について詳しく説明する。
【００６９】
まず、前提として、スレーブ装置１０２内の機能レジスタ１２３及びミラーレジスタ１２４のアドレスは、１５ビットで表されるものとする。ここでは、一例として、機能レジスタ１２３のアドレスを『０ｘ０００１』のうちの最上位ビット［１５］を除く残りの１５ビット［１４：０］（ビット［０］〜［１４］）とし、ミラーレジスタ１２４のアドレスを『０ｘ０００２』のうちの１５ビット［１４：０］とする。
【００７０】
また、機能レジスタ１２３のデータ幅は１６ビットであり、マスタ装置１０１から機能レジスタ１２３にライトするデータ（これをライトデータと呼ぶ）としてスレーブ装置１０２に送信される１６ビットのうち、上位８ビットは下位８ビットのビットイネーブルとなっている。つまり、上位８ビットは、下位８ビットのうちのどのビットを書き換えるかを示す書換情報となっている。
【００７１】
具体的な例を挙げると、例えば、ライトデータが『０ｘ０３００』であるとする。これを２進数で表記すると、『００００００１１  ００００００００』となる。この場合、上位８ビットのビット［１：０］（ビット［０］〜［１］、ビット［０］は最下位ビット）がデータの書き換えを示す『１』であり、下位８ビットの対応するビット［１：０］が『０』であることから、このライトデータによって、機能レジスタ１２３のビット［１：０］が『０』に書き換えられる。このとき、機能レジスタ１２３のビット［７：２］（ビット［２］〜［７］）は更新されない。
【００７２】
また、例えば、ライトデータが『０ｘＣ０Ｃ０』であるとする。これを２進数で表記すると、『１１００００００  １１００００００』となる。この場合、上位８ビットのビット［７：６］（ビット［６］〜［７］）がデータの書き換えを示す『１』であり、下位８ビットの対応するビット［７：６］が『１』であることから、このライトデータによって、機能レジスタ１２３のビット［７：６］が『１』に書き換えられる。このとき、機能レジスタ１２３のビット［５：０］（ビット［０］〜［５］）は更新されない。
【００７３】
尚、機能レジスタ１２３の上位８ビット［１５：８］（ビット［８］〜［１５］）は、常に『０』であり、また、機能レジスタ１２３の初期値は、一例として、『０ｘ００ＦＦ』となっている。
【００７４】
このように、通信システム１００では、スレーブ装置１０２の機能レジスタ１２３にデータをライトする際、機能レジスタ１２３の各ビットを１度に全部書き換えるのではなく、所望のビットのみを書き換えるようになっている。これにより、通信システム１００は、例えば、機能レジスタ１２３の各ビットの値によって、画像形成装置の各駆動部の動作を個別に制御するような場合に、所望の駆動部以外の動作はそのままに、所望の駆動部の動作のみをＯＮ／ＯＦＦ制御するようなことができる。尚、ミラーレジスタ１２４のデータ幅は、機能レジスタ１２３のデータ幅の２倍の３２ビットとなっている。
【００７５】
このような前提をふまえて、以下、マスタ装置１０１からスレーブ装置１０２にデータをライトするときの動作について説明する。まず、図６に示す時点Ｔ１において、ＭＰＵ１１０は、機能レジスタ１２３にライトを行うべく、３２ビットのパラレルデータ『０ｘ０３００８００１』を送信制御部１１１に送る。送信制御部１１１は、送信データＳ３として、パラレルデータ『０ｘ０３００８００１』をデータ比較部１１３に送る。
【００７６】
ここで、『０ｘ０３００８００１』の下位１６ビット『０ｘ８００１』の最上位ビット［１５］は、ライト／リードの指示を表すビットであり、この場合、『１』であるので、ライトを指示している。さらに、『０ｘ８００１』の残りの１５ビット（ビット［１４：０］）は、機能レジスタ１２３のアドレス（『０ｘ０００１』の１５ビット［１４：０］）を示している。また、『０ｘ０３００８００１』の上位１６ビット『０ｘ０３００』は、ライトデータであり、上述したように、上位８ビットが下位８ビットのビットイネーブルとなっている。
【００７７】
つまり、『０ｘ０３００８００１』は、機能レジスタ１２３にライトデータ『０ｘ０３００』に基づいてライトすることを指示する送信データＳ３となっている。
【００７８】
その後の時点Ｔ２において、ＭＰＵ１１０が送信制御部１１１に送信を指示すると、送信制御部１１１は、パラレルデータ『０ｘ０３００８００１』の下位１６ビット『０ｘ８００１』をシリアルデータに変換し、送受信データＳ１として、転送クロックＳ２に同期させて出力する（つまりスレーブ装置１０２に送信する）。スレーブ装置１０２の受信制御部１２０は、マスタ装置１０１から送信されてくる送受信データＳ１を、転送クロックＳ２に同期させて受け取りつつ、１６ビットのパラレルデータ『０ｘ８００１』に変換する。
【００７９】
その後の時点Ｔ３において、スレーブ装置１０２の受信制御部１２０は、パラレルデータ『０ｘ８００１』を、ライトリード制御部１２２に送るとともに、ミラーレジスタ１２４に書き込む。これにより、ミラーレジスタ１２４の下位１６ビットに『０ｘ８００１』が格納される。
【００８０】
その後の時点Ｔ４において、マスタ装置１０１の送信制御部１１１は、パラレルデータ『０ｘ０３００８００１』の上位１６ビット『０ｘ０３００』をシリアルデータに変換し、送受信データＳ１として、転送クロックＳ２に同期させてスレーブ装置１０２に送信する。ここで、スレーブ装置１０２の受信制御部１２０は、マスタ装置１０１から送られてくる送受信データＳ１を、転送クロックＳ２に同期させて受け取りつつ、１６ビットのパラレルデータ『０ｘ０３００』に変換する。
【００８１】
その後の時点Ｔ５において、スレーブ装置１０２の受信制御部１２０は、パラレルデータ『０ｘ０３００』を、ライトリード制御部１２２に送るとともに、ミラーレジスタ１２４に書き込む。これにより、ミラーレジスタ１２４の上位１６ビットに『０ｘ０３００』が格納される。この時点で、ミラーレジスタ１２４には、３２ビットのパラレルデータ『０ｘ０３００８００１』、すなわちスレーブ装置１０２が送受信データＳ１として２回に分けて受信した送信データＳ３がそのまま格納されたことになる。
【００８２】
またこのとき、ライトリード制御部１２２が、パラレルデータ『０ｘ８００１』と『０ｘ０３００』に応じて、機能レジスタ１２３の値を書き換えることで、機能レジスタ１２３の値が『０ｘ００ＦＣ』となる。
【００８３】
その後の時点Ｔ６において、マスタ装置１０１の送信制御部１１１は、スレーブ装置１０２のミラーレジスタ１２４に格納された送信データＳ３のリードを行う。すなわち、送信制御部１１１は、まず１６ビットのパラレルデータ『０ｘ０００２』をシリアルデータに変換し、送受信データＳ１として転送クロックＳ２に同期させて出力する（すなわちスレーブ装置１０２に送信する）。
【００８４】
ここで、『０ｘ０００２』の最上位ビット［１５］は、ライト／リードの指示を表すビットであり、この場合、『０』であるので、リードを指示している。さらに、『０ｘ０００２』の残りの１５ビット（ビット［１４：０］）は、ミラーレジスタ１２４のアドレスを示している。つまり、『０ｘ０００２』は、ミラーレジスタ１２４からデータをリードすることを指示するデータとなっている。
【００８５】
また、スレーブ装置１０２の受信制御部１２０は、マスタ装置１０１から送られてくる送受信データＳ１を、転送クロックＳ２に同期させて受け取りつつ、１６ビットのパラレルデータ『０ｘ０００２』に変換する。
【００８６】
その後の時点Ｔ７において、スレーブ装置１０２の受信制御部１２０は、パラレルデータ『０ｘ０００２』を、ライトリード制御部１２２に送る。ライトリード制御部１２２は、切替器１２５を制御してミラーレジスタ１２４の出力（３２ビットのパラレルデータでなるリードデータ）をレジスタデータＳ８として選択するとともに、送信制御部１２１にデータの送信を指示する。これにより、送信制御部１２１には、ミラーレジスタ１２４からリードされた３２ビットのパラレルデータ『０ｘ０３００８００１』（すなわちスレーブ装置１０２が送受信データＳ１として受信した送信データＳ３）がレジスタデータＳ８として送られることになる。
【００８７】
その後の時点Ｔ８において、送信制御部１２１は、レジスタデータＳ８の下位１６ビットのパラレルデータ『０ｘ８００１』をシリアルデータに変換し、送受信データＳ１として転送クロックＳ２に同期させて出力する（すなわちマスタ装置１０１に送信する）。マスタ装置１０１の受信制御部１１２は、スレーブ装置１０２から送信されてくる送受信データＳ１を、転送クロックＳ２に同期させて受け取りつつ、１６ビットのパラレルデータ『０ｘ８００１』に変換する。
【００８８】
その後の時点Ｔ９において、受信制御部１１２は、パラレルデータ『０ｘ８００１』を、受信データＳ６の下位１６ビットとして、データ比較部１１３に送る。
【００８９】
その後の時点Ｔ１０において、スレーブ装置１０２の送信制御部１２１は、レジスタデータＳ８の上位１６ビットのパラレルデータ『０ｘ０３００』をシリアルデータに変換し、送受信データＳ１として転送クロックＳ２に同期させて出力する（すなわちマスタ装置１０１に送信する）。マスタ装置１０１の受信制御部１１２は、スレーブ装置１０２から送信されてくる送受信データＳ１を、転送クロックＳ２に同期させて受け取りつつ、１６ビットのパラレルデータ『０ｘ０３００』に変換する。
【００９０】
その後の時点Ｔ１１において、マスタ装置１０１の送信制御部１１１からＭＰＵ１１０へ送られる転送完了通知信号Ｓ５が、『０』から転送完了を示す『１』に更新されることにより、ＭＰＵ１１０へ転送の完了が通知される。また、受信制御部１１２は、パラレルデータ『０ｘ８００１』及び『０ｘ０３００』を、受信データＳ６の下位１６ビット及び上位１６ビットとして（つまり『０ｘ０３００８００１』として）、データ比較部１１３に送る。
【００９１】
データ比較部１１３は、送信データＳ３と、受信データＳ６とを比較する。図５に示す例では、どちらも『０ｘ０３００８００１』である為、データ比較部１１３からＭＰＵ１１０へと送られるエラー信号Ｓ７は、ライトが正常に行われたことを示す『０』となる。これにより、ＭＰＵ１１０は、正常にマスタ装置１０１からスレーブ装置１０２にデータがライトされたと認識して、ライトの動作を終了する。
【００９２】
このように、通信システム１００では、マスタ装置１０１からスレーブ装置１０２にデータをライトする際に、マスタ装置１０１からスレーブ装置１０２に送受信データＳ１として送信した送信データＳ３に基づいて、マスタ装置１０１の機能レジスタ１２３へのライトを行うとともに、その送信データＳ３を、そのままミラーレジスタ１２４に書き込む。
【００９３】
さらに、マスタ装置１０１は、ミラーレジスタ１２４に書き込まれた送信データＳ３をレジスタデータＳ８として読み出させ、送受信データＳ１として受信する。そして、マスタ装置１０１は、スレーブ装置１０２から送受信データＳ１として受信した受信データＳ６（すなわちレジスタデータＳ８）と、スレーブ装置１０２へ送受信データＳ１として送信した送信データＳ３とを比較して、これらが一致していれば、データのライトが正常に行われたと認識するようになっている。
【００９４】
［２−３．ライト処理手順］
次に、マスタ装置１０１からスレーブ装置１０２にデータをライトするときのＭＰＵ１１０が実行する処理手順（これをライト処理手順と呼ぶ）について、図７に示すフローチャートを用いて詳しく説明する。
【００９５】
マスタ装置１０１のＭＰＵ１１０は、最初のステップＳＰ１００において、スレーブ装置１０２の機能レジスタ１２３に対するデータの書き込み（ライト）命令を発行する。つづくステップＳＰ１０１において、ＭＰＵ１１０は、転送完了通知信号Ｓ５をポーリングし、転送完了通知信号Ｓ５が転送がまだ完了していないことを示す『０』の場合は、引き続きこのステップＳＰ１０１でポーリングを行い、転送が完了したことを示す『１』の場合は、このステップＳＰ１０１で肯定結果を得て、続くステップＳＰ１０２に移る。
【００９６】
ステップＳＰ１０２においてＭＰＵ１１０は、エラー信号Ｓ７を確認する。ここで、エラー信号Ｓ７がライトが正常に行われなかったことを示す『１』の場合、ＭＰＵ１１０は、再びステップＳＰ１００に戻り、再度、機能レジスタ１２３に対するデータの書き込み（ライト）命令を発行する。これに対して、エラー信号Ｓ７がライトが正常に行われたことを示す『０』の場合、ＭＰＵ１１０は、ライト処理手順を終了する。
【００９７】
［２−４．まとめと効果］
ここまで説明したように、第２実施例の通信システム１００では、スレーブ装置１０２側に、マスタ装置１０１から送受信データＳ１として受信した送信データＳ３に基づいてデータが書き込まれる機能レジスタ１２３とは別に、マスタ装置１０１から送受信データＳ１として受信した送信データＳ３がそのまま書き込まれるミラーレジスタ１２４を設け、マスタ装置１０１側で、スレーブ装置１０２に送信した送信データＳ３と、ミラーレジスタ１２４から読み出されて返送されてくる送信データＳ３である受信データＳ６とを比較する。
【００９８】
そして、送信データＳ３と受信データＳ６とが一致しない場合には、通信エラーが発生しているとマスタ装置１０１側で判断して、再度、マスタ装置１０１からスレーブ装置１０２へ送受信データＳ１を転送するようにした。こうすることで、スレーブ装置１０２側では、最終的に、機能レジスタ１２３に正常なデータを書き込むことができる。
【００９９】
また、この通信システム１００では、マスタ装置１０１側で、送信データＳ３と受信データＳ６とを比較して通信エラー（ビット誤り）を検出するようにしたことにより、パリティチェックと比べて、より確実に通信エラー（ビット誤り）を検出できる。
【０１００】
さらに、スレーブ装置１０２側には、受信した送信データＳ３がそのまま書き込まれるミラーレジスタ１２４が組み込まれているが、このミラーレジスタ１２４は、受信した送信データＳ３を保持するだけの簡易な回路である為、例えばＣＲＣのような演算を行う回路が組み込まれている従来のスレーブ装置と比べて簡易な構成でなり、そのうえ通信エラーを検出する為の特別な処理をソフトウェアで行う必要がなく、低コストで信頼性の高いシステムを実現できる。
【０１０１】
上述のように、第２実施例の通信システム１００についても、簡易な構成でありながら、通信エラーを確実に検出することができる。
【０１０２】
くわえて、通信システム１００では、スレーブ装置１０２が、機能レジスタ１２３とは別に設けたミラーレジスタ１２４に、受信した送信データＳ３をそのまま書き込み、これを受信データＳ６としてマスタ装置１０１が受信し、スレーブ装置１０２に送信した送信データＳ３と比較するようにした。
【０１０３】
こうすることで、通信システム１００のように、ビットイネーブル制御により、マスタ装置１０１からスレーブ装置１０２へ送信される送信データＳ３と、機能レジスタ１２３に実際に書き込まれたデータとが異なる場合でも、ミラーレジスタ１２４には常に送信データＳ３がそのまま保持されることになるので、機能レジスタ１２３のどのビットが書き換えられたのかを考慮する必要がなく、簡易な構成でありながら、より確実に通信エラー（ビット誤り）を検出できる。
【０１０４】
［３．他の実施例］
［３−１．他の実施例１］
尚、上述した第１実施例では、通信エラーがなくなるまで、マスタ装置２からスレーブ装置３へのデータの転送を繰り返すようにして、例えば、データをスレーブ装置３のレジスタにライトする場合、スレーブ装置３側では、マスタ装置２から転送されてくるデータを、通信エラーの有無に関わらず、指定のレジスタにライトするようにした。これに限らず、スレーブ装置３側では、マスタ装置２から転送されてくるデータを、マスタ装置２側で通信エラー無しと判断された場合にのみ、指定のレジスタにライトするようにしてもよい。この場合、マスタ装置２は、データを転送するとき、例えば、９ビット目のダミーデータの次の１０ビット目に、転送クロックに同期させて通信エラーの有無を示すエラー有無データを送信するようにする。このエラー有無データは、データ比較部１３の出力（『０』又は『１』）を用いればよい。この場合、転送クロックは、１０クロックパルス分転送されることになる。
【０１０５】
スレーブ装置３では、アドレスと制御情報（ライト）とダミーデータとエラー有無データとでなる１０ビットのデータを受信すると、受信制御部２０が、例えば、これを図示しないバッファに保存する。次に、ライトするデータとダミーデータとエラー有無データとでなる１０ビットのデータを受信すると、受信制御部２０が、これを図示しないバッファに保存する。そして、最初に受信したデータの１０ビット目のエラー有無データと、次に受信したデータの１０ビット目のエラー有無データがともにエラー無しを示している場合にのみ、受信制御部２０が、バッファに保存されているアドレスと制御情報（ライト）とでなる８ビットのデータと、ライトするデータでなる８ビットのデータとをレジスタ部２３に送る。これにより、レジスタ部２３が指定のレジスタにデータをライトする。このようにすれば、エラーデータがレジスタ部２３の指定のレジスタにライトされてしまう状況を回避できる。
【０１０６】
また、これに限らず、通信エラーの有無に関わらず、レジスタ部２３の指定のレジスタにデータをライトするようにして、受信制御部２０が、最初に受信したデータの１０ビット目のエラー有無データと、次に受信したデータの１０ビット目のエラー有無データがともにエラー無しを示している場合に、通信エラーがない旨をレジスタ部２３に伝え、レジスタ部２３が、通信エラーがない旨を伝えられた場合にのみ、レジスタにライトされたデータの読み出しを許可するようにしてもよい。また、第２実施例についても同様に、通信エラー無しと判断された場合にのみ機能レジスタ１２３にデータをライトするようにしてもよい。
【０１０７】
尚、スレーブ装置３からデータをリードする場合も、スレーブ装置３側が、マスタ装置２側で通信エラー無しと判断された場合にのみ、指定のレジスタからデータをリードしてマスタ装置２に送信するようにしてもよい。この場合、スレーブ装置３では、アドレスと制御情報（リード）とダミーデータとエラー有無データとでなる１０ビットのデータを受信すると、１０ビット目のエラー有無データがエラー無しを示している場合にのみ、受信したアドレスと制御情報（リード）とでなる８ビットのデータをレジスタ部２３に送る。これにより、レジスタ部２３が指定のレジスタからデータをリードして、これを送信制御部２２がマスタ装置２へ送信する。
【０１０８】
［３−２．他の実施例２］
また、上述した第１実施例では、転送クロックのクロックパルスの変化タイミングである立ち下がりに同期させてシリアルデータを１ビットずつ転送及び返送するようにしたが、これに限らず、例えば、クロックパルスの変化タイミングである立ち上がりに同期させてシリアルデータを１ビットずつ転送及び返送するようにしてもよい。さらに、クロックパルスの立ち上がりと立ち下がりの両方に同期させてシリアルデータを１ビットずつ転送及び返送するようにしてもよい。立ち上がりと立ち下がりの両方に同期させる場合、同一周期の転送クロックであれば、立ち上がり又は立ち下がりのどちらかと同期させる場合と比べて、シリアルデータの通信速度が速くなる。
【０１０９】
［３−３．他の実施例３］
さらに、上述した第１実施例では、８ビットの送信データ＋１ビットの無効データでなる９ビットのシリアルデータを転送する場合について述べたが、これに限らず、送信データのビット数については、９ビット以上でもよく、また７ビット以下でもよい。さらに、８ビットの送信データに追加される無効データについても、例えば、２ビット以上であってもよい。尚、無効データを２ビット以上にする場合、スレーブ装置３の送信バッファ２１の容量も２ビット以上にする必要がある。
【０１１０】
［３−４．他の実施例４］
さらに、上述した第１実施例では、通信エラーがなくなるまで、マスタ装置２からスレーブ装置３へのデータの転送を繰り返すようにした。これに限らず、例えば、繰り返し回数が所定数に達したら、転送を中断して通信エラーが解除されない旨を、マスタ装置２が、所定の通知手段を介してユーザに通知したり、外部の装置に通知したりしてもよい。尚、この場合の所定数としては、例えば、モジュールの制御の為にスレーブ装置３のレジスタからデータが読み出される周期を基準にして設定すればよい。つまり、スレーブ装置３にデータをライトするには、１回のライトにつき２回の転送処理を連続して行うことになるが、例えば、２回の転送処理がそれぞれ５回繰り返されるとレジスタからデータが読み出される周期を超えてしまう場合、所定数を４に設定すればよい。また、第２実施例についても同様に、ライトの繰り返し回数が所定数に達したら、転送を中断するようにしてもよい。
【０１１１】
［３−５．他の実施例５］
さらに、上述した第１実施例では、スレーブ装置３側で制御されるモジュールが、マスタ装置２及びスレーブ装置３間の通信速度（例えば数Ｍｂｐｓ）と比べて十分長い周期で制御されるモジュールであるとしたが、これに限らず、例えば、レジスタから読み出されたデータが供給されてから所望の動作状態となるまでの時間が、マスタ装置２及びスレーブ装置３間の通信速度と比べて十分長いモジュールであってもよい。この場合、エラーデータがモジュールに供給されても、モジュールが異常な動作状態となる前に、正常データがモジュールに供給されれば、モジュールが異常な動作状態になることを防ぐことができる。このことは、第２実施例についても同様とする。
【０１１２】
［３−６．他の実施例６］
また、上述した第１実施例では、相手側装置と通信する通信装置及び第１の通信装置の具体例であるマスタ装置２と、相手側装置及び第２の通信装置の具体例であるスレーブ装置３とからなる通信システム１に本発明を適用したが、これに限らず、本発明は、装置間でシリアル通信を行う様々なシステムに適用できる。
【０１１３】
また、上述した第１実施例では、送信データと返送データとを比較して通信エラーの検出を行うエラー検出部の具体例として、ＸＯＲ回路３０とＯＲ回路３１とで構成されるデータ比較部１３を用いたが、これに限らず、送信データと返送データとを比較できるものであれば、データ比較部１３とは異なる構成のエラー検出部を用いてもよい。また、上述した実施例では、受信制御部１２が、受信したシリアルデータの先頭のビットを取り込まないようにして、返送データを１クロックパルス分ずらしてデータ比較部１３に送り、データ比較部１３が送信データと返送データとを比較するようにしたが、これに限らず、受信制御部１２により受信されたシリアルデータをデータ比較部１３に送り、データ比較部１３がシリアルデータの先頭のビットを取り込まないようにして、返送データを１クロックパルス分ずらして送信データと返送データとを比較するようにしてもよい。
【０１１４】
［３−７．他の実施例７］
さらに、上述した第２実施例では、マスタ装置１０１からスレーブ装置１０２へデータをライトするときに、通信エラーがなくなるまで、マスタ装置１０１からスレーブ装置１０２へのデータの転送を繰り返すようにした。これに限らず、例えば、マスタ装置１０１がスレーブ装置１０２からデータをリードするときに、通信エラーがなくなるまで、スレーブ装置１０２からマスタ装置１０１へのデータの転送を繰り返すようにしてもよい。
【０１１５】
この場合、マスタ装置１０１は、機能レジスタ１２３のアドレス及び機能レジスタ１２３からのリードを示す送信データＳ３を、データ比較部１１３に送るとともに、送受信データＳ１としてスレーブ装置１０２に送信する。スレーブ装置１０２は、この送受信データＳ１を、ライトリード制御部１２２に送るとともに、そのままミラーレジスタ１２４に書き込む。
【０１１６】
マスタ装置１０１は、ミラーレジスタ１２４から読み出されたレジスタデータＳ８を送受信データＳ１として受信し、これを受信データＳ６としてデータ比較部１１３に送る。データ比較部１１３は、送信データＳ３と受信データＳ６とを比較して、エラー信号Ｓ７をＭＰＵ１１０に送る。ＭＰＵ１１０は、エラー信号Ｓ７をもとに通信エラーが発生していると判断した場合には、再度、スレーブ装置１０２へ送受信データＳ１を送信する。
【０１１７】
このようにすれば、ライト時だけでなく、リード時にも、通信エラー（ビット誤り）を検出することができる。
【０１１８】
［３−８．他の実施例８］
さらに、上述した第２実施例の通信システム１００においては、マスタ装置１０１とスレーブ装置１０２とを、送受信信号線１０３とクロック信号線１０４とで接続するようにした。これに限らず、送受信信号線１０３を、送信信号線と受信信号線とに分け、第１実施例と同様、マスタ装置１０１とスレーブ装置１０２とを、送信信号線、受信信号線、及びクロック信号線１０４の３本で接続するようにしてもよい。
【０１１９】
［３−９．他の実施例９］
さらに、上述した第２実施例では、送信データＳ３及び受信データＳ６が３２ビットで、マスタ装置１０１とスレーブ装置１０２との間では、送信データＳ３及び受信データＳ６を１６ビットごとに分けて送受信データＳ１として送受信する通信システム１００に本発明を適用した。これに限らず、送信データＳ３及び受信データＳ６を、そのまま３２ビットの送受信データＳ１として送受信可能な通信システムに適用することもできる。また、これに限らず、送信データＳ３、受信データＳ６及び送受信データＳ１のビット数については、１６ビットや３２ビット以外のビット数であってもよく、本発明は、種々の通信システムに適用することができる。
【０１２０】
［３−１０．他の実施例１０］
また、上述した第２実施例では、相手側装置と通信する通信装置及び第１の通信装置の具体例であるマスタ装置１０１と、相手側装置及び第２の通信装置の具体例であるスレーブ装置１０２とからなる通信システム１００に本発明を適用したが、これに限らず、本発明は、装置間でシリアル通信を行う様々なシステムに適用できる。
【０１２１】
また、上述した第２実施例では、送信データＳ３と返送データとしての受信データＳ６を比較して通信エラーの検出を行うエラー検出部の具体例として、データ比較部１１３を用いたが、これに限らず、送信データと返送データとを比較できるものであれば、データ比較部１１３とは異なる構成のエラー検出部を用いてもよい。また、上述した第２実施例では、スレーブ装置１０２に、第１のレジスタとしての機能レジスタ１２３と、記憶部及び第２のレジスタとしてのミラーレジスタ１２４を設けるようにしたが、これに限らず、第１のレジスタとして、機能レジスタ１２３とは異なるレジスタを設けるようにしてもよいし、記憶部及び第２のレジスタとして、ミラーレジスタ１２４とは異なる記憶部を設けるようにしてもよい。
【０１２２】
［３−１１．他の実施例１１］
さらに、本発明は、上述した各実施例に限定されるものではない。すなわち本発明は、上述した各実施例の一部または全部を任意に組み合わせた実施例や、一部を抽出した実施例にもその適用範囲が及ぶものである。
【産業上の利用可能性】
【０１２３】
本発明は、シリアル通信を行う装置で広く利用することができる。
【符号の説明】
【０１２４】
１、１００……通信システム、２、１０１……マスタ装置、２、１０２……スレーブ装置、４……送信信号線、５……受信信号線、６、１０４……クロック信号線、１０、１１０……ＭＰＵ、１１、２２、１１１、１２１……送信制御部、１２、２０、１１２、１２０……受信制御部、１３、１１３……データ比較部、２１……送信バッファ、２３……レジスタ部、２４、１２５……切替器、１０３……送受信信号線、１２２……ライトリード制御部、１２３……機能レジスタ、１２４……ミラーレジスタ。
【図１】
2016111672.tif 000003
【図２】
2016111672.tif 000004
【図３】
2016111672.tif 000005
【図４】
2016111672.tif 000006
【図５】
2016111672.tif 000007
【図６】
2016111672.tif 000008
【図７】
2016111672.tif 000009