(57)【特許請求の範囲】
【請求項１】
マスタ装置からスレーブ装置へクロック信号線を介して通信クロックが出力されると共に、前記マスタ装置と前記スレーブ装置のうち、データを送信する送信側は、前記通信クロックの一方のエッジである送信エッジのタイミングで、データ信号線へデータ信号を出力する送信動作を行い、前記マスタ装置と前記スレーブ装置のうち、データを受信する受信側は、前記通信クロックの他方のエッジである受信エッジのタイミングで、前記データ信号線から前記データ信号を受信する受信動作を行うクロック同期式通信システムにおいて、前記マスタ装置として用いられる通信装置であって、
当該通信装置から前記スレーブ装置にデータを送信する送信期間において、前記送信動作により前回出力したデータ信号とは異なる値のデータ信号を出力する第１の場合には、前記通信クロックの前記送信エッジから前記受信エッジまでの時間であるクロック前半時間を第１時間にし、前記送信動作により前回出力したデータ信号と同じ値のデータ信号を出力する第２の場合には、前記クロック前半時間を前記第１時間よりも短い第２時間に変更し、前記第１の場合と前記第２の場合との何れにおいても、前記通信クロックの前記受信エッジから前記送信エッジまでの時間であるクロック後半時間は、受信側としての前記スレーブ装置のデータホールド時間以上に設定すること、
を特徴とする通信装置。
【請求項２】
請求項１に記載の通信装置において、
当該通信装置が前記スレーブ装置にデータを送信する送信期間において、前記送信動作により今回出力されるデータ信号の値である今回出力値が、前記送信動作により前回出力されたデータ信号の値である前回出力値と同じであるか否かを判定する判定手段と、
前記判定手段の判定結果に応じて、前記今回出力値の出力開始タイミングに該当する前記通信クロックの前記送信エッジから、前記受信エッジまでの時間である前記クロック前半時間を変更する時間変更手段とを備え、
前記時間変更手段は、前記判定手段により前記今回出力値が前記前回出力値と同じではないと判定された場合は、前記クロック前半時間を前記第１時間にし、前記判定手段により前記今回出力値が前記前回出力値と同じであると判定された場合は、前記クロック前半時間を前記第２時間にすること、
を特徴とする通信装置。
【請求項３】
請求項１又は請求項２に記載の通信装置において、
当該通信装置が前記通信クロックの前記送信エッジのタイミングで前記送信動作を開始してから、前記データ信号線上の電圧が、その送信動作で出力されたデータ信号に該当する電圧になるまでの遅れ時間である当該通信装置の出力遅れ時間が、「ｔ１」であり、
前記通信クロックの前記受信エッジのタイミングに先立って予め送信側が前記データ信号線上のデータ信号を確定させておかなければならない最小時間である前記スレーブ装置のデータセットアップ時間が、「ｔ２」であり、
前記スレーブ装置が前記通信クロックの前記受信エッジを検出することが可能となる前記クロック前半時間の最小値が、「ｔ３」であるとすると、
前記第１時間は、「ｔ１＋ｔ２」以上であり、前記第２時間は、前記第１時間よりも短く且つ「ｔ３」以上であること、
を特徴とする通信装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の通信装置において、
当該通信装置は、複数のスレーブ装置と通信するようになっていると共に、通信相手のスレーブ装置毎に、少なくとも前記第２時間を切り替えること、
を特徴とする通信装置。
【請求項５】
請求項１ないし請求項４の何れか１項に記載の通信装置と、その通信装置とクロック同期式通信を行うスレーブ装置と、を備えたクロック同期式通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック同期式通信に関する。
【背景技術】
【０００２】
クロック同期式通信システムでは、マスタ装置からスレーブ装置へクロック信号線を介して通信クロックが出力されると共に、マスタ装置とスレーブ装置のうち、データを送信する送信側は、通信クロックの一方のエッジである送信エッジのタイミングで、データ信号線へデータ信号（詳しくは、送信データを成す各ビットの信号）を出力する送信動作を行い、データを受信する受信側は、通信クロックの他方のエッジである受信エッジのタイミングで、データ信号線からデータ信号を受信する受信動作を行う。
【０００３】
そして、このようなクロック同期式通信システムにおいて、通信速度は、通信クロックの周期（以下、クロック周期ともいう）によって決まり、そのクロック周期は、送信側のデータ信号の出力遅れ時間と、受信側のデータセットアップ時間及びデータホールド時間とを考慮して決定される。以下、このことについて具体的に説明する。
【０００４】
まず、データ信号の出力遅れ時間は、送信側が通信クロックの送信エッジのタイミングでデータ信号の送信動作を開始してから、データ信号線上の実際の電圧が、その送信動作で出力されたデータ信号に該当する電圧になるまでの遅れ時間であり、送信側の信号出力特性（送信回路の特性）やデータ信号線の容量等によって決まる。
【０００５】
そして、データセットアップ時間は、受信側に確実にデータ信号を入力させるために、通信クロックの受信エッジのタイミングに先立って予め送信側がデータ信号線上のデータ信号を確定させておかなければならない最小時間であり、受信側の特性によって決まる。つまり、受信側が受信動作を開始する受信エッジのタイミングよりもどれくらい早くデータ信号線上のデータ信号を確定しておかなければならないかを示すのがデータセットアップ時間である。
【０００６】
また、データホールド時間は、受信側に確実にデータ信号を入力させるために、通信クロックに受信エッジが発生した後も送信側がデータ信号線上へのデータ信号の出力を継続しておかなければならない最小時間である。つまり、受信側が受信動作を開始する受信エッジタイミングの後、どれくらいの間データ信号線上のデータ信号を保持し続けていなければならないかを示すのがデータホールド時間である。そして、このデータホールド時間も、受信側の特性によって決まる。
【０００７】
尚、データセットアップ時間は、単にセットアップ時間とも呼ばれ、同様に、データホールド時間は、単にホールド時間とも呼ばれる。
そして、特許文献１には、通信クロックのハイ時間とロー時間とを、同じ時間に設定するのではなく、図１５に示すように、それぞれに必要な最小値に設定することが提案されている。尚、図１５の例では、通信クロックのエッジのうち、立ち下がりエッジが、送信動作開始タイミングの送信エッジになっており、立ち上がりエッジが、受信動作開始タイミングの受信エッジになっている。
【０００８】
即ち、通信クロックの送信エッジから受信エッジまでの時間（以下、クロック前半時間という）は、「送信側の出力遅れ時間＋受信側のデータセットアップ時間」以上であれば良く、また、通信クロックの受信エッジから送信エッジまでの時間（以下、クロック後半時間という）は、「受信側のデータホールド時間」以上であれば良いことから、特許文献１では、図１５に示すように、クロック前半時間（この例ではロー時間ＴＬ）を、「送信側の出力遅れ時間＋受信側のデータセットアップ時間」に設定し、クロック後半時間（この例ではハイ時間ＴＨ）を、「受信側のデータホールド時間」に設定している。そして、その場合、クロック周期は、「送信側の出力遅れ時間＋受信側のデータセットアップ時間＋受信側のデータホールド時間」となる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−８７７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記特許文献１の技術を採用するしないに拘わらず、その技術とは別の観点から通信速度を上げることができれば尚良い。
そこで、本発明は、クロック同期式通信の通信速度を効率良く上げることができるようにすることを目的としている。
【課題を解決するための手段】
【００１１】
本発明の通信装置は、クロック同期式通信システムにおいて、通信クロックを出力する方のマスタ装置として用いられる。そのクロック同期式通信システムでは、マスタ装置からスレーブ装置へクロック信号線を介して通信クロックが出力されると共に、マスタ装置とスレーブ装置のうち、データを送信する送信側は、通信クロックの一方のエッジである送信エッジのタイミングで、データ信号線へデータ信号を出力する送信動作を行い、マスタ装置とスレーブ装置のうち、データを受信する受信側は、通信クロックの他方のエッジである受信エッジのタイミングで、データ信号線からデータ信号を受信する受信動作を行う。
【００１２】
そして、本発明の通信装置は、当該通信装置からスレーブ装置にデータを送信する送信期間において、送信動作により前回出力したデータ信号とは異なる値のデータ信号を出力する場合には、通信クロックの送信エッジから受信エッジまでの時間であるクロック前半時間を第１時間にし、送信動作により前回出力したデータ信号と同じ値のデータ信号を出力する場合には、クロック前半時間を第１時間よりも短い第２時間に変更する。
【００１３】
つまり、送信データのビットが同じ値で連続する場合、前回と同じ値のビットを送信するときの送信エッジのタイミングでは、送信動作によりデータ信号線へ前回と同じ値のデータ信号（電圧）を出力することとなる。そして、そのときには、データ信号線の電圧が変化しないため、クロック前半時間について、送信側の出力遅れ時間と受信側のデータセットアップ時間とを考慮する必要がないことに着目し、そのクロック前半時間を、通常の第１時間よりも短い第２時間に変更するようになっている。
【００１４】
よって、この通信装置によれば、前回と同じ値のビットを送信するときのクロック周期（通信クロックの周期）を短くすることができ、その分、クロック同期式通信の通信速度を上げることができる。このため、送信するデータ量（ビット数）が同じであれば、従来よりも通信時間（通信に要する時間）を短縮することができる。
【００１５】
尚、請求項３に記載のように、送信側としての当該通信装置の出力遅れ時間（送信エッジのタイミングで送信動作を開始してから、データ信号線上の電圧が、その送信動作で出力されたデータ信号に該当する電圧になるまでの遅れ時間）が「ｔ１」であり、受信側としてのスレーブ装置のデータセットアップ時間（受信エッジのタイミングに先立って予め送信側がデータ信号線上のデータ信号を確定させておかなければならない最小時間）が「ｔ２」であるとすると、第１時間は、「ｔ１＋ｔ２」以上であれば良く、例えば「ｔ１＋ｔ２」に設定すれば、通信時間を短縮するという面において最も有利である。
【００１６】
そして、スレーブ装置が通信クロックの受信エッジを検出することが可能となるクロック前半時間の最小値が「ｔ３」であるとすると、第２時間は、第１時間よりも短く且つ「ｔ３」以上であれば良く、例えば「ｔ３」に設定すれば、通信時間を短縮するという面において最も有利である。
【００１７】
一方、クロック後半時間（通信クロックの受信エッジから送信エッジまでの時間）については、受信側としてのスレーブ装置のデータホールド時間以上に設定しておけば良い。
ところで、本発明の通信装置は、例えば請求項２に記載のように構成することができる。即ち、その通信装置は、当該通信装置がスレーブ装置にデータを送信する送信期間において、送信動作により今回出力されるデータ信号の値である今回出力値が、送信動作により前回出力されたデータ信号の値である前回出力値と同じであるか否かを判定する判定手段と、その判定手段の判定結果に応じて、今回出力値の出力開始タイミングに該当する通信クロックの送信エッジから、受信エッジまでの時間であるクロック前半時間を変更する時間変更手段とを備えている。そして、時間変更手段は、判定手段により今回出力値が前回出力値と同じではないと判定された場合は、クロック前半時間を第１時間にし、判定手段により今回出力値が前回出力値と同じであると判定された場合は、クロック前半時間を第２時間にする。
【００１８】
また、本発明の通信装置は、複数のスレーブ装置と通信するようになっているのであれば、通信相手のスレーブ装置毎に、少なくとも第２時間を切り替えるように構成することが好ましい。
【００１９】
つまり、通信相手のスレーブ装置によって、前述の「ｔ３」が異なるため、通信相手のスレーブ装置毎に、少なくとも第２時間を切り替えることにより、通信相手に応じて通信時間をできるだけ短くすることができる。また、通信相手のスレーブ装置によって、データセットアップ時間とデータホールド時間との各々も異なるのであれば、第１時間とクロック後半時間との両方又は一方も、通信相手のスレーブ装置毎に切り替えるように構成することにより、通信時間を短縮するという面において更に有利となる。
【００２０】
そして、本発明の通信装置と、その通信装置とクロック同期式通信を行うスレーブ装置とを備えたクロック同期式通信システムによれば、通信速度を従来よりも上げることができる。換言すると、通信するデータ量（ビット数）が同じであれば、従来よりも通信時間を短縮することができる。
【図面の簡単な説明】
【００２１】
【図１】第１実施形態のクロック同期式通信システムを表す構成図である。
【図２】通信手順を説明するタイムチャートである。
【図３】マスタ装置としてのマイコンを表す構成図である。
【図４】クロック制御部の動作を表すフローチャートである。
【図５】マイコンのＣＰＵが実行する通信時処理を表すフローチャートである。
【図６】クロックパルス（通信クロック）の第１ロー時間及び第２ロー時間とハイ時間とを、どのような時間に設定するのかを説明する説明図である。
【図７】第１実施形態の効果を説明する説明図である。
【図８】第２実施形態のクロック同期式通信システムを表す構成図である。
【図９】第２実施形態のマイコンのＣＰＵが実行する通信開始時処理を表すフローチャートである。
【図１０】第２実施形態のマイコンのＣＰＵが実行するタイマ割り込み処理を表すフローチャートである。
【図１１】第３実施形態のクロック同期式通信システムを表す構成図である。
【図１２】第３実施形態のマイコンのＣＰＵが実行する通信時処理を表すフローチャートである。
【図１３】第４実施形態のクロック同期式通信システムを表す構成図である。
【図１４】第４実施形態のクロックパルス（通信クロック）のハイ時間とロー時間を、どのような時間に設定するのかを説明する説明図である。
【図１５】従来技術の説明図である。
【発明を実施するための形態】
【００２２】
以下に、本発明が適用された実施形態のクロック同期式通信システムについて説明する。
［第１実施形態］
図１に示すように、第１実施形態のクロック同期式通信システム１は、マスタ装置としてのマイコン１０と、スレーブ装置としての出力ＩＣ１１とからなる。そして、マイコン１０と出力ＩＣ１１は、チップセレクト信号線２１と、データ信号線２２と、クロック信号線２４によって接続されている。
【００２３】
出力ＩＣ１１は、マイコン１０から受信する情報（データ）に応じて信号を出力する機能を有しており、例えば、マイコン１０からのデータが示す時間を計測して、その時間が経過したなら信号（いわゆるタイムアウト信号）を出力する。
【００２４】
チップセレクト信号線２１は、マイコン１０が出力ＩＣ１１を通信相手に選択する際に出力するチップセレクト信号のための信号線である。尚、本実施形態において、チップセレクト信号はローアクティブである。
【００２５】
データ信号線２２は、マイコン１０からスレーブ装置（この例では出力ＩＣ１１）へデータ信号を出力するための送信線である。
クロック信号線２４は、マイコン１０からスレーブ装置へ同期用の通信クロックを出力するための信号線である。
【００２６】
尚、以下の説明では、通信クロックのことを、クロックパルスと言う。また、図１において、「ＣＳ」は、チップセレクト信号の出力端子又は入力端子であり、「Ｔｘ」は、データ信号出力端子であり、「Ｒｘ」は、データ信号入力端子であり、「Ｃｌｋ」は、クロックパルスの出力端子又は入力端子である。このため、マイコン１０の端子ＣＳと出力ＩＣ１１の端子ＣＳがチップセレクト信号線２１によって接続され、マイコン１０の端子Ｔｘと出力ＩＣ１１の端子Ｒｘがデータ信号線２２によって接続され、マイコン１０の端子Ｃｌｋと出力ＩＣ１１の端子Ｃｌｋがクロック信号線２４によって接続されている。
【００２７】
そして、マイコン１０と出力ＩＣ１１は、図２に示すように通信を行う。
まず、マイコン１０は、端子ＣＳからチップセレクト信号線２１へのチップセレクト信号（即ち、出力ＩＣ１１に対するチップセレクト信号）をローにして、出力ＩＣ１１を通信可能な状態にする。
【００２８】
そして、マイコン１０は、端子Ｃｌｋからクロック信号線２４へクロックパルスを出力すると共に、端子Ｔｘからデータ信号線２２へデータ（この例では１バイト）を出力する。このとき、データの送信側であるマイコン１０は、クロックパルスに送信エッジ（本実施形態では、立ち下がりエッジ）が発生したタイミングで、データ信号線２２にデータ信号を出力する送信動作を行う。尚、この送信動作によってデータ信号線２２へ出力されるデータ信号とは、送信データを成す各ビット（以下、送信データビットともいう）の信号であり、本実施形態では、例えば、送信データビットが“１”ならばハイの電圧であり、送信データビットが“０”ならばローの電圧であるが、送信データビットの値と、出力されるデータ信号の電圧レベルとの対応関係は、逆であっても良い。
【００２９】
また、データの受信側である出力ＩＣ１１は、クロックパルスに受信エッジ（本実施形態では、立ち上がりエッジ）が発生したタイミングで、データ信号線２２からデータ信号を受信する受信動作を行う。
【００３０】
そして、マイコン１０は、データの送信が全て終了したなら、出力ＩＣ１１に対するチップセレクト信号（ＣＳ）をローからハイに戻し、これにより通信が終了する。
尚、図２において、ＣＳ、Ｃｌｋ、Ｔｘの各端子は、全てマイコン１０側の端子であり、その各端子の波形は、上から順に、チップセレクト信号線２１、クロック信号線２４、データ信号線２２の各波形を表している。
【００３１】
次に図３に示すように、マイコン１０は、プログラムを実行するＣＰＵ３１と、そのプログラムが格納されたＲＯＭ３２と、ＣＰＵ３１による演算結果などが記憶されるＲＡＭ３３と、スレーブ装置と通信するための通信モジュール３４と、これらの構成要素を接続するバス３５とを備えている。
【００３２】
そして、通信モジュール３４は、レジスタ群４１と、分周器４２と、カウンタ４３と、当該マイコン１０の端子Ｃｌｋからクロック信号線２４へクロックパルスを出力するクロックパルス出力部４４と、そのクロックパルス出力部４４を制御するクロック制御部４５と、当該マイコン１０の端子Ｔｘからデータ信号線２２へ送信データの各ビットに応じたデータ信号を出力するデータ出力部４６とを備えている。
【００３３】
レジスタ群４１の中には、マイコン１０の動作クロックであるシステムクロックの分周値がＣＰＵ３１によってセットされる（書き込まれる）分周値レジスタ５０と、クロックパルスの２通りのロー時間のうちの長い方である第１ロー時間を示す値がＣＰＵ３１によってセットされる第１ロー時間レジスタ５１と、クロックパルスの２通りのロー時間のうちの短い方である第２ロー時間を示す値がＣＰＵ３１によってセットされる第２ロー時間レジスタ５２と、クロックパルスのハイ時間を示す値がＣＰＵ３１によってセットされるハイ時間レジスタ５３と、送信データ（スレーブ装置への送信対象のデータ）がＣＰＵ３１によってセットされる送信データレジスタ５４と、が含まれている。尚、システムクロックは、水晶などからなる発振子（図示省略）による発振信号を、当該マイコン１０内で波形整形及び分周するなどして生成される。
【００３４】
分周器４２は、システムクロックを、分周値レジスタ５０にセットされている分周値で分周する。そして、カウンタ４３は、分周器４２によって分周された後のクロック（以下、分周クロックという）によってカウントアップされる。
【００３５】
クロックパルス出力部４４は、第１ロー時間レジスタ５１の値（第１ロー時間を示す値）と第２ロー時間レジスタ５２の値（第２ロー時間を示す値）との何れか一方が、クロック制御部４５によりロー時間値ＮＬとして与えられる。また、クロックパルス出力部４４は、ＣＰＵ３１から当該通信モジュール３４へ動作開始指令が出力されるまでは、クロックパルスの出力レベルをハイにしている。
【００３６】
そして、クロックパルス出力部４４は、ＣＰＵ３１から上記動作開始指令が出力されると、動作を開始して、まず、カウンタ４３をリセットする（カウンタ４３の値を０にする）と共に、クロックパルスの出力レベルをハイからローに反転させる。更にその後、クロックパルス出力部４４は、「カウンタ４３の値がクロック制御部４５により与えられるロー時間値ＮＬと一致したら、クロックパルスの出力レベルをローからハイに反転させると共に、カウンタ４３をリセットし、その後、カウンタ４３の値がハイ時間レジスタ５３の値（ハイ時間を示す値）と一致したら、クロックパルスの出力レベルをハイからローに反転させると共に、カウンタ４３をリセットする」という動作を繰り返す。
【００３７】
このため、クロックパルスのロー時間は、「分周クロックの１周期時間Ｔｕ×ロー時間値ＮＬ」となり、クロックパルスのハイ時間は、「分周クロックの１周期時間Ｔｕ×ハイ時間レジスタ５３の値」となる。また、第１ロー時間レジスタ５１には、クロックパルスの第１ロー時間を分周クロックの１周期時間Ｔｕで割った値がセットされ、第２ロー時間レジスタ５２には、クロックパルスの第２ロー時間を分周クロックの１周期時間Ｔｕで割った値がセットされ、ハイ時間レジスタ５３には、クロックパルスのハイ時間を分周クロックの１周期時間Ｔｕで割った値がセットされることとなる。尚、クロックパルスのロー時間とハイ時間を、システムクロックの１周期時間の分解能で可変にするのであれば、分周器４２は設けなくても良い。
【００３８】
そして、クロックパルス出力部４４は、ＣＰＵ３１から当該通信モジュール３４へ動作停止指令が出力されると、動作を停止して、クロックパルスの出力レベルをハイにする。
一方、データ出力部４６は、ＣＰＵ３１から上記動作開始指令が出力されると、クロックパルス出力部４４から出力されるクロックパルスに送信エッジとしての立ち下がりエッジが発生する毎に、送信データレジスタ５４内の送信データを１ビットずつデータ信号線２２に送出する。具体的には、送信データビットが“１”ならば、データ信号線２２へデータ信号としてハイの電圧を出力し、送信データビットが“０”ならば、データ信号線２２へデータ信号としてローの電圧を出力する。
【００３９】
クロック制御部４５は、ＣＰＵ３１から上記動作開始指令が出力されて、クロックパルス出力部４４からのクロックパルスに立ち下がりエッジが最初に発生すると、クロックパルス出力部４４に、第１ロー時間レジスタ５１の値をロー時間値ＮＬとして与える。
【００４０】
そして、その後、クロック制御部４５は、クロックパルスに立ち下がりエッジが発生する毎に、図４に示す動作を行う。
即ち、クロック制御部４５は、まず、クロックパルスの今回の立ち下がりエッジのタイミングで送信される送信データビット（以下、今回送信ビットという）が、前回の立ち下がりエッジのタイミングで送信された送信データビット（以下、前回送信ビットという）と同じであるか否かを判定する（Ｓ１１０）。この動作により、クロック制御部４５は、データ出力部４６によりデータ信号線２２に今回出力されるデータ信号の値（今回出力値）が、データ出力部４６により前回出力されたデータ信号の値（前回出力値）と同じであるか否かを判定することとなる。
【００４１】
そして、クロック制御部４５は、今回送信ビットが前回送信ビットと同じではない（異なっている）と判定したならば（Ｓ１１０：ＮＯ）、クロックパルス出力部４４に、第１ロー時間レジスタ５１の値をロー時間値ＮＬとして与える（Ｓ１２０）。また、クロック制御部４５は、今回送信ビットが前回送信ビットと同じであると判定したならば（Ｓ１１０：ＹＥＳ）、クロックパルス出力部４４に、第２ロー時間レジスタ５２の値をロー時間値ＮＬとして与える（Ｓ１３０）。
【００４２】
このため、今回送信ビットが前回送信ビットと同じでなければ、その今回送信ビットを送信するときのクロックパルスのロー時間が第１ロー時間となり、今回送信ビットが前回送信ビットと同じであれば、その今回送信ビットを送信するときのクロックパルスのロー時間が第２ロー時間となる。尚、クロックパルスの第１ロー時間及び第２ロー時間とハイ時間とを、どのような時間にしているかについては、後で詳しく説明する。
【００４３】
次に、マイコン１０のＣＰＵ３１が、通信のために行う処理の内容について説明する。
ＣＰＵ３１は、例えば、当該マイコン１０が起動した直後に実行する起動時処理により、システムクロックの分周値を設定する。具体的には、分周値レジスタ５０に分周値を設定する。
【００４４】
そして、ＣＰＵ３１は、当該マイコン１０が出力ＩＣ１１と通信すべき通信タイミングが到来すると、図５の通信時処理を実行する。尚、通信タイミングとしては、定期的なものや、特定のイベントが発生したときなどがある。
【００４５】
図５に示すように、ＣＰＵ３１が通信時処理の実行を開始すると、まずＳ２１０にて、クロックパルスのハイ時間を設定し、次のＳ２２０にて、クロックパルスの第１ロー時間を設定し、次のＳ２３０にて、クロックパルスの第２ロー時間を設定する。具体的には、ハイ時間レジスタ５３にハイ時間を示す値（「ハイ時間／Ｔｕ」の値）をセットし、第１ロー時間レジスタ５１に第１ロー時間を示す値（「第１ロー時間／Ｔｕ」の値）をセットし、第２ロー時間レジスタ５２に第２ロー時間を示す値（「第２ロー時間／Ｔｕ」の値）をセットする。尚、このＳ２１０〜Ｓ２３０の処理は、上記起動時処理の中で行っても良い。
【００４６】
そして、続くＳ２４０にて、送信データレジスタ５４に送信データをセットすると共に、出力ＩＣ１１へのチップセレクト信号（ＣＳ）をローにして、出力ＩＣ１１を通信可能な状態にする。
【００４７】
次に、Ｓ２５０にて、通信モジュール３４へ前述した動作開始指令を出力することにより、通信モジュール３４に出力ＩＣ１１との通信を実施させる。前述したように、ＣＰＵ３１から通信モジュール３４に動作開始指令が出力されると、クロックパルス出力部４４からクロックパルスが出力され、そのクロックパルスに立ち下がりエッジが発生する毎に、送信データレジスタ５４内の送信データが１ビットずつデータ信号線２２に送出される。
【００４８】
そして、ＣＰＵ３１は、送信データレジスタ５４内の送信データが全て送信されると、Ｓ２６０にて、通信モジュール３４へ前述した動作停止指令を出力して、クロックパルス出力部４４の動作を停止させると共に、出力ＩＣ１１へのチップセレクト信号（ＣＳ）をローからハイに戻す。これにより、通信時処理が終了する。
【００４９】
次に、クロックパルスの第１ロー時間及び第２ロー時間とハイ時間とを、どのような時間にしているかについて、図６を用い説明する。
一例として、本実施形態においては、マスタ装置としてのマイコン１０の出力遅れ時間ｔＡが、５０μｓとなっており、マイコン１０の通信相手であるスレーブ装置（本実施形態では出力ＩＣ１１）のデータセットアップ時間ｔｂとデータホールド時間ｔｃとが、それぞれ１５０μｓ、１００μｓとなっている（図６（Ａ）参照）。
【００５０】
そして、このような数値の場合、マイコン１０からスレーブ装置（出力ＩＣ１１）への送信を成立させるためのクロックパルスのロー時間ＴＬとハイ時間ＴＨは、下記の式ａ１，ｂ１の関係を満たす必要がある。
【００５１】
ＴＬ≧（ｔＡ＋ｔｂ）＝（５０μｓ＋１５０μｓ）＝２００μｓ…式ａ１
ＴＨ≧ｔｃ＝１００μｓ…式ｂ１
このため、本実施形態では、図６（Ａ）に示すように、クロックパルスの第１ロー時間ＴＬ１を、式ａ１の関係（詳しくは、式ａ１のロー時間ＴＬの条件）を満たす最小値の「ｔＡ＋ｔｂ＝２００μｓ」にし、クロックパルスのハイ時間ＴＨを、式ｂ１の関係を満たす最小値の「ｔｃ＝１００μｓ」にしている。
【００５２】
但し、送信データビットが同じ値で連続する場合、前回と同じ値のビットを送信するときには、データ出力部４６は、データ信号線２２へ前回と同じ値のデータ信号（電圧）を出力することとなる。そして、そのときには、データ信号線２２の電圧が変化しないため、クロックパルスのロー時間ＴＬについて、送信側の出力遅れ時間（ｔＡ）と受信側のデータセットアップ時間（ｔｂ）とを考慮する必要はない。
【００５３】
このことから、本実施形態では、前回と同じ値のビットを送信するときのクロックパルスのロー時間ＴＬである第２ロー時間ＴＬ２を、図６（Ｂ）に示すように、第１ロー時間ＴＬ１よりも短い時間にしている。
【００５４】
具体的には、出力ＩＣ１１がクロックパルスの立ち上がりエッジ（受信エッジ）を検出することが可能となるロー時間ＴＬの最小値（以下、ロー認識最小値という）が、例えば２μｓであるとすると、第２ロー時間ＴＬ２は、その２μｓ以上であれば良い。このため、本実施形態では、第２ロー時間ＴＬ２を、その２μｓにしている。
【００５５】
よって、このような本実施形態のクロック同期式通信システム１によれば、前回と同じ値のビットを送信するときのクロック周期（クロックパルスの周期）を、通信可能な限度内で短くすることができ、図６の例では、クロック周期を３００μｓ（＝２００μｓ＋１００μｓ）から１０２μｓ（＝２μｓ＋１００μｓ）に短縮することができる。そして、その分、通信速度を上げることができ、送信するデータ量（ビット数）が同じであれば、通信時間を短縮することができる。
【００５６】
例えば、マイコン１０から出力ＩＣ１１へ「０１００１０１１」という８ビットデータを送信したとする。
この場合に、もし、クロックパルスのロー時間ＴＬを、第１ロー時間ＴＬ１（＝２００μｓ）に固定したならば、図７（Ｂ）に示すように、８ビットデータを送信するのに２４００μｓ（＝３００μｓ×８）かかることとなる。
【００５７】
これに対し、本実施形態のクロック同期式通信システム１おいて、マイコン１０は、上記８ビットデータのうち、連続する“０”の後の方を送信するときと、連続する“１”の後の方を送信するときには、クロックパルスのロー時間ＴＬを、第１ロー時間ＴＬ１（＝２００μｓ）から第２ロー時間ＴＬ２（＝２μｓ）に変更することから、８ビットデータを送信するのに要する通信時間は、２００４（＝２４００−（２００−２）×２）μｓで済むこととなる。
【００５８】
ちなみに、図６に示した数値例の場合に、クロックパルスのロー時間ＴＬとハイ時間ＴＨとを、同じ値に固定したとすると、ロー時間ＴＬとハイ時間ＴＨは、式ａ１と式ｂ１との両方を満たす同値に設定することとなるため、両方とも２００μｓとなる。このため、上記の８ビットデータを送信するのに要する通信時間は、図７（Ａ）に示すように、３２００μｓ（＝４００μｓ×８）になってしまう。
【００５９】
尚、第１ロー時間ＴＬ１は、上記式ａ１の関係を満たしていれば、最小値の「ｔＡ＋ｔｂ」でなくても良い。同様に、ハイ時間ＴＨも、上記式ｂ１の関係を満たしていれば、最小値の「ｔｃ」でなくても良い。そして、第２ロー時間ＴＬ２についても、第１ロー時間ＴＬ１より短ければ効果を奏するのであり、ロー認識最小値（上記の例では２μｓ）より長い時間に設定しても良い。
【００６０】
一方、本実施形態では、クロックパルス（通信クロック）のロー時間が、クロック前半時間の一例であり、第１ロー時間が、第１時間の一例であり、第２ロー時間が、第２時間の一例である。そして、マイコン１０が、マスタ装置として用いられる通信装置の一例に相当し、また、クロック制御部４５において、図４のＳ１１０の判定動作を行う部分が、判定手段の一例に相当し、図４のＳ１２０とＳ２３０の動作を行う部分が、時間変更手段の一例に相当している。
【００６１】
［第２実施形態］
第２実施形態のクロック同期式通信システムは、第１実施形態のクロック同期式通信システム１と比較すると、マイコン１０に代えて、図８に示すマイコン６０を備えている。
【００６２】
そして、図８に示すように、マイコン６０は、第１実施形態のマイコン１０と比較すると、通信モジュール３４を備えておらず、その代わりに、内蔵されたタイマ部６１とＩ／Ｏポート（入出力ポート）６３とを利用して、クロック信号線２４へのクロックパルスの出力と、データ信号線２２へのデータ信号の出力とを行うようになっている。
【００６３】
タイマ部６１は、一定周期のクロック（本実施形態ではシステムクロック）によってカウントアップされるフリーランタイマ（ＦＲＴ）６５と、レジスタ群６７とを備えている。
【００６４】
レジスタ群６７の中には、フリーランタイマ６５の値（以下、フリーランタイマ値という）と比較されるタイマ閾値がＣＰＵ３１によってセットされる閾値レジスタ６８と、タイマ割り込みを許可するか否かを示す割り込み許可フラグがＣＰＵ３１によってセットされる割り込み設定レジスタ６９とが含まれている。
【００６５】
そして、タイマ部６１は、割り込み設定レジスタ６９にセットされている割り込み許可フラグが、割り込み許可を示す方の値（例えば“１”）である場合に、フリーランタイマ値が閾値レジスタ６８内のタイマ閾値と一致すると、ＣＰＵ３１に対してタイマ割り込み要求を出力する。すると、ＣＰＵ３１は、後述する図１０のタイマ割り込み処理を実行することとなる。
【００６６】
Ｉ／Ｏポート６３は、レジスタ群７１を備えており、そのレジスタ群７１の中には、信号出力用のレジスタとして、クロックパルスの出力レベル（以下、クロックパルス出力ともいう）を示す１ビットデータがＣＰＵ３１によりセットされる第１データレジスタ７２と、ＣＰＵ３１により送信データビットがセットされる第２データレジスタ７３とが、含まれている。
【００６７】
そして、Ｉ／Ｏポート６３は、第１データレジスタ７２にセットされた１ビットデータに応じて、当該マイコン６０の端子Ｃｌｋの出力レベル（即ち、端子Ｃｌｋからクロック信号線２４に出力するクロックパルスのレベル）を、ハイとローに切り替える。具体的には、第１データレジスタ７２にセットされた１ビットデータが“１”であれば、端子Ｃｌｋからのクロックパルスをハイにし、第１データレジスタ７２にセットされた１ビットデータが“０”であれば、端子Ｃｌｋからのクロックパルスをローにする。尚、第１データレジスタ７２にセットされる１ビットデータの値と、端子Ｃｌｋから出力されるクロックパルスのレベルとの対応関係は、逆であっても良い。
【００６８】
同様に、Ｉ／Ｏポート６３は、第２データレジスタ７３にセットされた送信データビットに応じて、当該マイコン６０の端子Ｔｘの出力レベル（即ち、端子Ｔｘからデータ信号線２２に出力するデータ信号のレベル）を、ハイとローに切り替える。具体的には、第２データレジスタ７３にセットされた送信データビットが“１”であれば、端子Ｔｘからのデータ信号をハイにし、第２データレジスタ７３にセットされた送信データビットが“０”であれば、端子Ｔｘからのデータ信号をローにする。尚、第２データレジスタ７３にセットされる送信データビットの値と、端子Ｔｘから出力されるデータ信号のレベルとの対応関係は、逆であっても良い。
【００６９】
次に、マイコン６０のＣＰＵ３１が、通信のために行う処理の内容について説明する。
ＣＰＵ３１は、当該マイコン６０と出力ＩＣ１１とが通信すべき通信タイミングが到来すると、図９の通信開始時処理を実行する。その通信開始時処理は、通信の準備を行うための処理である。
【００７０】
そして、図９に示すように、ＣＰＵ３１が通信開始時処理の実行を開始すると、まずＳ３１０にて、割り込み設定レジスタ６９に割り込み許可フラグとして“１”を書き込むことにより、タイマ割り込みを許可する。つまり、図１０のタイマ割り込み処理の実行を許可する。
【００７１】
次にＳ３２０にて、閾値レジスタ６８に、タイマ閾値として、クロックパルスの最初のハイ時間である初回ハイ時間に相当する値（以下、初回ハイ時間相当値という）をセットする。尚、初回ハイ時間は、このＳ３２０の処理が行われる時点から当該通信開始時処理が終了するまでの時間よりも長い時間であれば良い。そして、初回ハイ時間相当値は、「初回ハイ時間／システムクロックの１周期時間Ｔｓ」の値を、現在のフリーランタイマ値に加えた値である。
【００７２】
次にＳ３３０にて、第１データレジスタ７２に“１”をセットすることにより、クロックパルス出力をハイにする。
最後にＳ３４０にて、出力ＩＣ１１へのチップセレクト信号（ＣＳ）をハイからローにすることにより、出力ＩＣ１１を通信可能な状態にし、その後、当該通信開始時処理を終了する。
【００７３】
そして、上記Ｓ３２０の処理を行ったときから初回ハイ時間が経過すると、フリーランタイマ値が閾値レジスタ６８内のタイマ閾値と一致して、タイマ部６１からＣＰＵ３１にタイマ割り込み要求が出力され、ＣＰＵ３１は、図１０のタイマ割り込み処理を実行することとなる。尚、図１０のタイマ割り込み処理は、クロックパルスの出力と、送信データの１ビットずつの出力（送信）とを行うための処理である。
【００７４】
図１０に示すように、ＣＰＵ３１がタイマ割り込み処理の実行を開始すると、まずＳ４１０にて、現在のクロックパルス出力がハイであるか否かを判定する。具体的には、第１データレジスタ７２の値（即ち、前述の１ビットデータ）を“１”にしているか否かを判定する。
【００７５】
そして、このＳ４１０にて、現在のクロックパルス出力がハイであると判定した場合には、Ｓ４２０に進む。
Ｓ４２０では、今回送信ビットが前回送信ビットと同じであるか否かを判定し、今回送信ビットが前回送信ビットと同じではないと否定判定（ＮＯと判定）した場合には、Ｓ４３０に進む。
【００７６】
尚、今回送信ビットは、今回の当該タイマ割り込み処理における後述のＳ４５０で送信する（即ち、データ信号線２２に出力する）送信データビットであり、前回送信ビットは、前回の当該タイマ割り込み処理における後述のＳ４５０で送信した送信データビットである。また、図９の通信開始時処理が終了してから当該タイマ割込み処理が最初に実行された場合には、クロックパルス出力がハイになっているため、必ずＳ４２０に進むことになるが、その最初の回のＳ４２０では、前回送信ビットが存在しないため、必ず否定判定してＳ４３０に進むようになっている。
【００７７】
そして、Ｓ４３０では、閾値レジスタ６８に、タイマ閾値として、第１ロー時間に相当する値である第１ロー時間相当値をセットし、その後、Ｓ４５０に進む。
尚、第１ロー時間相当値は、前述したクロックパルスの第１ロー時間ＴＬ１をシステムクロックの１周期時間Ｔｓで割った値（ＴＬ１／Ｔｓ）を、現在のフリーランタイマ値に加えた値である。このため、Ｓ４３０の処理を行ったときから第１ロー時間ＴＬ１が経過すると、フリーランタイマ値が閾値レジスタ６８内のタイマ閾値と一致して、ＣＰＵ３１は当該タイマ割り込み処理を再び実行することとなる。
【００７８】
また、上記４２０にて、今回送信ビットが前回送信ビットと同じであると判定した場合には、Ｓ４４０に移行して、閾値レジスタ６８に、タイマ閾値として、第２ロー時間に相当する値である第２ロー時間相当値をセットし、その後、Ｓ４５０に進む。
【００７９】
尚、第２ロー時間相当値は、前述したクロックパルスの第２ロー時間ＴＬ２をシステムクロックの１周期時間Ｔｓで割った値（ＴＬ２／Ｔｓ）を、現在のフリーランタイマ値に加えた値である。このため、Ｓ４４０の処理を行ったときから第２ロー時間ＴＬ２が経過すると、フリーランタイマ値が閾値レジスタ６８内のタイマ閾値と一致して、ＣＰＵ３１は当該タイマ割り込み処理を再び実行することとなる。
【００８０】
そして、Ｓ４５０では、今回送信すべき送信データビット（今回送信ビット）を第２データレジスタ７３にセットすることにより、その送信データビットに応じたデータ信号を端子Ｔｘからデータ信号線２２へ出力する。更に、続くＳ４６０にて、第１データレジスタ７２に“０”をセットすることにより、クロックパルス出力をハイからローに反転させる。そして、その後、当該タイマ割り込み処理を終了する。
【００８１】
一方、上記Ｓ４１０にて、現在のクロックパルス出力がハイではない（ローである）と判定した場合には、Ｓ４７０に移行して、閾値レジスタ６８に、タイマ閾値として、ハイ時間に相当する値であるハイ時間相当値をセットする。
【００８２】
尚、ハイ時間相当値は、前述したクロックパルスのハイ時間ＴＬＨをシステムクロックの１周期時間Ｔｓで割った値（ＴＨ／Ｔｓ）を、現在のフリーランタイマ値に加えた値である。このため、Ｓ４７０の処理を行ったときからハイ時間ＴＨが経過すると、フリーランタイマ値が閾値レジスタ６８内のタイマ閾値と一致して、ＣＰＵ３１は当該タイマ割り込み処理を再び実行することとなる。
【００８３】
そして、続くＳ４８０にて、第１データレジスタ７２に“１”をセットすることにより、クロックパルス出力をローからハイに反転させ、その後、当該タイマ割り込み処理を終了する。
【００８４】
また、図示は省略しているが、ＣＰＵ３１は、上記Ｓ４５０の処理を送信データのビット数の回数だけ実行した後（つまり、Ｓ４５０の処理により送信データビットの全てを送信し終えた後）、上記Ｓ４１０にてクロックパルス出力がハイであると判定した場合には、Ｓ４２０〜Ｓ４６０の処理を行うことなく、そのまま当該タイマ割り込み処理を終了する。そして、その場合、ＣＰＵ３１は、割り込み設定レジスタ６９に割り込み許可フラグとして“０”を書き込むことにより、タイマ割り込みを禁止し、更に、出力ＩＣ１１へのチップセレクト信号（ＣＳ）をローからハイに戻す。
【００８５】
以上の処理により、マイコン６０では、下記（１）〜（５）の動作が行われることとなる。
（１）まず、図９の通信開始時処理におけるＳ３２０の処理が行われてから初回ハイ時間が経過して、図１０のタイマ割り込み処理が最初に実行されると、Ｓ４１０でＹＥＳと判定されるため、Ｓ４５０及びＳ４６０の処理により、最初の送信データビット（即ち、送信データの１ビット目）に応じたデータ信号をデータ信号線２２へ出力すると共に、クロックパルス出力をハイからローに反転させることとなり、また、その場合には、Ｓ４３０の処理により、閾値レジスタ６８に、クロックパルスのロー時間を決定する値として、第１ロー時間相当値をセットすることとなる。
【００８６】
（２）そして、その後、第１ロー時間ＴＬ１が経過すると、タイマ割り込み処理が再び実行されるが、その回のタイマ割り込み処理では、Ｓ４１０でＮＯと判定されるため、Ｓ４８０の処理により、クロックパルス出力をローからハイに反転させることとなり、また、Ｓ４７０の処理により、閾値レジスタ６８に、クロックパルスのハイ時間を決定する値として、ハイ時間相当値をセットすることとなる。
【００８７】
（３）よって、その後、ハイ時間ＴＨが経過すると、タイマ割り込み処理が再び実行される。そして、その回のタイマ割り込み処理では、Ｓ４１０でＹＥＳと判定されるため、Ｓ４５０及びＳ４６０の処理により、今回送信すべき送信データビット（今回送信ビットであり、この場合は、送信データの２ビット目）に応じたデータ信号をデータ信号線２２へ出力すると共に、クロックパルス出力をハイからローに反転させることとなる。そして更に、その回のタイマ割り込み処理では、Ｓ４２０の処理により、今回送信ビットが前回送信ビットと同じであるか否かを判定して、今回送信ビットが前回送信ビットと同じでなければ、Ｓ４３０の処理により、閾値レジスタ６８に第１ロー時間相当値をセットするが、今回送信ビットが前回送信ビットと同じであれば、Ｓ４４０の処理により、閾値レジスタ６８に第２ロー時間相当値をセットすることとなる。
【００８８】
（４）そして、その後、閾値レジスタ６８にセットされた値に相当する時間（即ち、第１ロー時間ＴＬ１又は第２ロー時間ＴＬ２）が経過すると、タイマ割り込み処理が再び実行される。そして、その回のタイマ割り込み処理では、Ｓ４１０でＮＯと判定されるため、Ｓ４８０の処理により、クロックパルス出力をローからハイに反転させることとなり、また、Ｓ４７０の処理により、閾値レジスタ６８にハイ時間相当値をセットすることとなる。
【００８９】
（５）その後は、上記（３）と（４）の動作が繰り返されることにより、送信データの３ビット目以降が順次送信されることとなる。
そして、以上のようなマイコン６０をマスタ装置として備える第２実施形態のクロック同期式通信システムによっても、第１実施形態と同様に、前回と同じ値のビットを送信するときのクロックパルスのロー時間を、前回と異なる値のビットを送信するときのクロックパルスのロー時間である第１ロー時間ＴＬ１よりも短い第２ロー時間ＴＬ２に変更するため（Ｓ４２０：ＹＥＳ→Ｓ４４０）、その分、通信速度を上げることができ、送信するデータ量（ビット数）が同じであれば、通信時間を短縮することができる。
【００９０】
尚、本実施形態では、マイコン６０が、マスタ装置として用いられる通信装置の一例に相当しており、マイコン６０のＣＰＵ３１が、判定手段と時間変更手段との一例に相当している。そして、図１０におけるＳ４２０の処理が、ＣＰＵ３１を判定手段として機能させる処理の一例に相当し、図１０におけるＳ４３０及びＳ４４０の処理が、ＣＰＵ３１を時間変更手段として機能させる処理の一例に相当している。
【００９１】
［第３実施形態］
図１１に示すように、第３実施形態のクロック同期式通信システム３は、第１実施形態のクロック同期式通信システム１と比較すると、下記の点が異なっている。
【００９２】
まず、第１の相違点として、マイコン１０は、複数のスレーブ装置と通信するようになっている。この例では、マイコン１０は、出力ＩＣ１１に加えて、その出力ＩＣ１１とは別の出力ＩＣ１２とも通信するようになっている。
【００９３】
このため、マイコン１０と出力ＩＣ１２との間には、マイコン１０が出力ＩＣ１２を通信相手に選択する際に出力するチップセレクト信号のためのチップセレクト信号線２５が設けられている。そして、出力ＩＣ１２のデータ信号入力端子Ｒｘはデータ信号線２２に接続され、出力ＩＣ１２のクロックパルス用の入力端子Ｃｌｋはクロック信号線２４に接続されている。
【００９４】
次に、第２の相違点として、マイコン１０のＣＰＵ３１は、何れかのスレーブ装置（出力ＩＣ１１又は出力ＩＣ１２）と通信すべき通信タイミングが到来すると、図５の通信時処理に代えて、図１２の通信時処理を行う。
【００９５】
図１２に示すように、マイコン１０のＣＰＵ３１が通信時処理を開始すると、まず、前述した図５のＳ２１０〜Ｓ２３０と同様のＳ５１０〜Ｓ５３０にて、通信相手（出力ＩＣ１１又は出力ＩＣ１２）に応じたクロックパルスのハイ時間、第１ロー時間及び第２ロー時間の各々を示す各値を、ハイ時間レジスタ５３と第１ロー時間レジスタ５１と第２ロー時間レジスタ５２との各々にセットする。
【００９６】
例えば、マイコン１０の出力遅れ時間と、出力ＩＣ１１のデータセットアップ時間と、出力ＩＣ１１のデータホールド時間と、出力ＩＣ１１のロー認識最小値とが、第１実施形態と同じ値で、それぞれ５０μｓ、１５０μｓ、１００μｓ、２μｓであり、出力ＩＣ１２のデータセットアップ時間と、出力ＩＣ１２のデータホールド時間と、出力ＩＣ１２のロー認識最小値とが、それぞれ１２０μｓ、８０μｓ、１．５μｓであるとする。
【００９７】
そして、このような数値例の場合、通信相手が出力ＩＣ１１であれば、第１実施形態と同様に、クロックパルスのハイ時間ＴＨが１００μｓとなり、クロックパルスの第１ロー時間ＴＬ１が２００μｓとなり、クロックパルスの第２ロー時間ＴＬ２が２μｓとなるように、ハイ時間レジスタ５３、第１ロー時間レジスタ５１及び第２ロー時間レジスタ５２の各々に値をセットする。また、通信相手が出力ＩＣ１２であれば、クロックパルスのハイ時間ＴＨが、式ｂ１の関係を満たす最小値である８０μｓとなり、クロックパルスの第１ロー時間ＴＬ１が、式ａ１の関係を満たす最小値である１７０μｓ（＝５０μｓ＋１２０μｓ）となり、クロックパルスの第２ロー時間ＴＬ２が、出力ＩＣ１２のロー認識最小値である１．５μｓとなるように、ハイ時間レジスタ５３、第１ロー時間レジスタ５１及び第２ロー時間レジスタ５２の各々に値をセットする。
【００９８】
次に、図１２の通信時処理では、Ｓ５４０にて、送信データレジスタ５４に送信データをセットすると共に、通信相手へのチップセレクト信号（ＣＳ）をローにして、その通信相手を通信可能な状態にする。
【００９９】
そして、続くＳ５５０にて、図５のＳ２５０と同様に、通信モジュール３４へ前述した動作開始指令を出力することにより、通信モジュール３４に通信相手との通信を実施させる。そして、ＣＰＵ３１は、送信データレジスタ５４内の送信データが全て送信されると、Ｓ５６０にて、通信モジュール３４へ前述した動作停止指令を出力して、クロックパルス出力部４４の動作を停止させると共に、通信相手へのチップセレクト信号（ＣＳ）をローからハイに戻す。これにより、通信時処理が終了する。
【０１００】
以上のような第３実施形態のマイコン１０によれば、通信相手のスレーブ装置毎に、クロックパルスのハイ時間ＴＨ、第１ロー時間ＴＬ１及び第２ロー時間ＴＬ２を切り替えることとなり、通信相手に応じて通信時間をできるだけ短くすることができる。
また、本第３実施形態の思想は、第２実施形態のマイコン６０についても同様に適用することができる。つまり、図１１のクロック同期式通信システム３において、マイコン１０の代わりに、第２実施形態のマイコン６０を用いても良い。
【０１０１】
その場合、マイコン６０のＣＰＵ３１は、何れかのスレーブ装置と通信すべき通信タイミングが到来すると、図９の通信開始時処理を実行し、その通信開始時処理のＳ３４０では、通信相手へのチップセレクト信号（ＣＳ）をハイからローにすれば良い。そして更に、マイコン６０のＣＰＵ３１は、図１０のタイマ割り込み処理におけるステップのうち、Ｓ４３０では、通信相手に応じたクロックパルスの第１ロー時間ＴＬ１に相当する値を、タイマ閾値として閾値レジスタ６８にセットし、Ｓ４４０では、通信相手に応じたクロックパルスの第２ロー時間ＴＬ２に相当する値を、タイマ閾値として閾値レジスタ６８にセットし、Ｓ４７０では、通信相手に応じたクロックパルスのハイ時間ＴＨに相当する値を、タイマ閾値として閾値レジスタ６８にセットすれば良い。
【０１０２】
［第４実施形態］
図１３に示すように、第４実施形態のクロック同期式通信システム４は、第１実施形態のクロック同期式通信システム１と比較すると、マイコン１０の通信相手であるスレーブ装置がＥＥＰＲＯＭ１３になっており、マイコン１０は、そのＥＥＰＲＯＭ１３と双方向の通信を行う。
【０１０３】
このため、マイコン１０とＥＥＰＲＯＭ１３との間には、既述した各信号線２１，２２，２４に加えて、マイコン１０がＥＥＰＲＯＭ１３からのデータ信号を受信するためのデータ信号線２３が設けられている。そして、そのデータ信号線２３によって、マイコン１０のデータ信号入力端子ＲｘとＥＥＰＲＯＭ１３のデータ信号出力端子Ｔｘとが接続されている。
【０１０４】
また、本実施形態のクロック同期式通信システム４では、まず、マイコン１０からＥＥＰＲＯＭ１３へ、データ読み出し先のアドレスを指定するリード命令が、通信データとして送信される。そして、ＥＥＰＲＯＭ１１は、そのリード命令によって指定されるアドレスのデータを、通信データとしてマイコン１０に送信する。
【０１０５】
そして、マイコン１０からＥＥＰＲＯＭ１３への送信時と、ＥＥＰＲＯＭ１３からマイコン１０への送信時との、何れの場合でも、送信側は、クロックパルスに送信エッジ（本実施形態では、立ち下がりエッジ）が発生したタイミングで、データ信号線（２２又は２３）にデータ信号を出力する送信動作を行い、受信側は、クロックパルスに受信エッジ（本実施形態では、立ち上がりエッジ）が発生したタイミングで、データ信号線（２２又は２３）からデータ信号を受信する受信動作を行う。
【０１０６】
次に、マイコン１０が、クロックパルスのハイ時間とロー時間を、どのような時間に設定するのかについて説明する。
まず、本実施形態において、マイコン１０とＥＥＰＲＯＭ１３の各々の出力遅れ時間、データセットアップ時間、データホールド時間は、例えば図１４（Ａ）に示す値となっている。また、ＥＥＰＲＯＭ１３のロー認識最小値は、例えば２μｓである。尚、図１４において、マスタはマイコン１０のことであり、スレーブはＥＥＰＲＯＭ１３のことである。そして、図１４及び本実施形態において、ｔＡは、マイコン１０の出力遅れ時間であり、ｔＢは、マイコン１０のデータセットアップ時間であり、ｔＣは、マイコン１０のデータホールド時間であり、ｔａは、ＥＥＰＲＯＭ１３の出力遅れ時間であり、ｔｂは、ＥＥＰＲＯＭ１３のデータセットアップ時間であり、ｔｃは、ＥＥＰＲＯＭ１３のデータホールド時間である。
【０１０７】
そして、マイコン１０からＥＥＰＲＯＭ１３への送信を考えた場合、クロックパルスの第１ロー時間ＴＬ１は、前述した式ａ１の関係を満たす必要があり、クロックパルスのハイ時間ＴＨは、前述した式ｂ１の関係を満たす必要がある。
【０１０８】
また逆に、ＥＥＰＲＯＭ１３からマイコン１０への送信を考えた場合、クロックパルスの第１ロー時間ＴＬ１とハイ時間ＴＨは、下記の式ａ２，ｂ２の関係を満たす必要がある。
ＴＬ１≧（ｔａ＋ｔＢ）＝（１００μｓ＋３０μｓ）＝１３０μｓ…式ａ２
ＴＨ≧ｔＣ＝４０μｓ…式ｂ２
そこで、マイコン１０は、ＥＥＰＲＯＭ１３へデータ（リード命令）を送信する送信期間においては、クロックパルスの第１ロー時間ＴＬ１とハイ時間ＴＨとを、式ａ１，ｂ１の関係を満たす最小値に設定する。つまり、図１４（Ｂ）に示すように、マイコン１０は、第１ロー時間ＴＬ１を２００μｓにし、ハイ時間ＴＨを１００μｓにする。
【０１０９】
更に、マイコン１０は、クロックパルスの第２ロー時間ＴＬ２を、ＥＥＰＲＯＭ１３のロー認識最小値（＝２μｓ）以上で、且つ、図１４（Ｂ）の第１ロー時間ＴＬ１（＝２００μｓ）よりも短い時間に設定する。本実施形態では、第２ロー時間ＴＬ２を、設定可能な最小値である２μｓにしている。つまり、図１４（Ｃ）に示すように、マイコン１０は、ＥＥＰＲＯＭ１３への送信期間において、前回と同じ値のビットを送信するときのクロックパルスのロー時間（第２ロー時間ＴＬ２）を、２μｓにする。
【０１１０】
また、マイコン１０は、ＥＥＰＲＯＭ１３からデータを受信する受信期間においては、クロックパルスの第１ロー時間ＴＬ１とハイ時間ＴＨとを、式ａ２，ｂ２の関係を満たす最小値に設定する。つまり、図１４（Ｄ）に示すように、マイコン１０は、第１ロー時間ＴＬ１を１３０μｓにし、ハイ時間ＴＨを４０μｓにする。そして更に、マイコン１０は、受信期間においては、クロックパルスのロー時間を、変更せずに第１ロー時間ＴＬ１のままにする。
【０１１１】
以上のことから、マイコン１０のＣＰＵ３１は、ＥＥＰＲＯＭ１３と通信すべき通信タイミングが到来すると、前述した図５の通信時処理を開始するが、その通信時処理では、まずＳ２１０〜Ｓ２３０にて、ハイ時間レジスタ５３に、送信時用のハイ時間（＝１００μｓ）を示す値（１００μｓ／Ｔｕ）をセットし、第１ロー時間レジスタ５１に、送信時用の第１ロー時間（＝２００μｓ）を示す値（２００μｓ／Ｔｕ）をセットし、更に、第２ロー時間レジスタ５２に、第２ロー時間（＝２μｓ）を示す値（２μｓ／Ｔｕ）値をセットする。尚、Ｔｕは、分周クロックの１周期時間である。
【０１１２】
そして、続くＳ２４０にて、送信データレジスタ５４に送信データをセットすると共に、ＥＥＰＲＯＭ１３へのチップセレクト信号（ＣＳ）をローにし、次のＳ２５０にて、通信モジュール３４へ動作開始指令を出力することにより、通信モジュール３４にＥＥＰＲＯＭ１３へのデータ送信を実施させる。
【０１１３】
そして、ＣＰＵ３１は、送信データレジスタ５４内の送信データがＥＥＰＲＯＭ１３に全て送信されると、ＥＥＰＲＯＭ１３からのデータを受信するための準備処理として、ハイ時間レジスタ５３に、受信時用のハイ時間（＝４０μｓ）を示す値（４０μｓ／Ｔｕ）をセットし、第１ロー時間レジスタ５１に、受信時用の第１ロー時間（＝１３０μｓ）を示す値（１３０μｓ／Ｔｕ）」をセットする。
【０１１４】
そして更に、ＣＰＵ３１は、クロック制御部４５が、図４のＳ１１０〜Ｓ１３０の動作のうち、Ｓ１２０の動作だけを行うようにさせる。このため、ＥＥＰＲＯＭ１３からの受信期間において、クロックパルスのロー時間は、受信時用の第１ロー時間（＝１３０μｓ）のままとなる。また、マイコン１０の通信モジュール３４は、送信データレジスタ５４内の送信データを全て送信すると、動作モードが受信モードとなる。そして、通信モジュール３４は、その受信モードでは、クロックパルスに受信エッジが発生する毎に、データ信号線２３からデータ信号を受信する受信動作として、データ信号線２３の電圧レベルを読み取ると共に、その読み取った電圧レベルに対応する“１”又は“０”のデータを所定の受信データ記憶部に格納する動作を行う。
【０１１５】
そして、ＣＰＵ３１は、このような通信モジュール３４の受信動作によってＥＥＰＲＯＭ１３からの全てのデータが受信されると、Ｓ２６０に進み、通信モジュール３４へ動作停止指令を出力して、クロックパルス出力部４４の動作を停止させると共に、ＥＥＰＲＯＭ１３へのチップセレクト信号（ＣＳ）をローからハイに戻す。これにより、ＥＥＰＲＯＭ１３との通信が終了する。
【０１１６】
以上のような第４実施形態によっても、マイコン１０からＥＥＰＲＯＭ１３へのデータ送信について、クロックパルスのロー時間を送信時用の第１ロー時間のままにする構成と比較すると、通信時間を短縮することができる。また、本第４実施形態の思想は、第２実施形態のマイコン６０についても同様に適用することができる。
【０１１７】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１１８】
例えば、通信クロック（クロックパルス）のエッジのうち、立ち上がりエッジが送信エッジで、立ち下がりエッジが受信エッジであっても良い。また、通信相手のスレーブ装置は、出力ＩＣやＥＥＰＲＯＭ以外でも良い。
【符号の説明】
【０１１９】
１，３，４…クロック同期式通信システム、１０，６０…マイコン
１１，１２…出力ＩＣ、１３…ＥＥＰＲＯＭ、２１，２５…チップセレクト信号線
２２，２３…データ信号線、２４…クロック信号線、３１…ＣＰＵ、３２…ＲＯＭ
３３…ＲＡＭ、３４…通信モジュール、３５…バス、４１，６７，７１…レジスタ群
４２…分周器、４３…カウンタ、４４…クロックパルス出力部
４５…クロック制御部、４６…データ出力部、５０…分周値レジスタ
５１…第１ロー時間レジスタ、５２…第２ロー時間レジスタ
５３…ハイ時間レジスタ、５４…送信データレジスタ、６１…タイマ部
６３…Ｉ／Ｏポート、６５…フリーランタイマ、６８…閾値レジスタ
６９…割り込み設定レジスタ、７２…第１データレジスタ、７３…第２データレジスタ
【図１】
0005742693.tif 000002
【図２】
0005742693.tif 000003
【図３】
0005742693.tif 000004
【図４】
0005742693.tif 000005
【図５】
0005742693.tif 000006
【図６】
0005742693.tif 000007
【図７】
0005742693.tif 000008
【図８】
0005742693.tif 000009
【図９】
0005742693.tif 000010
【図１０】
0005742693.tif 000011
【図１１】
0005742693.tif 000012
【図１２】
0005742693.tif 000013
【図１３】
0005742693.tif 000014
【図１４】
0005742693.tif 000015
【図１５】
0005742693.tif 000016