(57)【特許請求の範囲】
【請求項１】
第一の装置と第二の装置との間で、データをクロック信号に同期して通信するシリアル通信装置において、
前記第一の装置から前記第二の装置へ所定のデータ数分のクロック数を有するクロック信号を送出するクロック信号送出手段と、
前記第一の装置から前記第二の装置へ前記クロック信号に同期して順次データを送出するデータ送信手段と、
前記データ送信手段によるデータ送信の可否を設定する設定手段と、
前記第二の装置において、前記データ送信手段によって送出された前記データを前記クロック信号に同期して受信する受信手段と、
前記設定手段によって前記データ送信手段によるデータ送信が可能な状態に設定して、前記クロック信号送出手段から送出するクロック信号のクロック数を、前記所定のデータ数分のクロック数よりも多く送出して前記第二の装置に対して初期化動作を指示する初期化指示手段と、
前記初期化指示手段によって前記第二の装置に対して初期化動作が指示された際に、前記受信手段によって受信されたデータの値に基づいて、前記第二の装置の初期化動作を行うか否かを判断する判断手段と
を有することを特徴とするシリアル通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、クロックに同期してデータを順次送受信するクロック同期シリアル通信装置に関する。
【０００２】
【従来の技術】
従来、クロック同期シリアル通信は、特開平６−２４３０５２号公報に記載されているように、クロック信号線とデータ信号線の他にハンドシェイク信号線を設け、通信にエラーが起きた場合にハンドシェイク信号線を使ってリカバリーできるように構成されている。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来例では、クロック同期シリアル通信に必要なクロック信号線とデータ信号線以外にハンドシェイクのための信号線が必要であった。
【０００４】
本発明は、上述の点に鑑みてなされたもので、最低限の信号線でシリアル通信を行い、且つ通信がハングアップしても正常状態に復帰できるクロック同期シリアル通信装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１に係わるシリアル通信装置は、第一の装置と第二の装置との間で、データをクロック信号に同期して通信するシリアル通信装置において、前記第一の装置から前記第二の装置へ所定のデータ数分のクロック数を有するクロック信号を送出するクロック信号送出手段と、前記第一の装置から前記第二の装置へ前記クロック信号に同期して順次データを送出するデータ送信手段と、前記データ送信手段によるデータ送信の可否を設定する設定手段と、前記第二の装置において、前記データ送信手段によって送出された前記データを前記クロック信号に同期して受信する受信手段と、前記設定手段によって前記データ送信手段によるデータ送信が可能な状態に設定して、前記クロック信号送出手段から送出するクロック信号のクロック数を、前記所定のデータ数分のクロック数よりも多く送出して前記第二の装置に対して初期化動作を指示する初期化指示手段と、前記初期化指示手段によって前記第二の装置に対して初期化動作が指示された際に、前記受信手段によって受信されたデータの値に基づいて、前記第二の装置の初期化動作を行うか否かを判断する判断手段とを有することを特徴とする。
【０００６】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【０００７】
（第１の実施の形態）
図１は、本発明に係るシリアル通信装置の第１の実施の形態を示す全体構成図である。
【０００８】
図１において、１は第一の装置としてのシリアル通信のマスタ側である装置、２は第二の装置としてのシリアル通信のスレーブ側である装置、３は装置１から出力されるクロック信号線、４はクロック信号に同期してデータを送受信する双方向のデータ信号線、５は装置１を制御するマイクロコンピュータ、６はマイクロコンピュータ５の出力ポートで、クロック信号に同期してデータを出力するＳＯ出力端子、７はマイクロコンピュータ５の入力ポートでクロック信号に同期してデータを入力するＳＩ入力端子、８はオープンコレクタで使われているトランジスタで、ベースがＳＯ出力端子６に、コレクタがデータ信号線４に接続されており、ＳＯ出力端子６がハイ（以下「Ｈ」という）レベルのとき、トランジスタ８がオンしてデータ信号線４をＬレベルにし、ＳＯ出力端子６がロー（以下「Ｌ」という）レベルのとき、トランジスタ８がオフしてデータ信号線４は抵抗９でプルアップされているためにＨレベルになる。
【０００９】
１０は装置２を制御するマイクロコンピュータ、１１はＣＫ端子１２に入力されたクロック信号の立ち上がり毎にＳＩ入力端子１３のデータを入力し、順次内部のラッチデータをシフトさせ、最終段のラッチの出力をＳＯ端子１４に出力する８ビットのシフトレジスタであり、当該シフトレジスタ１１を構成している８個の各ラッチのデータは、マイクロコンピュータ１０がＲ／Ｗ端子１５をＬレベルにすることでＤＡＴＡバス端子１６に出力されマイクロコンピュータ１０に入力される。
【００１０】
また、マイクロコンピュータ１０は、Ｒ／Ｗ端子１５をＨレベルにし、ＤＡＴＡバス端子１６に送信データをセットし、ＬＤ端子１７をＬレベルにすることでシフトレジスタ１１の各ラッチにデータを入力できる。
【００１１】
１８は０から８までをカウントするカウンタで、クロック信号３の立ち上がりでカウント値が＋１され、マイクロコンピュータ１０はそのカウント値１９を読み取ることができ、ＣＬＲ端子２０をＬレベルにすることでカウント値を０に戻すことができる。
【００１２】
２１はＥＸ−ＯＲ回路で、マイクロコンピュータ１０がＭＤ端子２２をＨレベルにすることでクロック信号３を反転した信号をＣＫ端子１２に出力し、ＭＤ端子２２をＬレベルにすることでクロック信号３をそのままＣＫ端子１２に出力する。
【００１３】
２３はＤフリップフロップで、Ｄ端子がプルアップされているため、ＣＫ端子１２の立ち上がりエッジでＱ端子２４はＨレベルになり、マイクロコンピュータ１０がＲＸＳ端子２５をＨレベルにすることでＤフリップフロップ２３にリセットがかかりＱ端子２４はＬレベルになる。
【００１４】
２６はＮＡＮＤ回路、２７はオープンコレクタで使われているトランジスタで、ベースがＮＡＮＤ回路２６の出力に、コレクタがデータ信号線４に接続されており、ＮＡＮＤ回路２６の出力がＨレベルのとき、トランジスタ２７がオンしてデータ信号線４をＬレベルにし、ＮＡＮＤ回路２６の出力がＬレベルのとき、トランジスタ２７がオフしてデータ信号線４は抵抗２８でプルアップされているためにＨレベルになる。
【００１５】
２９は０から２４までをカウントするカウンタで、クロック信号３の立ち上がりでカウント値が＋１され、マイクロコンピュータ１０はそのカウント値３１を読み取ることができ、ＣＬＲ端子３０をＬレベルにすることでカウント値を０に戻すことができる。
【００１６】
以上の構成においてマイクロコンピュータ５は、クロックを送出して第一の装置１が送信若しくは受信のためにデータ数に合わせてクロック信号を第二の装置２に送出するように動作し、マイクロコンピュータ１０は、シフトレジスタ１１を使って第一の装置１が送出したクロック信号に同期して順次データ信号のデータを受信若しくはデータを順次データ信号に送出するように動作し、初期化指示手段は、第一の装置１がデータ数に対して十分多い数のクロック信号を送出することで、第二の装置２に通信の初期化を指示するように動作する。マイクロコンピュータ１０は、初期化指示手段で第一の装置１から初期化を指示されたと認識したときに、第二の装置２の通信を初期状態にするように動作する。
【００１７】
以下に図１乃至図５を参照して回路動作を説明する。
【００１８】
図２は、本発明の第１の実施の形態に係わるタイミングチャート、図３、４は、本発明の第１の実施の形態に係わるフローチャート、図５は、本発明の第１の実施の形態に係わるフローチャートである。
【００１９】
図２は送受信１サイクルを正常に行っているときのタイミングチャートであり、図３、４は装置１の通信制御フローチャート、図５は装置２の通信制御フローチャートである。
【００２０】
これらの図１乃至図５を使って装置１から装置２にコマンドデータを送信し、装置１が装置２からステータスデータを受信する通信の動作を説明する。
【００２１】
先ず、図３、４で第一の装置１の動作を説明する。
【００２２】
ステップＳ３０１では、マイクロコンピュータ５が送信するコマンドデータを、送信のために使用する内蔵の８ビット汎用レジスタである送信レジスタにセットする。ステップＳ３０２では、ループ回数を記憶する内蔵の汎用レジスタ（ループレジスタ）に１をセットする。ステップＳ３０３ではＣＫ端子３をＬレベルにする。ステップＳ３０４では、送信レジスタのビット位置の８ビット目のデータが０か１かを判断し、８ビット目が０ならばステップ３０５へ移り、８ビット目が１ならばステップＳ３０６へ移る。ステップＳ３０５では、ＳＯ端子６をＨレベルにすることで、ＤＡＴＡ信号線４をＬレベルにする。ステップＳ３０６では、ＳＯ端子６をＬレベルにすることで、ＤＡＴＡ信号線４をＨレベルにする。ステップＳ３０７では、ＣＫ端子３をＨレベルにする。ステップＳ３０８では、ループレジスタの値を判断し、ループ回数が８以外ならばステップＳ３０９へ移り、ループ回数が８ならばステップＳ３１１へ移る。ステップＳ３０９では、ループレジスタの値に１を加算する。ステップＳ３１０では、送信レジスタのデータを左に１ビットシフト（７ビット目のデータを８ビット目に、６ビット目のデータを７ビット目に、というように各ビットを移動し、１ビット目のデータは０をセット）し、ステップＳ３０３に戻る。
【００２３】
ステップＳ３１１では、８ビットのコマンドデータの送信が終了したので、ＳＯ端子６をＬレベルにすることで、ＤＡＴＡ信号線４をＨレベルにしてＤＡＴＡ信号線４を装置２に開放する。ステップＳ３１２では、ＳＩ端子７がＬレベルであるかを監視し、装置２がステータスデータの送信準備を完了すると、ＳＩ端子７がＬレベルになるため、ステップＳ３１３へ移り、ステータスの受信を開始する。ステップＳ３１３では、ループレジスタに１をセットする。ステップＳ３１４では、ＣＫ端子３をＬレベルにする。ステップＳ３１５では、ＣＫ端子３をＨレベルにする。ステップＳ３１６では、ＳＩ端子７のレベルを判断し、ＳＩ端子７がＨレベルであればステップＳ３１７へ移り、ＳＩ端子７がＬレベルであればステップＳ３１８へ移る。ステップＳ３１７では、マイクロコンピュータ５がステータスデータを受信するために使用する内蔵の８ビット汎用レジスタである受信レジスタの１ビット目に１をセットする。ステップＳ３１８では、受信レジスタの１ビット目に０をセットする。
【００２４】
ステップＳ３１９では、ループレジスタの値を判断し、ループ回数が８以外ならばステップＳ３２０へ移り、ループ回数が８ならばステップＳ３２２へ移る。ステップＳ３２０では、ループレジスタの値に１を加算する。ステップＳ３２１では、受信レジスタのデータを左に１ビットシフトし、ステップＳ３１４に戻る。ステップＳ３２２では、８ビットのステータスデータの受信が終了したので、受信レジスタのデータを別のレジスタに格納し、コマンド／ステータスデータの１サイクル分の通信を終了し、ステップＳ３０１に戻る。
【００２５】
次に、図５で装置２の動作を説明する。
【００２６】
ステップＳ４０１では、マイクロコンピュータ１０が、ＣＬＲ端子２０を所定期間Ｌレベルにすることでカウンタ１８のカウント値を０にする。ステップＳ４０２では、ＲＸＳ端子２５をＬレベルにし、ＤＡＴＡ信号線４を装置１が使用できるようにする。ステップＳ４０３では、シフトレジスタ１１にデータ０をセット（Ｒ／Ｗ端子１５をＨレベルにし、ＤＡＴＡバス端子１６に０を入力し、ＬＤ端子１７をＬレベルにすることでシフトレジスタ１１の各ラッチを０にセット）することで、ＳＯ端子１４をＬレベルにし、ＤＡＴＡ信号線４をＨレベルにしてＤＡＴＡ信号線４を装置１に開放する。また、ＭＤ端子２２をＬレベルにすることで、クロック信号線３をそのまま使用する受信モードにする。ステップＳ４０４では、カウンタ１８のカウント値を監視し、カウント値が８になったらステップＳ４０５に移る。
【００２７】
ステップＳ４０５では、８ビットのコマンドデータの受信が終了したため、ＤＡＴＡバス端子１６のデータを内蔵のコマンド用レジスタに格納する。ステップＳ４０６では、コマンド用レジスタの内容を解析し、コマンドで指示された処理を実行する。ステップＳ４０７では、ＣＬＲ端子２０を所定期間Ｌレベルにすることでカウンタ１８のカウント値を０にする。ステップＳ４０８では、シフトレジスタ１１にステータスデータをセットするため、Ｒ／Ｗ端子１５をＨレベルにし、ＤＡＴＡバス端子１６にステータスデータを入力し、ＬＤ端子１７をＬレベルにすることでシフトレジスタ１１の各ラッチにステータスデータをセットする。
【００２８】
ステップＳ４０９では、ＬＤ端子１７をＨレベルに、Ｒ／Ｗ端子１５をＬレベルに戻し、ＭＤ端子２２をＨレベルにすることで、クロック信号線３を反転して使用する送信モードにし、ＲＸＳ端子２５を所定期間ＨレベルにすることでＤＡＴＡ信号線４をＬレベルにして装置１に送信準備が完了したことを知らせる。ステップＳ４１０では、カウンタ１８のカウント値を監視し、カウント値が８になったら送信が終了したのでステップＳ４０３に戻る。
【００２９】
図６は、本発明の第１の実施の形態に係わるタイミングチャート、図７は、本発明の第１の実施の形態に係わるフローチャート、図８は、本発明の第１の実施の形態に係わるフローチャートである。
【００３０】
図６は装置１が装置２に通信の初期化を指示しているときのタイミングチャートであり、図７は装置１の初期化指示制御フローチャート、図８は装置２の通信初期化制御フローチャートである。
【００３１】
これらの図６乃至図８を使用して装置１からの初期化指示により装置２が通信を初期化する動作を説明する。
【００３２】
先ず、図７で装置１の初期化指示動作を説明する。
【００３３】
ステップＳ６０１では、ＳＯ端子６をＨレベルにすることで、ＤＡＴＡ信号線４をＬレベルにする。ステップＳ６０２では、マイクロコンピュータ５が、ループ回数を記憶する内蔵の汎用レジスタ（第二ループレジスタ）に１をセットする。ステップＳ６０３では、ＣＫ端子３をＬレベルにする。ステップＳ６０４では、ＣＫ端子３をＨレベルにする。ステップＳ６０５では、第二ループレジスタの値を判断し、ループ回数が２４以外ならばステップＳ６０６へ移り、ループ回数が２４ならばステップＳ６０３へ戻る。ステップＳ６０６では、ループレジスタの値に１を加算し、ステップＳ６０３へ戻る。ステップＳ６０７では、ＳＯ端子６をＬレベルにすることで、ＤＡＴＡ信号線４をＨレベルにする。ステップＳ６０８では、図３、４で説明した通信処理を止め、所定時間待機した後、通信をステップＳ３０１から再開する。
【００３４】
次に、図８で装置２の通信初期化動作を説明する。
【００３５】
ステップＳ７０１では、ＳＩ端子７がＬレベルであるかを監視し、ＳＩ端子７がＨレベルのときは、ステップＳ７０２へ移り、ＳＩ端子７がＬレベルのときには、ステップＳ７０３へ移る。ステップＳ７０２では、初期化指示ではないと判断し、ＣＬＲ端子３０を所定期間Ｌレベルにすることでカウンタ２９の値を０にする。ステップＳ７０３では、カウンタ２９のカウント値を監視し、カウント値が２４でなければステップＳ７０１に戻り、カウント値が２４であれば、ステップＳ７０４に移る。ステップＳ７０４では、装置１が通信の初期化を指示したと判断し、図５で説明した通信処理を止め、所定時間待機した後、通信をステップＳ４０１から再開する。
【００３６】
以上説明したように、通信に異常があった場合に、装置１が装置２に対してＤＡＴＡ信号をＬレベルに固定し、通常より多いクロックを送出することで、通信の初期化が行えるため、クロック信号線３とデータ信号線４の２本でシリアル通信を行うことができる。
【００３７】
（第２の実施の形態）
本発明に係るシリアル通信装置の第２の実施の形態は、図１に示す装置２においてカウンタ２９をなくした構成としており、その他の構成は実施の形態１と同様でありその説明は省略する。また、図１において装置１の通信制御は、実施の形態１と同様であり、その説明は省略する。
【００３８】
図９は、本発明に係わるシリアル通信装置の第２の実施の形態に係わるタイミングチャート、図１０は、本発明の第２の実施の形態に係わるフローチャート、図１１は、本発明の第２の実施の形態に係わるフローチャートである。
【００３９】
図９は、装置１が装置２に通信の初期化を指示しているときのタイミングチャートであり、図１０は、装置１の初期化指示制御フローチャート、図１１は、装置２の通信制御フローチャートである。
【００４０】
図９乃至図１１を使用して装置１からの初期化指示により装置２が通信を初期化する動作を説明する。
【００４１】
先ず、図１０のフローチャートにより装置１の初期化指示動作を説明する。
【００４２】
ステップＳ９０１では、ＳＯ端子６をＬレベルにすることで、ＤＡＴＡ信号線４を開放する。ステップＳ９０２では、マイクロコンピュータ５が、ループ回数を記憶する内蔵の汎用レジスタ（第二ループレジスタ）を１にセットする。ステップＳ９０３では、ＣＫ端子３をＬレベルにする。ステップＳ９０４では、ＣＫ端子３をＨレベルにする。ステップＳ９０５では、第二ループレジスタの値を判断し、ループ回数が２４以外ならばステップＳ９０６へ移り、ループ回数が２４ならばステップＳ９０７へ移る。ステップＳ９０６では、ループレジスタの値に１を加算し、ステップＳ９０３へ戻る。ステップＳ９０７では、実施の形態１の図３、４で説明した通信処理を止め、ステップＳ３０１から再開する。
【００４３】
次に、図１１のフローチャートにより装置２の通信制御及び通信初期化動作を説明する。
【００４４】
ステップＳ１０１では、マイクロコンピュータ１０が、ＣＬＲ端子２０を所定期間Ｌレベルにすることでカウンタ１８のカウント値を０にする。ステップＳ１０２では、ＲＸＳ端子２５をＬレベルにし、ＤＡＴＡ信号線４を装置１で使用できるようにする。ステップＳ１０３では、シフトレジスタ１１にデータ０をセット（Ｒ／Ｗ端子１５をＨレベルにし、ＤＡＴＡバス端子１６に０を入力し、ＬＤ端子１７をＬレベルにすることでシフトレジスタ１１の各ラッチを０にセット）することで、ＳＯ端子１４をＬレベルにし、ＤＡＴＡ信号線４をＨレベルにしてＤＡＴＡ信号線４を装置１に開放する。また、ＭＤ端子２２をＬレベルにすることで、クロック信号線３をそのまま使用する受信モードにする。
【００４５】
ステップＳ１０４では、カウンタ１８のカウント値を監視し、カウント値が８になったらステップＳ１０５に移る。ステップＳ１０５では、８ビットのコマンドデータの受信が終了したため、ＤＡＴＡバス端子１６のデータを内蔵のコマンド用レジスタに格納する。ステップＳ１０６では、コマンド用レジスタの内容がＦＦｈであれば通信の初期化指示と判断し、ステップ１１２へ移り、所定時間待機した後ステップＳ１０１に戻り、コマンド用レジスタの内容がＦＦｈ以外であればステップＳ１０７へ移る。
【００４６】
ステップＳ１０７では、コマンド用レジスタの内容を解析し、コマンドで指示された処理を実行する。ステップＳ１０８では、ＣＬＲ端子２０を所定期間Ｌレベルにすることでカウンタ１８のカウント値を０にする。ステップＳ１０９では、シフトレジスタ１１にステータスデータをセットするため、Ｒ／Ｗ端子１５をＨレベルにし、ＤＡＴＡバス端子１６にステータスデータを入力し、ＬＤ端子１７をＬレベルにすることでシフトレジスタ１１の各ラッチにステータスデータをセットする。ステップＳ１１０では、ＬＤ端子１７をＨレベルに、Ｒ／Ｗ端子１５をＬレベルに戻し、ＭＤ端子２２をＨレベルにすることで、クロック信号線３を反転して使用する送信モードにし、ＲＸＳ端子２５を所定期間ＨレベルにすることでＤＡＴＡ信号線４をＬレベルにして装置１に送信準備が完了したことを知らせる。ステップＳ１１１では、カウンタ１８のカウント値を監視し、カウント値が７になったら送信が終了したのでステップＳ１０３に戻る。
【００４７】
以上説明したように、通信に異常があった場合に、装置１が装置２に対してＤＡＴＡ信号を開放したまま、通常の３倍以上のクロックを送出することで、装置２が必ずＦＦｈデータを受信するようにし、データがＦＦｈのときに通信の初期化を行うようにすることで、初期化のためにクロックをカウントするカウンタを設けなくても通信の初期化を行える。
【００４８】
【発明の効果】
以上説明したように、請求項１のシリアル通信装置によれば、シリアル通信装置において、シリアル通信のマスタ側である第一の装置とスレーブ側である第二の装置との間の通信に異常が発生した場合に、必要最低限の信号線数で第一の装置から第二の装置への初期化指示が可能となり、かつ、第二の装置において初期化動作を判断するためのクロック数をカウントするカウンタを設けなくても初期化動作の指示を判断して、初期化を行うことができる。
【図面の簡単な説明】
【図１】本発明に係るシリアル通信装置の第１の実施の形態を示す全体構成図である。
【図２】本発明の第１の実施の形態に係わるタイミングチャートである。
【図３】本発明の第１の実施の形態に係わるフローチャートである。
【図４】図３の続きのフローチャートである。
【図５】本発明の第１の実施の形態に係わるフローチャートである。
【図６】本発明の第１の実施の形態に係わるタイミングチャートである。
【図７】本発明の第１の実施の形態に係わるフローチャートである。
【図８】本発明の第１の実施の形態に係わるフローチャートである。
【図９】本発明に係わるシリアル通信装置の第２の実施の形態に係わるタイミングチャートである。
【図１０】本発明の第２の実施の形態に係わるフローチャートである。
【図１１】本発明の第２の実施の形態に係わるフローチャートである。
【符号の説明】
１  装置１（第一の装置）
２  装置２（第二の装置）
３  クロック信号線
４  データ信号線
５、１０  マイクロコンピュータ
【図１】
0003715803.tif 000002
【図２】
0003715803.tif 000003
【図３】
0003715803.tif 000004
【図４】
0003715803.tif 000005
【図５】
0003715803.tif 000006
【図６】
0003715803.tif 000007
【図７】
0003715803.tif 000008
【図８】
0003715803.tif 000009
【図９】
0003715803.tif 000010
【図１０】
0003715803.tif 000011
【図１１】
0003715803.tif 000012