(57)【要約】【課題】  複数の通信装置間でシリアル通信を行うにあたり、通信装置がソフト的に通信ラインのアイドル状態を検出できるようにする。【解決手段】  受信データの立ち上がりエッジを検出してその旨を保持するエッジ検出部を備えている。１バイトデータの受信が終了した時（時刻ｔ１）、受信割込処理にてエッジ検出部における立ち上がりエッジ検出状態をリセットすると共に、タイマを所定の判定時間Ｔにセットする。その後、時刻ｔ３のタイマ割込処理にて、判定時間Ｔの間の立ち上がりエッジの有無を判定し、ここでは立ち上がりエッジが検出されているため通信中であると判定する。次の１バイトデータの受信終了時（時刻ｔ４）においても、時刻ｔ１の時と同様の受信割込処理を行い、判定時間Ｔ経過後の時刻ｔ５にてタイマ割込処理を行う。この時は立ち上がりエッジが検出されていないため、アイドル状態と判定する。【選択図】  図４
2005295132.tif 000002
【特許請求の範囲】
【請求項１】
通信ラインを介して接続された複数の通信装置相互間でシリアルデータの送受信を行うシリアル通信方法であって、
前記シリアルデータは、所定ビット数のデータを単位データとして、複数の前記単位データからなるデータフレームとして構成され、
前記通信装置は、前記単位データを受信する毎に、該受信の終了時から所定の判定時間が経過した時の受信状態をみて、前記単位データを受信中でない場合に、前記通信ラインがアイドル状態であると判定する
ことを特徴とするシリアル通信方法。
【請求項２】
通信ラインを介して接続された複数の通信装置相互間でシリアルデータの送受信を行うシリアル通信方法であって、
前記通信装置は、前記シリアルデータの受信開始後、所定のタイミング毎に、該タイミングから所定の判定時間が経過するまでの間に受信データのエッジが検出されたか否かを判定し、エッジが検出されなかった場合に、前記通信ラインがアイドル状態であると判定する
ことを特徴とするシリアル通信方法。
【請求項３】
請求項２記載のシリアル通信方法であって、
前記通信装置は、前記判定時間が経過するまでの間に前記エッジが検出されなかった場合であって、且つ、該判定時間経過時の前記通信ラインの論理レベルがアクティブレベルではない場合に、前記通信ラインがアイドル状態であると判定する
ことを特徴とするシリアル通信方法。
【請求項４】
通信ラインを介して接続された複数の通信装置相互間でシリアルデータの送受信を行うシリアル通信方法であって、
前記シリアルデータは、所定ビット数のデータを単位データとして、複数の前記単位データからなるデータフレームとして構成されており、さらに、前記単位データの受信終了時から次の単位データの受信開始時までの時間をデータギャップ時間として、
前記通信装置は、
受信データのエッジを検出する毎に該検出時刻を記憶しておき、
前記単位データを受信する毎に、該受信の終了時直前に検出された前記エッジの検出時刻と、該エッジから該単位データ受信終了時までの受信ビット数とに基づいて、該単位データの受信終了時刻を算出し、
該受信終了時刻に、少なくとも、前記データギャップ時間及び前記単位データのデータ長に対応した時間を加えた時刻を、アイドル判定時刻として設定し、
前記受信終了時刻から前記アイドル判定時刻までの間に前記単位データを受信しなかった場合に、前記通信ラインがアイドル状態であると判定する
ことを特徴とするシリアル通信方法。
【請求項５】
通信相手の装置と通信ラインを介して接続され、相互にシリアルデータを送受信可能な通信装置であって、
前記シリアルデータは、所定ビット数のデータを単位データとして、複数の前記単位データからなるデータフレームとして構成されており、
前記単位データの受信中であるか否かを判定する受信中判定手段と、
前記単位データを受信する毎に、該受信の終了時から所定の判定時間が経過した時の前記受信中判定手段の判定内容をみて、受信中と判定されていない場合に前記通信ラインがアイドル状態であると判定するアイドル判定手段と、
を備えていることを特徴とする通信装置。
【請求項６】
通信相手の装置と通信ラインを介して接続され、相互にシリアルデータを送受信可能な通信装置であって、
前記通信ラインを介して受信したデータのエッジを検出するエッジ検出手段と、
前記シリアルデータの受信開始後、所定のタイミング毎に動作するよう構成され、該タイミングから予め設定した判定時間が経過するまでの間に前記エッジ検出手段によってエッジが検出されなかった場合に前記通信ラインがアイドル状態であると判定するアイドル判定手段と、
を備えていることを特徴とする通信装置。
【請求項７】
請求項６記載の通信装置であって、
前記アイドル判定手段は、前記タイミングから前記判定時間が経過するまでの間に前記エッジ検出手段によりエッジが検出されなかった場合であって、且つ、該判定時間経過時の前記通信ラインの論理レベルがアクティブレベルではない場合に、前記通信ラインがアイドル状態になったものと判定する
ことを特徴とする通信装置。
【請求項８】
請求項７記載の通信装置であって、
前記判定時間を計時するための計時手段と、
前記エッジ検出手段によりエッジが検出されたとき、該検出された旨の情報を保持する検出状態保持手段と、
を備え、
前記アイドル判定手段は、
前記タイミング毎に、前記計時手段による前記判定時間の計時を開始させる計時開始部と、
前記タイミング毎に、前記検出状態保持手段を初期化する検出状態初期化部と、
前記計時手段による計時終了時の前記検出状態保持手段に保持されている情報に基づいて、前記判定時間中にエッジが検出されたか否かを判定するエッジ判定部と、
前記計時手段による計時終了時の前記通信ラインの論理レベルを判定するレベル判定部と、
を備えていることを特徴とする通信装置。
【請求項９】
請求項６〜８いずれかに記載の通信装置であって、
前記シリアルデータは、所定ビット数のデータを単位データとして、複数の前記単位データからなるデータフレームとして構成されており、
前記タイミングは、前記各単位データの受信終了時である
ことを特徴とする通信装置。
【請求項１０】
請求項９記載の通信装置であって、
前記エッジ検出手段は立ち上がりエッジを検出することを特徴とする通信装置。
【請求項１１】
請求項５、９、又は１０のいずれかに記載の通信装置であって、
前記判定時間は、前記単位データの受信終了時から次の単位データの受信開始時までの時間であるデータギャップ時間以上であって、且つ、前記データギャップ時間に前記単位データのデータ長に対応した時間を加えた時間以下である
ことを特徴とする通信装置。
【請求項１２】
通信相手の装置と通信ラインを介して接続され、相互にシリアルデータを送受信可能な通信装置であって、
前記シリアルデータは、所定ビット数のデータを単位データとして、複数の前記単位データからなるデータフレームとして構成されており、さらに、前記単位データの受信終了時から次の単位データの受信開始時までの時間をデータギャップ時間として、
受信データのエッジを検出して該検出時の時刻を記憶するエッジ時刻記憶手段と、
前記単位データを受信する毎に、前記エッジ時刻記憶手段の記憶内容に基づいて該受信終了前における最後にエッジが検出された時刻である最新エッジ検出時刻を取得し、該最新エッジ検出時刻と、前記最後に検出されたエッジから該単位データの受信終了時までの受信ビット数とに基づいて、該単位データの受信終了時刻を算出する第１時刻算出手段と、
該第１時刻算出手段により算出された受信終了時刻に、少なくとも、前記データギャップ時間と前記単位データのデータ長に対応した時間とを加えた時刻を、アイドル判定時刻として算出する第２時刻算出手段と、
前記受信終了時刻から前記アイドル判定時刻までの間に前記単位データが受信されなかった場合に、前記通信ラインがアイドル状態であると判定するアイドル判定手段と、
を備えていることを特徴とする通信装置。
【請求項１３】
請求項１２記載の通信装置であって、
設定した時刻になるとその旨を示す信号を出力する計時手段を備え、
前記アイドル判定手段は、
前記単位データの受信を終了する毎に、前記第２時刻算出手段により算出された前記アイドル判定時刻を前記計時手段に設定する時刻設定部と、
前記計時手段から、前記時刻設定部により設定されたアイドル判定時刻になったことを示す信号が出力されたときに、該アイドル判定時刻の設定時から該信号の出力時までの間に前記単位データが受信されたか否かを判定する受信判定部と、
を備え、該受信判定部により受信されなかったと判定された場合に、前記通信ラインがアイドル状態であると判定する
ことを特徴とする通信装置。
【請求項１４】
請求項１２又は１３記載の通信装置であって、
前記エッジ時刻記憶手段は、立ち上がりエッジを検出した時の時刻を記憶することを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ラインを介してシリアルデータの送受信を行うシリアル通信方法及び通信装置に関する。
【背景技術】
【０００２】
従来より、通信ラインを介して接続された複数の通信装置が相互にシリアルデータを送受信できるよう構成されたシリアル通信システムとして、例えば車両に搭載された複数の電子制御装置（以下「ＥＣＵ」という）が相互にデータ通信を行うことにより、車両の各部を制御するよう構成された車載シリアル通信システムが知られている。
【０００３】
この車載シリアル通信システムにおける通信フォーマットの一例を図１６に示す。図１６は、一般的な調歩同期式シリアル通信の通信フォーマットであり、複数バイトのデータによって一つのフレームが構成される。そして、例えばあるＥＣＵがこの１フレーム分のデータを通信ライン上に送出すると、他のＥＣＵはそれを受信することになるが、このとき、通信ラインが所定ビット（例えば１０ビット）以上連続してHighレベル（以下「Ｈレベル」という）状態となったときに、送信元ＥＣＵからの１フレーム分のデータ送信が終わったこと、即ち通信ラインがアイドル状態になったことを検出するようにしている。
【０００４】
アイドル状態が検出されると、各ＥＣＵは受信したデータに基づいて所定の処理を行う。そして、何らかの応答をすべきＥＣＵが存在する場合、そのＥＣＵは、応答すべきデータを上記同様のフォーマットにて通信ライン上へ送出する。
【０００５】
また、一つのフレームを構成する１バイトデータはいずれも、図１６に示すように、ビット０〜ビット７までの８ビットからなるＮＲＺ（ノンリターンゼロ）方式の有効データと、その先頭に付加されるLow レベル（以下「Ｌレベル」という）のスタートビットと、その末尾に付加されるＨレベルのストップビットとからなるフォーマットにて構成されている。
【０００６】
ところで、この種のシリアル通信システムを構成する各ＥＣＵは、上記のシリアル通信動作と、そのＥＣＵの通信以外の動作とを制御するために、マイクロコンピュータ（以下「マイコン」という）を備えている。そして、このようなマイコンとして、上述したアイドル状態の検出を行うためのハードウェアを備えたものが知られている（例えば、非特許文献１参照。）。
【０００７】
図１７に、アイドル状態の検出をハード的に行うよう構成されたマイコンの一例を示す。図示の如く、マイコン１００は、プログラムを記憶するＲＯＭ１０２と、ＲＯＭ１０２に記憶されたプログラムを実行するＣＰＵ１０１と、ＣＰＵ１０１による演算結果などを一時記憶するＲＡＭ１０３と、通信ラインＬ１上のシリアルデータを受信バッファ１０７及びデータ入力ポートＰ２を介して受信すると共にデータ出力ポートＰ１及び送信バッファ１０６を介して通信ラインＬ１上へシリアルデータを送信する通信部１０４と、を備えている。尚、以下の説明では、受信バッファ１０７を介してデータ入力ポートＰ２へ入力されるデータを受信データＲｘＤ、通信部１０４からデータ出力ポートＰ１を介して送信バッファ１０６へ送出されるデータを送信データＴｘＤという。
【０００８】
そして、通信部１０４は、データ入力ポートＰ２に入力される受信データＲｘＤに基づいてアイドル状態の検出を行うアイドル検出部１０８を備えている。このアイドル検出部１０８は、マイコン１００がもともと備えているハードウェアである。そのため、このマイコン１００を使用するユーザは、アイドル検出部１０８の検出結果を利用してシリアル通信制御用のプログラムを組むことができる。
【非特許文献１】“ＭＣＣＩリファレンスマニュアル（Multichannel Communication Interface Reference Manual ）”、改訂１版（Ｒｅｖ．１．０）、ｐ．６８−６９，７２，７５、［online］、モトローラ・インコーポレーテッド（Motorola Incorporated）、［平成１６年３月２９日検索］、インターネット＜ URL ：http://e-www.motorola.com/files/microcontrollers/doc/ref_manual/MCCIRM.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、シリアル通信を制御するマイコンは、必ずしも上記マイコン１００のようにアイドル状態をハード的に検出できるよう構成されているとは限らず、そのようなハードウェアを備えていないマイコンも存在する。
【００１０】
仮にそのようなアイドル状態の検出を行うハードウェアを備えていないマイコンを用いてシリアル通信やその他の各種制御を行いたい場合、そのままの（デフォルトの）状態ではマイコンはアイドル状態を検出できず、データの受信終了、即ち図１６で説明した１フレームの受信終了を判定できない。そのため、正常な通信が行われているにも拘わらず、通信エラーが生じて通信が出来なくなる場合が発生する。
【００１１】
本発明は上記課題に鑑みなされたものであり、複数の通信装置間でシリアル通信を行うにあたり、通信ラインのアイドル状態を検出して正常なシリアル通信を行えるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するためになされた請求項１記載の発明は、通信ラインを介して接続された複数の通信装置相互間でシリアルデータの送受信を行うシリアル通信方法である。シリアルデータは、所定ビット数のデータを単位データとして、複数の単位データからなるデータフレームとして構成されている。そして、通信装置は、単位データを受信する毎に、該受信の終了時から所定の判定時間が経過した時の受信状態をみて、単位データを受信中でない場合に、通信ラインがアイドル状態であると判定する。
【００１３】
上記方法によれば、シリアルデータ（データフレーム）を全て受信した後のアイドル状態中に上記判定時間が経過した時は、単位データの受信中ではなくアイドル状態と判定されるため、通信ラインのアイドル状態を検出して正常なシリアル通信を行うことが可能となる。
【００１４】
尚、判定時間は、単位データの受信終了後さらに次の単位データを受信する場合における、該次の単位データの受信中にその判定時間が経過するような範囲内で、適宜設定すればよい。このようにすれば、単位データの受信中である限り、判定時間が経過してもまだ受信状態であり、データフレームにおける最後の単位データを受信終了した後の判定時間の経過時に、単位データの受信はなくアイドル状態と判定されることになる。
【００１５】
次に、請求項２記載のシリアル通信方法は、通信装置が、シリアルデータの受信開始後、所定のタイミング毎に、該タイミングから所定の判定時間が経過するまでの間に受信データのエッジが検出されたか否かを判定する。そして、エッジが検出されなかった場合に、通信ラインがアイドル状態であると判定する。
【００１６】
つまり、上記判定時間中にエッジが検出された場合は、少なくともその判定時間中にはまだ単位データの受信が行われていたものと考えられるが、アイドル状態のときはエッジ変化がない（例えばＨレベル持続）ため、判定時間中にエッジが検出されなかった場合はアイドル状態と判定するのである。
【００１７】
従って、上記方法によれば、判定時間中のエッジの有無を所定のタイミング毎に判定し、その判定結果に基づいてアイドル状態であるか否かの判定を行うため、通信ラインのアイドル状態を検出して正常なシリアル通信を行うことが可能となる。
【００１８】
尚、検出対象のエッジは、例えば立ち上がりエッジ又は立ち下がりエッジのいずれかとしてもよいし、立ち上がり・立ち下がりの両エッジとしてもよく、単位データを構成する各ビットのフォーマットや上記タイミングをどこにするか等を考慮して適宜決めればよい。また、判定時間についても、例えば、その判定時間中に単位データのうち数ビット分のデータが受信される程度の長さにするなど、データフォーマットに応じて適宜設定すればよい。上記タイミングについても、例えば単位データの受信を終了する毎とするなど、アイドル状態か否かを適切に判定できる限り適宜設定すればよい。
【００１９】
ここで、上記判定時間中にエッジが検出されなかった場合であっても、例えば、その判定時間中にアクティブレベルのビットデータのみを連続して受信したということも考えられる。そのような場合、データ受信中であるにも拘わらずその間はエッジが検出されないため、請求項２記載の方法では、誤ってアイドル状態と判定されてしまうおそれがある。
【００２０】
そこで、例えば請求項３記載のように、判定時間が経過するまでの間にエッジが検出されなかった場合であって、且つ、該判定時間経過時の通信ラインの論理レベルがアクティブレベルではない場合に、通信ラインがアイドル状態であると判定するようにするとよい。このようにすれば、判定時間中に論理レベルがアクティブレベルのビットのみを複数連続して受信したことによりエッジが検出されなくても、その論理レベルに基づいてアイドル状態とは判定されないため、アイドル状態の検出をより正確に行うことが可能となる。
【００２１】
ここで、例えば上記請求項２又は３記載のシリアル通信方法において、上記タイミングを例えば単位データの受信終了時としたとき、通信速度によっては、その受信終了時から判定時間経過時までの間にエッジが発生してもそれを検出できない場合が考えられる。即ち、例えば単位データ受信終了時の受信割込処理によって判定時間内のエッジ検出を開始するよう構成されている場合、受信終了と同時に受信割込処理を開始できるとは限らず、受信終了時から所定期間経過後に受信割込処理が開始されることも考えられる。そのような場合に、通信速度が高速であることに起因して次の単位データのうち数ビットを既に受信した後に受信割込処理が開始されると、その受信した数ビットにエッジが発生していてもそれは検出されないことになる。
【００２２】
そこで、通信速度に関係なくアイドル状態を正確に検出するためには、例えば請求項４記載のシリアル通信方法を用いるとよい。即ち、請求項４記載のシリアル通信方法は、シリアルデータが、所定ビット数のデータを単位データとして、複数の単位データからなるデータフレームとして構成されており、通信装置は、受信データのエッジを検出する毎に該検出時刻を記憶しておく。そして、単位データを受信する毎に、該受信の終了時直前に検出されたエッジの検出時刻と、該エッジから該単位データ受信終了時までの受信ビット数とに基づいて、該単位データの受信終了時刻を算出する。
【００２３】
そして、上記受信終了時刻に、少なくとも、データギャップ時間及び単位データのデータ長に対応した時間を加えた時刻を、アイドル判定時刻として設定し、受信終了時刻からアイドル判定時刻までの間に単位データを受信しなかった場合に、通信ラインがアイドル状態であると判定する。ここで、データギャップ時間とは、単位データの受信終了時から次の単位データの受信開始時までの時間である。
【００２４】
即ち、１ビットあたりのデータ長（時間）は予めわかっているため、単位データ受信中のエッジ検出時刻を記憶しておけば、そのエッジ検出時刻に、そのエッジからその単位データ受信終了までのビット数に相当する時間を加えることにより、単位データの受信終了時刻が正確に算出できる。そして、算出した受信終了時刻に対し、さらに、データギャップ時間及び一つの単位データのデータ長に対応した時間を加えれば、次の単位データの受信終了時刻が正確に算出されることになり、この時刻をアイドル判定時刻とするのである。
【００２５】
つまり、請求項２又は３の方法のようにある期間（判定時間）内のエッジの有無をみるのではなく、単位データの受信終了時刻と、その次の単位データの受信終了時刻に相当するアイドル判定時刻とを正確に算出して、両時刻の間の単位データ受信の有無をみるのである。この両時刻は、通信速度に関係なく正確に算出されるものである。
【００２６】
従って、上記方法によれば、アイドル判定に関わる各時刻を正確に算出し、その算出した各時刻に基づいてアイドル状態の判定を行うようにしているため、通信速度が高速になってもその判定を正確に行うことができる。
【００２７】
尚、データギャップ時間は、例えば数ビット分の時間である場合や、或いは、ゼロの場合（つまり複数の単位データが間隔を空けずに連続して送受信される場合）など、シリアル通信のフォーマットによって種々考えられる。
【００２８】
次に、請求項５記載の発明は、通信相手の装置と通信ラインを介して接続され、相互にシリアルデータを送受信可能な通信装置であり、単位データの受信中であるか否かを判定する受信中判定手段を備えている。シリアルデータは、所定ビット数のデータを単位データとして、複数の単位データからなるデータフレームとして構成されている。
【００２９】
そしてアイドル判定手段が、単位データを受信する毎に、該受信の終了時から所定の判定時間が経過した時の受信中判定手段の判定内容をみて、受信中と判定されていない場合に通信ラインがアイドル状態であると判定する。
【００３０】
このように構成された通信装置によれば、判定時間経過時の受信中判定手段の判定内容に基づいてアイドル状態か否かが判定されるため、請求項１記載のシリアル通信方法が実現され、請求項１と同様、通信ラインのアイドル状態を検出して正常なシリアル通信を行うことが可能となる。そして、例えばアイドル状態の判定を行うハードウェアは持たないものの受信中判定手段は備えているマイコンに対しては、アイドル判定手段として機能させるためのプログラムをそのマイコンに実行させることで、アイドル状態の判定をソフト的に行うことが可能となる。
【００３１】
次に、請求項６記載の発明も、通信相手の装置と通信ラインを介して接続され、相互にシリアルデータを送受信可能な通信装置であり、通信ラインを介して受信したデータのエッジを検出するエッジ検出手段を備えている。
【００３２】
そして、アイドル判定手段が、シリアルデータの受信開始後所定のタイミング毎に動作して、該タイミングから予め設定した判定時間が経過するまでの間にエッジ検出手段によってエッジが検出されなかった場合に、通信ラインがアイドル状態であると判定する。
【００３３】
このように構成された通信装置によれば、判定時間中のエッジ検出の有無に基づいてアイドル状態か否かが判定されるため、請求項２記載のシリアル通信方法が実現され、請求項２と同様、通信ラインのアイドル状態を検出して正常なシリアル通信を行うことが可能となる。そして、例えばアイドル状態の判定を行うハードウェアは持たないもののエッジ検出手段は備えているマイコンに対しては、アイドル判定手段として機能させるためのプログラムをそのマイコンに実行させることで、アイドル状態の判定をソフト的に行うことが可能となる。
【００３４】
上記請求項６に記載の通信装置は、例えば請求項７に記載のように、アイドル判定手段が、上記タイミングから判定時間が経過するまでの間にエッジ検出手段によりエッジが検出されなかった場合であって、且つ、判定時間経過時の通信ラインの論理レベルがアクティブレベルではない場合に、通信ラインがアイドル状態になったものと判定するものであるとよい。
【００３５】
このように構成された通信装置によれば、例えば判定時間中にアクティブレベルのビットのみが継続することによってエッジが検出されなくても、それを誤ってアイドル状態と誤判定することがないため、請求項３記載のシリアル通信方法が実現され、請求項３と同様、アイドル状態の検出をより正確に行うことが可能となる。
【００３６】
そして、上記請求項７記載の通信装置は、より具体的には例えば請求項８に記載のように構成することができる。即ち、判定時間を計時するための計時手段と、エッジ検出手段によりエッジが検出されたとき、該検出された旨の情報を保持する検出状態保持手段と、を備えたものであって、アイドル判定手段は、計時開始部と、検出状態初期化部と、エッジ判定部と、レベル判定部と、を備えている。
【００３７】
計時開始部は、上記タイミング毎に計時手段による前記判定時間の計時を開始させ、検出状態初期化部は、上記タイミング毎に検出状態保持手段を初期化する。そして、エッジ判定部は、計時手段による計時が終了した時の検出状態保持手段に保持されている情報に基づいて、判定時間中にエッジが検出されたか否かを判定する。レベル判定部は、計時手段による計時終了時の通信ラインの論理レベルを判定する。
【００３８】
尚、エッジ判定部によってエッジの検出が判定されたときは、そのことのみをもってまだアイドル状態ではないと判定できるため、上記レベル判定部による判定は、エッジ判定部によりエッジ検出が判定されなかった場合にのみ行うようにしてもよい。
【００３９】
また、シリアルデータが、所定ビット数のデータを単位データとして、複数の単位データからなるデータフレームとして構成されている場合には、上記タイミングは、例えば請求項９に記載のように、各単位データの受信終了時にするとよい。このようにすれば、単位データを受信終了する毎にアイドル状態の判定が行われることになり、より効率的な判定が可能となる。
【００４０】
ところで、エッジ検出手段が検出するエッジは、既述の通り例えば立ち上がりエッジとしてもよいし、立ち下がりエッジとしてもよいが、一般的なシリアル通信のフォーマットは、単位データが、アクティブレベル（Ｌレベル）のスタートビットと、複数ビットからなる実データと、インアクティブレベル（Ｈレベル）のストップビットとにより構成される。
【００４１】
この場合に、例えば実データ部分が全てアクティブレベル（Ｌレベル）のときは、ストップビット開始時の立ち下がりエッジ以外は立ち下がりエッジが生じないことになる。そのため、上記請求項９のように単位データの受信終了時毎にアイドル判定手段が動作するよう構成した場合に、エッジ検出手段が立ち下がりエッジを検出するようにすると、データ受信中であるにも拘わらず立ち下がりエッジが検出されないことによって、アイドル状態であると誤判定してしまうおそれがある。
【００４２】
そこで、単位データの受信終了時毎にアイドル判定手段が動作するよう構成した場合、エッジ検出手段は、請求項１０に記載のように立ち上がりエッジを検出するものであるとよい。このようにすれば、アイドル状態の誤判定を抑止することが可能となる。
【００４３】
また、請求項５、９、又は１０のいずれかに記載の通信装置のように、単位データの受信終了時毎にアイドル判定手段が動作するよう構成した場合、判定時間は、例えば請求項１１記載のように、単位データの受信終了時から次の単位データの受信開始時までの時間であるデータギャップ時間以上であって、且つ、データギャップ時間に単位データのデータ長に対応した時間を加えた時間以下にするとよい。
【００４４】
つまり、単位データの受信終了時から、次の単位データの受信終了時までの間に判定時間を設定するのである。このようにすれば、単位データを受信する毎に、その受信終了後の次の単位データについてその受信の有無が判定されることになるため、アイドル状態の判定をより的確に行うことができる。
【００４５】
次に、請求項１２記載の通信装置は、通信相手の装置と通信ラインを介して接続され、相互にシリアルデータを送受信可能な通信装置であって、シリアルデータは、所定ビット数のデータを単位データとして、複数の単位データからなるデータフレームとして構成されており、受信データのエッジを検出して該検出時の時刻を記憶するエッジ時刻記憶手段を備えたものである。
【００４６】
そして、単位データを受信する毎に、第１時刻算出手段が、エッジ時刻記憶手段の記憶内容に基づいて該受信終了前における最後にエッジが検出された時刻である最新エッジ検出時刻を取得して、該最新エッジ検出時刻と、該最後に検出されたエッジから該単位データの受信終了時までの受信ビット数とに基づいて、該単位データの受信終了時刻を算出する。
【００４７】
さらに第２時刻算出手段が、上記算出された受信終了時刻に少なくとも、データギャップ時間と単位データのデータ長に対応した時間とを加えた時刻を、アイドル判定時刻として算出する。そして、アイドル判定手段が、上記受信終了時刻からアイドル判定時刻までの間に単位データが受信されなかった場合に、通信ラインがアイドル状態であると判定する。データギャップ時間は、既述の通り単位データの受信終了時から次の単位データの受信開始時までの時間である。
【００４８】
このように構成された通信装置によれば、第１・第２時刻算出手段によって算出された正確な受信終了時刻及びアイドル判定時刻に基づいてアイドル判定手段が判定を行うため、請求項４記載のシリアル通信方法が実現され、請求項４と同様、通信ラインのアイドル状態を検出して正常なシリアル通信を行うことができ、しかも通信速度が高速になっても正確にアイドル判定を行うことが可能となる。そして、例えばアイドル状態の判定を行うハードウェアは持たないもののエッジ時刻記憶手段は備えているマイコンに対しては、第１時刻算出手段、第２時刻算出手段、及びアイドル判定手段として機能させるためのプログラムをそのマイコンに実行させることで、アイドル状態の判定をソフト的に行うことが可能となる。
【００４９】
上記構成の通信装置（請求項１２）は、より具体的には、例えば請求項１３に記載のように構成できる。即ち、設定した時刻になるとその旨を示す信号を出力する計時手段を備えており、さらにアイドル判定手段は、時刻設定部と受信判定部とを備えている。時刻設定部は、単位データの受信を終了する毎に、第２時刻算出手段により算出されたアイドル判定時刻を計時手段に設定し、受信判定部は、計時手段からアイドル判定時刻になったことを示す信号が出力されたときに、該アイドル判定時刻の設定時から該信号の出力時までの間に単位データが受信されたか否かを判定する。そして、受信判定部により受信されなかったと判定された場合に、通信ラインがアイドル状態であると判定する。
【００５０】
また、請求項１２又は１３記載の通信装置において、エッジ時刻記憶手段は、立ち上がりエッジを検出した時の時刻を記憶するとよい。このようにすれば、請求項１０の通信装置の場合と同様、通信中であるにも拘わらずエッジ検出時刻が記憶されない場合が生じるのをより確実に防止でき、アイドル状態の誤判定を抑止することが可能となる。
【発明を実施するための最良の形態】
【００５１】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
［第１実施形態］
図１は、本発明が適用された実施形態の車載シリアル通信システムの概略構成を示すブロック図である。図１に示す如く、本実施形態の車載シリアル通信システムは、主として車両の盗難を防止するために必要なデータを登録するためのものであり、車両に搭載されたツール１０、イモビＥＣＵ２０、及びエンジンＥＣＵ３０が、シリアルデータ通信用の通信ラインＬ１にそれぞれ接続されている。
【００５２】
ツール１０は、マイコン１１に記憶されている暗証コードなどを送信バッファ１２を介して通信ラインＬ１上へ送出すると共に、通信ラインＬ１上を伝送されるシリアルデータを受信バッファ１３を介してマイコン１１に入力するよう構成されている。
【００５３】
エンジンＥＣＵ２０は、図示しない車両のエンジンを制御するＥＣＵであって、通信ラインＬ１上を伝送されるシリアルデータが受信バッファ２３を介してマイコン２１へ入力されると共に、マイコン２１から出力されたシリアルデータが送信バッファ２２を介して通信ラインＬ１上へ送出されるよう構成されている。
【００５４】
イモビＥＣＵ３０は、盗難防止等のセキュリティに関わる各種制御を行うＥＣＵであり、通信ラインＬ１上を伝送されるシリアルデータが受信バッファ３３を介してマイコン３１へ入力されると共に、マイコン３１から出力されたシリアルデータが送信バッファ３２を介して通信ラインＬ１上へ送出されるよう構成されている。
【００５５】
本実施形態の車載シリアル通信システムにおいて通信ラインＬ１上を伝送されるシリアルデータのフォーマットは、図１６に示したフォーマットと同様であり、複数の１バイトデータによって一つのフレーム（データフレーム）が構成される。そのため、上記暗証コードを始め、ツール１０や各ＥＣＵ２０，３０から通信ラインＬ１上へ送出されるシリアルデータはいずれも図１６に示すフォーマットとなる。尚、フレームを構成する各１バイトデータは本発明の単位データに相当するものである。また本実施形態では、フレームを構成する各１バイトデータの間隔（本発明のデータギャップ間隔）はほぼゼロであって連続して送信される。
【００５６】
そして、本実施形態におけるイモビ登録処理時のフレームの流れ、即ち、ツール１０から暗証コードが送信されることによってその暗証コードが各ＥＣＵ２０，３０に登録される際の通信ラインＬ１上のフレームの流れは、図３に示すようになる。即ち、まずツール１０から暗証コードを含むフレームが通信ラインＬ１上に送出される。このフレームは、イモビＥＣＵ３０内のマイコン３１に対して暗証コードの登録を行うよう要求するものである。
【００５７】
イモビＥＣＵ３０は、ツール１０からの上記フレームを受信すると、そのフレームの内容に従って暗証コード登録などの各種処理を行う。そして、登録後に、登録した旨を示すデータ及び登録した暗証コードを、ツール１０に対する応答データ（フレーム）として通信ラインＬ１上へ送出する。
【００５８】
エンジンＥＣＵ２０は、ツール１０からイモビＥＣＵ３０への上記フレームに対しては実質的な処理を行わず、イモビＥＣＵ３０からツール１０への応答データを受信することによって、暗証コードの登録を行う。そして、その登録後に、ツール１０に対して応答データ（フレーム）を返す。
【００５９】
上記のような暗証コード登録等の所定の処理が行われることにより、盗難防止システムが機能するようになる。即ち、暗証コードの記憶された電子キーが図示しないキーシリンダに挿入されたときに、イモビＥＣＵ３０内のマイコン３１及びエンジンＥＣＵ２０内のマイコン２１にて暗証コードの照合等が行われるのだが、ここではその説明は省略する。
【００６０】
上記のようなシリアルデータの送受信は、いずれもツール１０、各ＥＣＵ２０，３０が備える各マイコン１１，２１，３１により制御される。以下、これら各マイコンにおけるシリアル通信のための構成について説明するが、ツール１０及び各ＥＣＵ２０，３０が備える各マイコン１１，２１，３１は、シリアル通信を制御するための構成及び動作のみに着目すれば、基本的にはいずれも同じものである。そのため、代表としてイモビＥＣＵ３０が備えるマイコン３１を例に挙げて説明する。
【００６１】
イモビＥＣＵ３０に設けられているマイコン３１は、図２に示すように、プログラムを記憶するＲＯＭ４２と、ＲＯＭ４２に記憶されたプログラムを実行するＣＰＵ４１と、ＣＰＵ４１による演算結果などを一時記憶するＲＡＭ４３と、通信ラインＬ１上のシリアルデータを受信バッファ３３及びデータ入力ポートＰ２を介して受信すると共にデータ出力ポートＰ１及び送信バッファ３２を介して通信ラインＬ１上へシリアルデータを送信する通信部４５と、受信データＲｘＤのエッジを検出するエッジ検出部４６と、ＣＰＵ４１からの指令に基づいて計時を行うと共に設定した計時時間が経過したときにタイマ割込処理要求Ｗ２を発生するタイマ４４と、上記各部を接続するバス４７と、を備えている。
【００６２】
通信部４５は、一般的な調歩同期式のシリアル通信インタフェースであり、図示しない受信用レジスタと送信用レジスタとを有している。そして、ＣＰＵ４１によって上記送信用レジスタに１バイト（＝８ビット）のデータが書き込まれると、そのデータを有効データとする調歩同期式フォーマットのシリアルデータ（つまり図１６で説明した構成の全１０ビットからなる１バイトデータ）を、送信データＴｘＤとして送信バッファ３２へ順次出力して通信ラインＬ１に送出する。
【００６３】
さらに、通信部４５は、通信ラインＬ１上を伝送される上記１０ビット構成のシリアルデータ（１バイトデータ）を上記受信用レジスタによって受信し、その受信が終了すると（つまり、受信用レジスタに上記１バイトデータが格納されると）、受信割込処理要求Ｗ２を発生する。
【００６４】
このため、ＣＰＵ４１は、通信部４５の送信用レジスタに１バイトデータを書き込むことで、そのデータを通信ラインＬ１上へ送信でき、また、通信部４５から受信割込処理要求Ｗ２が発生した時に、通信部４５の受信用レジスタから１バイト（８ビット）の有効データをＲＡＭ４３などに転送することで、受信データを取得することができる。
【００６５】
エッジ検出部４６には、受信バッファ３３を介して受信した受信データＲｘＤが、エッジ検出ポートＰ３を介して取り込まれる。そして、受信データＲｘＤにエッジが発生すると、その旨を保持するよう構成されている。本実施形態では、立ち上がりエッジを検出するよう構成されている。具体的には、図４に示すように、１バイトデータを受信終了する毎に立ち上がり検出状態がＬレベルにリセットされ、その後、立ち上がりエッジが発生するとそれを検出して立ち上がり検出状態がＨレベルとなる。以後、再びリセットされるまではＨレベル状態が保持される。
【００６６】
ここで、例えば他のマイコンから所定のデータ（フレーム）が送信され、それをイモビＥＣＵ３０のマイコン３１が受信するとき、フレームを構成する各１バイトデータの受信については上記説明した通りに行われるが、受信したデータに基づいてＣＰＵ４１が実際に処理を行うのは、１フレーム分の１バイトデータを全て受信した後である。そのため、フレームの受信開始後、マイコン３１においては、そのフレームを全て受信完了したこと、即ち通信ラインＬ１がアイドル状態になったことを判定する必要がある。
【００６７】
図１７で説明した従来のマイコン１００の場合は、既述の通り通信部１０４内に予めアイドル状態検出用のハードウェアであるアイドル検出部１０８を備えていたため、ＣＰＵ４１は、このアイドル検出部１０８の検出結果に基づいてアイドル状態になったか否かを容易に知ることができた。
【００６８】
しかし、本実施形態のマイコン１１，２１，３１はいずれも、アイドル状態を検出するためのハードウェアを備えていないものである。そのため、このマイコン３１を用いてシリアル通信を行うためには、ユーザ等が何らかの方法でアイドル状態の判定を行えるよう、ハード的又はソフト的な対策を行う必要がある。
【００６９】
そこで本実施形態では、マイコン３１がはじめから備えている、エッジ検出部４６やタイマ４４等を利用して、ソフト的にアイドル状態の判定を行うようにしている。つまり、アイドル状態の判定を行うためのプログラムをＲＯＭ４２（例えばＥＥＰＲＯＭ等の電気的に書き換え可能なＲＯＭ）に組み込むことで、ＣＰＵ４１がアイドル状態の判定を行うようにしている。
【００７０】
次に、本実施形態の車載シリアル通信システムの通信動作のうち、特にアイドル状態の判定動作について、図４に基づいて説明する。但し図４では、説明の簡略化のために、データギャップ時間がゼロの二つの１バイトデータからなる１フレームを受信する場合を例示している。
【００７１】
図４に示すように、一つ目の１バイトデータの受信が時刻ｔ１にて終了すると、通信部４５が受信割込処理要求Ｗ１を発生する。これを受けたＣＰＵ４１は、エッジ検出部４６における立ち上がりエッジ検出状態をリセットすると共に、タイマ４４を所定の判定時間Ｔにセットする。その後、二つ目の１バイトデータを受信するが、本例では、スタートビットを含む最初の５ビットがＬレベルであって６ビット目にＨレベルとなり、立ち上がりエッジが発生する（時刻ｔ２）。そのため、この時刻ｔ２にて立ち上がりエッジ検出状態がＨレベルとなる。
【００７２】
その後、タイマ４４にセットされた判定時間Ｔが経過して時刻ｔ３になると、タイマ４４はタイマ割込処理要求Ｗ１を発生する。これを受けたＣＰＵ４１は、そのときの立ち上がりエッジ検出状態をみて、Ｈレベルである（つまりタイマ計時期間中に立ち上がりエッジが発生した場合）か、又は、Ｌレベルであるものの通信ラインＬ１の論理レベル即ち受信データＲｘＤの論理レベルがアクティブレベル（Ｌレベル）か、のいずれかに該当するならば、まだデータ受信中であると判定する。
【００７３】
そして、この２番目の１バイトデータが時刻ｔ４にて受信終了すると、時刻ｔ１の時と同様、再び受信割込処理要求Ｗ１によって、立ち上がりエッジ検出状態のリセット及びタイマ４４のセットがなされる。その後、判定時間Ｔが経過して時刻ｔ５になると、タイマ割込処理要求Ｗ２によってＣＰＵ４１は立ち上がりエッジ検出状態をみるが、このとき、本例では既に当該フレームの受信が終わっているため、時刻ｔ４以後は立ち上がりエッジは生じていない。しかも、通信ラインＬ１はインアクティブ状態（Ｈレベル）である。これにより、ＣＰＵ４１は、当該フレームの受信が完了して通信ラインＬ１がアイドル状態になっているものと判定し、受信完了フラグをＯＮにする。
【００７４】
次に、上記説明したアイドル状態の判定を実現するためにマイコン３１で実行される処理について、図５及び図６に基づいて説明する。尚、図５及び図６に示す処理はいずれも、マイコン３１のＣＰＵ４１が実行するものであり、その各処理のプログラムはＲＯＭ４２に記憶されている。
【００７５】
まず図５は、ＣＰＵ４１が、通信部４５によって受信割込処理要求Ｗ１が発生された時（つまり、通信部４５の受信用レジスタに１バイトデータが受信された時であって、図４の例では時刻ｔ１及び時刻ｔ４）に実行を開始する受信割込処理を示すフローチャートである。
【００７６】
この受信割込処理が開始されると、まずステップ（以下「Ｓ」と略す）１１０にて、エッジ検出部４６における立ち上がりエッジ検出状態を初期してＬレベルとする。そして、Ｓ１２０にてタイマ４４を判定時間Ｔにセットした後、続くＳ１３０にて、受信した１バイトデータに対する処理（例えば受信用バッファからＲＡＭ４３への転送等）を行う。
【００７７】
なお、Ｓ１２０でタイマ４４にセットする判定時間Ｔは、次の１バイトデータの受信開始時からその１バイトデータの受信終了時まで間でその判定時間Ｔが経過するような範囲内で適宜決めればよい。つまり、例えば図４の時刻ｔ１でセットしたときに、次の１バイトデータの受信開始時刻（本例ではほぼ時刻ｔ１）からその受信終了時刻ｔ４までの間で判定時間Ｔが経過するようにすればよい。
【００７８】
本実施形態では、次の１バイトデータの略中心を狙ってタイマ４４をセットするようにしているが、もちろんこれは一例であって、例えば１バイトデータの終了間際を狙って設定してもよい。但し、１バイトデータの受信終了間際にセットすると、タイマ割込処理によって受信割込処理が遅れるなどの影響が生じるおそれがある。そのため、好ましくは本例のように次の１バイトデータの略中心を狙ってタイマ４４のセット（判定時間Ｔのセット）をするとよい。
【００７９】
次に図６は、タイマ割込処理を示すフローチャートである。このタイマ割込処理は、上記の受信割込処理（図５）のＳ１２０にてタイマ４４にセットされた判定時間Ｔが経過したとき（図４の例では時刻ｔ３及び時刻ｔ５）にタイマ４４が発生するタイマ割込処理要求Ｗ２をＣＰＵ４１が受けたときに、ＣＰＵ４１により実行が開始される。
【００８０】
このタイマ割込処理が開始されると、まずＳ２１０にて、エッジ検出部４６における立ち上がりエッジ検出状態をみる。このとき、立ち上がりエッジが検出されていれば、そのままこの割込処理を終了するが、検出されていない場合は、Ｓ２２０に進む。Ｓ２２０では、通信ラインＬ１の論理レベルがＬレベルであるか否か判断し、Ｌレベルであれば、データ受信中と判断してそのままこの割込処理を終了するが、Ｈレベルならば、Ｓ２３０に進む。
【００８１】
Ｓ２３０に進んだ場合は、上記判定時間Ｔの間に立ち上がりエッジが一切検出されず、しかもその判定時間Ｔ経過時に通信ラインＬ１がインアクティブ状態であることから、データ（フレーム）の受信が完了してアイドル状態になっているものと判断して、受信完了フラグをセットする。そして、続くＳ２４０にて、受信完了処理（受信したフレームに基づく各種処理）及び送信準備処理などを行う。
【００８２】
以上説明したように、本実施形態の車載シリアル通信システムでは、シリアル通信制御用の各マイコン１１，２１，３１が、１バイトデータの受信を終了する毎に受信割込処理を実行してタイマ４４を判定時間Ｔにセットし、その判定時間Ｔ経過後にタイマ割込処理によってアイドル状態であるか否かの判定を行う。そして、その判定は、まず判定時間Ｔの間に立ち上がりエッジが発生したか否かを判定し、発生しなかった場合はさらに通信ラインＬ１の論理レベルを見ることにより行う。
【００８３】
そのため、本実施形態の車載シリアル通信システムによれば、アイドル状態を検出するためのハードウェアを備えていないマイコンであっても、マイコンが備えているエッジ検出部４６やタイマ４４等の機能を利用してソフト的にアイドル状態の判定を行うことができ、シリアル通信を正常に行うことができる。
【００８４】
また、１バイトデータを受信終了した時から判定時間Ｔが経過するまでの間の立ち上がりエッジの有無を検出するようにし、次の１バイトデータの中心付近で判定時間Ｔが経過するようにタイマ４４をセットしており、しかも判定時間Ｔ経過時の通信ラインＬ１の論理レベルをもアイドル状態の判定材料としているため、データ受信中であれば確実にその旨を検出することができ、受信終了後は確実にアイドル状態であることを判定できる。
【００８５】
ここで、本実施形態の構成要素と本発明の構成要素の対応関係を明らかにする。本実施形態において、各マイコン１１，２１，３１はいずれも本発明の通信装置に相当し、エッジ検出部４６は本発明のエッジ検出手段及び検出状態保持手段に相当し、ＣＰＵ４１は本発明（請求項６）のアイドル判定手段に相当し、タイマ４４は本発明（請求項８）の計時手段に相当する。
【００８６】
また、図５の受信割込処理において、Ｓ１１０の処理は本発明の検出状態初期化部が実行する処理に相当し、Ｓ１２０の処理は本発明の計時開始部が実行する処理に相当する。また、図６のタイマ割込処理において、Ｓ２１０の処理は本発明のエッジ判定部が実行する処理に相当し、Ｓ２２０の処理は本発明のレベル判定部が実行する処理に相当する。
【００８７】
［第２実施形態］
上記第１実施形態では、マイコン３１が備える立ち上がりエッジ検出機能（エッジ検出部４６）をアイドル状態の判定に利用する例について説明したが、マイコンの種類によっては、データ受信中であるか否かをハード的に判定する機能（以下「受信中判定機能」という）を備えたものもある。そこで本実施形態では、上記のように受信中判定機能を備えたマイコンにおいて、その機能を利用してイドル状態の判定を行うようにしている。以下詳しく説明する。
【００８８】
図７に、本実施形態のマイコン５０の概略構成を示す。本実施形態のマイコン５０も、図２に示したマイコン３１と同様、図１の車載シリアル通信システムを構成するツール１０及び各ＥＣＵ２０，３０においてシリアル通信を制御するために設けられるものであり、通信部５３を除けば、ハード構成は基本的に図２のマイコン３１と同じである。そのため、図２のマイコンと同じ構成要素には同じ符号を付し、その説明を省略する。尚、本実施形態のマイコン５０も、図２のマイコン３１と同じくエッジ検出部４６を備えているものの、アイドル状態の判定に関与しないため、本実施形態では図示を省略している。
【００８９】
そして、マイコン５０が備える通信部５３が図２の通信部４５と異なる点は、受信中判定部５４によって上記受信中判定機能がハード的に実現されていることである。ＣＰＵ５１は、この受信中判定部５４の判定内容をみることによって、データ（１バイトデータ）の受信中であるか否か判断することができる。具体的には、図８（詳細は後述）に示すように、１バイトデータのスタートビットを検出したときに受信中フラグがセットされ、ストップビットを検出して１バイトデータの受信を終了したときに受信中フラグがクリアされる。
【００９０】
そして、本実施形態では、上記のようにマイコン５０がはじめから備えている、タイマ４４や受信中判定部５４等を利用して、ソフト的にアイドル状態の判定を行う尾運している。つまり、アイドル状態の判定を行うためのプログラムをＲＯＭ５２に組み込むことで、ＣＰＵ５１がアイドル状態の判定を行うようにしている。
【００９１】
次に、本実施形態の車載シリアル通信システムの通信動作のうち、特にアイドル状態の判定動作について、図８に基づいて説明する。図８も、第１実施形態の図４と同様、説明の簡略化のために、データギャップ時間がゼロの二つの１バイトデータからなる１フレームを受信する場合を例示している。
【００９２】
図８に示すように、一つ目の１バイトデータの受信が始まると、時刻ｔ１にて受信中フラグがセットされる。そして、この１バイトデータが終了すると、受信中フラグがクリアされると共に、通信部５３が受信割込処理要求Ｗ１を発生する。これを受けたＣＰＵ５１は、タイマ４４を所定の判定時間Ｔにセットする。
【００９３】
その後、二つ目の１バイトデータを受信するため、時刻ｔ３にて受信中フラグが再びセットされる。そして、タイマ４４にセットされた判定時間Ｔが経過して時刻ｔ４になると、タイマ４４はタイマ割込処理要求Ｗ１を発生する。これを受けたＣＰＵ５１は、受信中フラグの状態をみて、受信中であるか否かを判断する。ここで、時刻ｔ４では受信中フラグがセットされているため、まだ受信中であると判断する。
【００９４】
そして、この２番目の１バイトデータが時刻ｔ５にて受信終了すると、時刻ｔ２の時と同様、受信中フラグがクリアされると共に、受信割込処理要求Ｗ１によってタイマ４４がセットされる。その後、判定時間Ｔが経過して時刻ｔ６になると、タイマ割込処理要求Ｗ２によってＣＰＵ５１は受信中フラグをみるが、このとき、データは受信されておらずフラグはクリアされた状態である。そのため、ＣＰＵ５１は、当該フレームの受信が完了して通信ラインＬ１がアイドル状態になっているものと判定し、受信完了フラグをＯＮにする。
【００９５】
次に、上記説明したアイドル状態の判定を実現するためにマイコン５０で実行される処理について、図９及び図１０に基づいて説明する。尚、図９及び図１０に示す処理はいずれも、マイコン５０のＣＰＵ５１が実行するものであり、その各処理のプログラムはＲＯＭ５２に記憶されている。
【００９６】
まず図９は、ＣＰＵ５１が、通信部５３によって受信割込処理要求Ｗ１が発生された時（つまり、通信部５３の受信用レジスタに１バイトデータが受信された時であって、図８の例では時刻ｔ２及び時刻ｔ５）に実行を開始する受信割込処理を示すフローチャートである。
【００９７】
この受信割込処理が開始されると、まずＳ３１０にて、タイマ４４を判定時間Ｔにセットする。そして、続くＳ３２０にて、受信した１バイトデータに対する処理（例えば受信用バッファからＲＡＭ４３への転送等）を行う。なお、Ｓ３１０でタイマ４４にセットする判定時間Ｔは第１実施形態と同様である。
【００９８】
次に図１０は、タイマ割込処理を示すフローチャートである。このタイマ割込処理は、上記の受信割込処理（図９）のＳ３１０にてタイマ４４にセットされた判定時間Ｔが経過したとき（図８の例では時刻ｔ４及び時刻ｔ６）にタイマ４４が発生するタイマ割込処理要求Ｗ２をＣＰＵ５１が受けたときに、ＣＰＵ５１により実行が開始される。
【００９９】
このタイマ割込処理が開始されると、まずＳ４１０にて、受信中フラグがセットされているか否か、即ち、１バイトデータの受信中であるか否かを判断する。このとき、受信中フラグがセットされていれば、そのままこの割込処理を終了するが、セットされていない場合は、データ（フレーム）の受信が完了してアイドル状態になっているものと判断して、Ｓ４２０に進み、受信完了フラグをセットする。そして、続くＳ４３０にて、受信完了処理及び送信準備処理などを行う。
【０１００】
以上説明したように、本実施形態では、車載シリアル通信システムを構成するシリアル通信制御用のマイコン５０が、１バイトデータの受信を終了する毎に受信割込処理を実行してタイマ４４を判定時間Ｔにセットし、その判定時間Ｔ経過後にタイマ割込処理によってアイドル状態であるか否かの判定を行う。その判定は、判定時間Ｔが経過した時の受信中フラグをみることにより行う。
【０１０１】
そのため、本実施形態の車載シリアル通信システムによれば、アイドル状態を検出するためのハードウェアを備えていないマイコンであっても、マイコンが備えている受信中判定機能（受信中判定部５４）等を利用してソフト的にアイドル状態の判定を行うことができ、シリアル通信を正常に行うことができる。
【０１０２】
しかも、判定時間が経過した時の受信のみに基づいてアイドル状態の判定を行うようにしているため、処理負荷のより軽減されたアイドル状態判定が可能となる。
尚、本実施形態において、受信中判定部５４は本発明の受信中判定手段に相当する。また、図１０のタイマ割込処理において、Ｓ４１０及びＳ４２０の処理はいずれも、本発明（請求項５）のアイドル判定手段が実行する処理に相当する。
【０１０３】
［第３実施形態］
上記第１実施形態では、１バイトデータ受信終了時に発生する受信割込処理要求Ｗ１を受けてＣＰＵ４１が受信割込処理を実行し、これにより立ち上がりエッジ検出状態のリセット及びタイマ４４のセットを行うようにした。しかし、受信割込処理は受信割込処理要求Ｗ１を受けたときに即実行できるとは限らず、所定の割込待ち時間の経過後に実行が開始されるおそれもある。このような割込待ち時間等によって受信割込処理の開始が遅れると、既に次の１バイトデータの受信が始まっているにも拘わらず受信割込処理がまだ実行されないことになり、受信割込処理が開始されるまでの立ち上がりエッジを検出できずにアイドル状態の判定を誤るおそれがある。
【０１０４】
この問題は、通信速度がより高速になるほど生じるおそれが大きくなり、非常に高速な通信になると、場合によっては、次の１バイトデータのうち既に数ビットが受信された時点で、その前の１バイトデータに対する受信割込処理が開始されるということも起こりうる。
【０１０５】
そこで、本実施形態では、通信速度が高速になってもアイドル状態の判定を安定して正確に行うことができるよう、１バイトデータの受信終了時刻を正確に算出し、その受信終了時刻における受信状態（受信処理待ち状態）をみることによって、アイドル状態の判定を行うようにしている。以下、詳しく説明する。
【０１０６】
図１１に、本実施形態のマイコン６０の概略構成を示す。本実施形態のマイコン６０も、図２に示したマイコン３１と同様、図１の車載シリアル通信システムを構成するツール１０及び各ＥＣＵ２０，３０においてシリアル通信を制御するために設けられるものであり、タイマ６３の構成及びインプットキャプチャモジュール７２を備えていることを除けば、ハード構成は基本的に図２のマイコン３１と同じである。そのため、図２のマイコンと同じ構成要素には同じ符号を付し、その説明を省略する。尚、本実施形態では、エッジ検出部４６にて立ち上がりが検出されると立ち上がりエッジ割込処理要求Ｗ３が発生する。
【０１０７】
本実施形態のマイコン６０が備えるタイマ６３は、当該マイコンの内部クロックによって常時カウントアップされるフリーランカウンタ（以下「ＦＲＣ」という）７１と、後述するＣＰＵ６１の演算によって得られる時刻情報がＣＰＵ６１によりセットされるアウトプットコンペアレジスタ（以下「ＯＣＲ」という）７４と、ＦＲＣ７１のカウント値である現在時刻とＯＣＲ７４にセットされた時刻情報とを比較し、両者が一致したときにタイマ割込処理要求Ｗ２を発生する比較器７５とを備えている。尚、本実施形態において「時刻」とは、ＦＲＣ７１のカウント値をいう。
【０１０８】
また、本実施形態のマイコン６０は、受信データＲｘＤの立ち上がりエッジを検出してその検出時のＦＲＣ７１の値を記憶するインプットキャプチャモジュール（以下「ＩＣＭ」という）７２を備えている。即ち、受信バッファ３３を介して入力される受信データＲｘＤは、データ入力ポートＰ２及びエッジ検出ポートＰ３のほか、インプットキャプチャ入力ポートＰ４を介してＩＣＭ７２にも入力される。そして、ＩＣＭ７２は、立ち上がりエッジを検出すると、その検出時のＦＲＣ７１の値をインプットキャプチャレジスタ（以下「ＩＣＲ」という）７３に記憶する。このＩＣＲ７３の値は、立ち上がりエッジが検出される毎に更新される。そのため、ＩＣＲ７３には、常に最新の立ち上がりエッジ検出時刻が記憶されていることになる。
【０１０９】
そして、本実施形態では、上記のようにマイコン６０がはじめから備えている、タイマ６３やＩＣＭ７２、エッジ検出部４６等を利用して、ソフト的にアイドル状態の判定を行う尾運している。つまり、アイドル状態の判定を行うためのプログラムをＲＯＭ６２に組み込むことで、ＣＰＵ６０がアイドル状態の判定を行うようにしている。
【０１１０】
次に、本実施形態の車載シリアル通信システムの通信動作のうち、特にアイドル状態の判定動作について、図１２に基づいて説明する。図１２も、第１実施形態の図４と同様、説明の簡略化のために、データギャップ時間がゼロの二つの１バイトデータからなる１フレームを受信する場合を例示している。
【０１１１】
図１２に示すように、一つ目の１バイトデータの受信が始まると、ＩＣＭ７２にて立ち上がりエッジが検出される毎に、その検出時刻（ＦＲＣ７１の値）がＩＣＲ７３に記憶される。具体的には、時刻ｔ１，ｔ２，ｔ３にＦＲＣ７１の値がＩＣＲ７２に取り込まれ記憶される。そして、この１バイトデータの受信が終了した時に、ＩＣＲ７３に記憶されている時刻（つまり時刻ｔ３）と、その時刻ｔ３から受信終了時までのビット長（ここでは１ビット分の時間）とに基づいて、受信終了時刻ｔ４を算出する。
【０１１２】
尚、受信終了時に割込処理等によってＦＲＣ７１の値を取り込むことによっても、受信終了時刻を得ることが可能ではあるが、既述のように受信終了と同時に割込処理を開始してすぐにＦＲＣ７１の値を取り込むのは非常に困難である。そのため、割込処理によって得られる時刻は、程度の差こそあれ、実際に受信終了した時刻より遅れた時刻となる。そこで本実施形態では、ＩＣＲ７３に記憶されている正確なエッジ検出時刻に、そのエッジ検出時刻から受信終了時までのビット長を加えることにより、正確な受信終了時刻を得るようにしている。このときＩＣＲ７３に記憶されている時刻ｔ３は、言い換えれば、受信終了前における最後に立ち上がりエッジが検出されたときの時刻である。
【０１１３】
そして、算出した正確な受信終了時刻ｔ４に対し、更に、１ビットデータ長に対応した時間（つまり１０ビット分の時間）を加えることにより、次に１ビットデータを受信したならばその１ビットデータの受信がちょうど終了するであろう次回受信終了時刻（NextTime１）を得る。そして、得られた次回受信終了時刻NextTime１をＯＣＲ７４にセットする。
【０１１４】
そして、次の１ビットデータについても、立ち上がりエッジが検出されるたびにその検出時刻がＩＣＲ７３に記憶される。一方、比較器７５では、ＯＣＲ７４にセットされている次回受信終了時刻NextTime１と、周期的にカウントアップされるＦＲＣ７１の値とが比較されており、当該１ビットデータの受信の終了とほぼ同じタイミング（時刻ｔ８）で、両者の差が０となってタイマ割込処理要求Ｗ２が発生する。勿論、受信終了によって受信割込処理要求Ｗ１も発生する。そして、各割込処理要求Ｗ１，Ｗ２が発生すると、それぞれ割込処理待ちであることを示すフラグ（受信割込待ちフラグ及びタイマ割込待ちフラグ）をセットする。
【０１１５】
ＣＰＵ６１は、ほぼ同時に発生する受信割込処理要求Ｗ１とタイマ割込処理要求Ｗ２のうち、まず先に受けた要求に対してその割込処理を実行する。即ち、例えば受信割込処理要求Ｗ１がわずかながら早かった場合は、受信割込処理から実行することになり、その間、タイマ割込処理は待ちの状態となる。
【０１１６】
そして、タイマ割込処理が先に行われる場合は、その割込処理の中で受信割込待ち中か否かを判断して、受信割込待ち中ならば、そのタイマ割込処理を終了して受信割込処理を実行する。一方、受信割込処理においては、上述した時刻ｔ４の時の処理と同様、受信終了した時刻を算出すると共に、その算出した受信終了時刻を元に次回受信終了時刻NextTime２を算出してＯＣＲ７４に設定し、タイマ割込待ちフラグをクリアする。
【０１１７】
その後、時刻ｔ９（＝NextTime２）になると、タイマ割込処理が実行されるが、このとき、既にデータ受信は終了していて受信割込待ちフラグはセットされていないため、アイドル状態と判定して受信完了フラグをセットする。
【０１１８】
つまり、受信割込処理が先に実行される場合は、次回受信終了時刻NextTimeの算出及びＯＣＲ７４へのセットが行われてタイマ割込処理は行われない。逆に、タイマ割込処理が先に実行される場合、受信割込待ち中ならば受信割込処理に移行するが、受信割込待ち中でなければ、アイドル状態と判定するのである。
【０１１９】
次に、上記説明したアイドル状態の判定を実現するためにマイコン６０で実行される処理について、図１３〜図１５に基づいて説明する。尚、図１３〜１５に示す処理はいずれも、マイコン６０のＣＰＵ６１が実行するものであり、その各処理のプログラムはＲＯＭ６２に記憶されている。
【０１２０】
まず図１３は、エッジ検出部４６により立ち上がりエッジが検出されたときに発生する立ち上がりエッジ割込処理要求Ｗ３によってＣＰＵ６１が実行する、立ち上がりエッジ割込処理を示すフローチャートである。この処理が開始されると、Ｓ６１０にて、変数「ＩＮＴＴＩＭＥ」として、ＩＣＲ７３に取り込まれている時刻をＲＡＭ４３に設定する。立ち上がりエッジが発生したときは、ＩＣＭ７２においてもその検出時刻がＩＣＲ７３に取り込まれる。要するに、立ち上がりエッジが検出されるたびに、その検出された正確な時刻であるＩＣＲ７３の値が、立ち上がりエッジ割込処理によってＲＡＭ４３に格納されるわけである。
【０１２１】
次に図１４は、ＣＰＵ６１が、通信部４５によって受信割込処理要求Ｗ１が発生された時（図１２の例では時刻ｔ４及び時刻ｔ８）に実行を開始する受信割込処理を示すフローチャートである。但し、タイマ割込処理（図１５）が実行中のときは割込処理待ち状態となって、タイマ割込処理終了後に実行が開始される。
【０１２２】
この受信割込処理が開始されると、まずＳ５１０にて、受信した１バイトデータを取得する。そしてＳ５２０で、その取得した１バイトデータのビット列に基づき、最上位ビットから連続して並んでいる「１」（Ｈレベルビット）の数を変数「Ｎ」に設定する。例えば、図１２における最初の１バイトデータは、「０１１０００１０」となっている。そのため、最上位ビットから連続して並んでいる「１」の数はゼロであり、その場合はＮ＝０に設定する。次の１バイトデータの場合は「１１１０１０１１」となっているため、Ｎ＝０に設定する。
【０１２３】
このように「Ｎ」を設定した後は、Ｓ５３０にて受信終了時刻を算出する。具体的には、Ｎ＋１、即ちその最後の立ち上がりエッジから受信終了時までのビット数に、１ビット分の時間を積算することにより、その最後の立ち上がりエッジから受信終了時までの時間を得る。さらにその得られた時間を、「ＩＮＴＴＩＭＥ」の値、即ち受信終了前における最後の立ち上がりエッジ検出時刻に加算することにより、受信終了時刻が得られる。
【０１２４】
図１２で説明すれば、例えば最初の１ビットデータ受信終了時における時刻ｔ４の算出は、その直前における立ち上がりエッジ検出時刻ｔ３に、その後のビット数（１ビット）分の時間を加算することにより行われる。また、次の１ビットデータ受信終了時における時刻ｔ８の算出は、その直前における立ち上がりエッジ検出時刻ｔ７と、その後のビット数（４ビット）分の時間を加算することにより行われる。
【０１２５】
Ｓ５４０では、上記Ｓ５３０にて算出された受信終了時刻に１０ビット分の時間（つまり１バイトデータの時間）を加算することにより、次回受信終了時刻NextTimeを算出する。この次回受信終了時刻NextTimeは本発明のアイドル判定時刻に相当するものである。これにより、例えば図１２における時刻ｔ４の受信割込処理では、次回受信終了時刻NextTime１が算出されることになり、時刻ｔ８の受信割込処理では、次回受信終了時刻NextTime２が算出されることになる。
【０１２６】
このようにして次回受信終了時刻NextTimeを算出した後は、Ｓ５５０に進み、タイマ割込待ちフラグがセット中であるか否か判断する。そして、セットされていなければそのままＳ５７０へ進み、セット中ならばＳ５６０にてそのフラグをクリアした後、Ｓ５７０へ進む。そしてＳ５７０で、Ｓ５４０で算出した次回受信終了時刻NextTimeをＯＣＲ７４にセットし、続くＳ５８０にて受信割込待ちフラグをクリアして、この受信割込処理を終了する。
【０１２７】
次に図１５は、タイマ割込処理を示すフローチャートである。このタイマ割込処理は、ＦＲＣ７１の値が上記の受信割込処理（図１４）のＳ５７０でＯＣＲ７４にセットされた時刻に一致したときに比較器７５が発生するタイマ割込処理要求Ｗ２を、ＣＰＵ６１が受けたときに、ＣＰＵ６１により実行が開始される。但し、受信割込処理（図１４）が実行中のときは割込処理待ち状態となって、受信割込処理終了後に実行が開始される。
【０１２８】
このタイマ割込処理が開始されると、まずＳ７１０にて、受信割込待ちフラグがセットされているか否かを判断する。上記の如く、受信割込処理要求Ｗ１とタイマ割込処理要求Ｗ２はほぼ同時に発生するため、仮にわずかの差でタイマ割込処理が先に実行された場合であっても、このＳ７１０の処理が行われるときには既に受信割込待ちフラグがセットされた状態にある。そのため、データ受信中である限り、このＳ７１０では肯定判定されてＳ７４０へ進み、タイマ割込待ちフラグをクリアしてこのタイマ割込処理を終了することになる。
【０１２９】
一方、フレーム受信を完了した後の場合（例えば図１２の時刻ｔ９）、受信割込待ちフラグはクリアされているため、アイドル状態と判定してＳ７２０に進み、受信完了フラグをセットする。そして、続くＳ７３０にて受信完了処理及び送信準備処理を実行した後、Ｓ７４０に進む。
【０１３０】
以上説明したように、本実施形態では、車載シリアル通信システムを構成するシリアル通信制御用のマイコン６０が、１バイトデータの受信を終了する毎に受信割込処理を実行して、その受信終了時刻を正確に算出し、延いては次の１バイトデータの受信終了時刻である次回受信終了時刻NextTimeを算出してＯＣＲ７４にセットする。そして、そのセットした次回受信終了時刻NextTimeとなったときに受信割込待ちフラグがセットされているか否かによって、アイドル状態の判定を行う。
【０１３１】
そのため、本実施形態の車載シリアル通信システムによれば、アイドル状態を検出するためのハードウェアを備えていないマイコンであっても、マイコンが備えているインプットキャプチャ機能（ＩＣＭ７２）やアウトプットコンペア機能（タイマ６３）等を利用してソフト的にアイドル状態の判定を行うことができ、シリアル通信を正常に行うことができる。
【０１３２】
ここで、本実施形態の構成要素と本発明の構成要素の対応関係を明らかにする。本実施形態において、ＩＣＭ７２は本発明のエッジ時刻記憶手段に相当し、ＣＰＵ６１は本発明のアイドル判定手段に相当し、タイマ６３は本発明の計時手段に相当する。また、図１４の受信割込処理において、Ｓ５２０及びＳ５３０の処理はいずれも本発明の第１時刻算出手段が実行する処理に相当し、Ｓ５４０の処理は本発明の第２時刻算出手段が実行する処理に相当し、Ｓ５７０の処理は本発明の時刻設定部が実行する処理に相当する。また、図１５のタイマ割込処理において、Ｓ７１０の処理は本発明の受信判定部が実行する処理に相当する。
【０１３３】
尚、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
例えば、上記第１実施形態及び第３実施形態においてエッジ検出を行う際の、検出対象のエッジは、立ち上がりエッジとしたが、これに限るものではなく、例えば立ち下がりエッジとしてもよい。但し、アイドル状態の判定をより確実に行うためには、立ち上がりエッジにするのが好ましい。
【０１３４】
また、上記各実施形態では、１バイトデータが１０ビットからなるものであって、その１バイトデータが複数連続して送受信されるものとして説明したが、１バイトデータを構成するビット数は１０ビット以外でもよく、また、その１バイトデータが所定間隔で送受されるものであってもよい。
【０１３５】
更に、上記各実施形態では、３つのＥＣＵ相互間でシリアルデータを送受信する場合を例に挙げて説明したが、いうまでもなく、通信ラインＬ１に接続されるＥＣＵの数（詳細にはシリアル通信を制御するマイコンの数）やその種類等は特に限定されない。
【図面の簡単な説明】
【０１３６】
【図１】車載シリアル通信システムの概略構成を示すブロック図である。
【図２】第１実施形態のマイコンの概略構成を示すブロック図である。
【図３】第１実施形態の車載シリアル通信システムにおけるイモビ登録処理時のフレームの流れを説明するためのタイムチャートである。
【図４】第１実施形態の車載シリアル通信システムの通信動作を説明するためのタイムチャートである。
【図５】第１実施形態の受信割込処理を示すフローチャートである。
【図６】第１実施形態のタイマ割込処理を示すフローチャートである。
【図７】第２実施形態のマイコンの概略構成を示すブロック図である。
【図８】第２実施形態の車載シリアル通信システムの通信動作を説明するためのタイムチャートである。
【図９】第２実施形態の受信割込処理を示すフローチャートである。
【図１０】第２実施形態のタイマ割込処理を示すフローチャートである。
【図１１】第３実施形態のマイコンの概略構成を示すブロック図である。
【図１２】第３実施形態の車載シリアル通信システムの通信動作を説明するためのタイムチャートである。
【図１３】第３実施形態の立ち上がりエッジ割込処理を示すフローチャートである。
【図１４】第３実施形態の受信割込処理を示すフローチャートである。
【図１５】第３実施形態のタイマ割込処理を示すフローチャートである。
【図１６】シリアル通信のデータフォーマットの一例を示す説明図である。
【図１７】従来のマイコンの概略構成を示すブロック図である。
【符号の説明】
【０１３７】
１０・・・ツール、１１，２１，３１，５０，６０，１００・・・マイコン、１２，２２，３２・・・送信バッファ、１３，２３，３３・・・受信バッファ、２０・・・エンジンＥＣＵ、３０・・・イモビＥＣＵ、４１，５１，６１・・・ＣＰＵ、４２，５２，６２・・・ＲＯＭ、４３・・・ＲＡＭ、４４，６３・・・タイマ、４５，５３・・・通信部、４６・・・エッジ検出部、４７，５６，６４・・・バス、５４・・・受信中判定部、７１・・・フリーランカウンタ（ＦＲＣ）、７２・・・インプットキャプチャモジュール（ＩＣＭ）、７３・・・インプットキャプチャレジスタ（ＩＣＲ）、７４・・・アウトプットコンペアレジスタ（ＯＣＲ）、７５・・・比較器、１０８・・・アイドル検出部、Ｌ１・・・通信ライン、Ｐ１・・・データ出力ポート、Ｐ２・・・データ入力ポート、Ｐ３・・・エッジ検出ポート、Ｐ４・・・インプットキャプチャ入力ポート
【図１】
2005295132.tif 000003
【図２】
2005295132.tif 000004
【図３】
2005295132.tif 000005
【図４】
2005295132.tif 000006
【図５】
2005295132.tif 000007
【図６】
2005295132.tif 000008
【図７】
2005295132.tif 000009
【図８】
2005295132.tif 000010
【図９】
2005295132.tif 000011
【図１０】
2005295132.tif 000012
【図１１】
2005295132.tif 000013
【図１２】
2005295132.tif 000014
【図１３】
2005295132.tif 000015
【図１４】
2005295132.tif 000016
【図１５】
2005295132.tif 000017
【図１６】
2005295132.tif 000018
【図１７】
2005295132.tif 000019