(57)【特許請求の範囲】
【請求項１】
データ通信線を介して相手側のマイクロコンピュータとシリアル通信可能に接続され、一定周期で連続送信されるシリアル通信クロックに同期して、相手側のマイクロコンピュータからの処理コマンドを受信すると共に該処理コマンドに対応した処理結果を送信するシリアル通信装置において、
相手側のマイクロコンピュータとの間で通信データを送受信するための第１のレジスタと、
所定クロック数分のデータをそれぞれ格納可能な一対のレジスタからなり、前記第１のレジスタの通信データを一時的に格納するための第２のレジスタと、
第１のレジスタにて所定クロック数分のデータを受信すると、当該データを一方の第２のレジスタに読み出し、該読み出した処理コマンドの実施後、処理結果を他方の第２のレジスタにセットし、所定クロック数が経過した時点で、前記処理結果を第１のレジスタに書き込むと共に、次の受信データを第２のレジスタに読み出す通信制御手段と、
を備えることを特徴とするシリアル通信装置。
【請求項２】
請求項１に記載のシリアル通信装置において、
前記第１のレジスタは、所定クロック数分のデータを受信するための受信部と、同じく所定クロック数分のデータを送信するための送信部とを持つシリアル通信装置。
【請求項３】
所定周期で通信同期のための通信同期初期化信号を受信する請求項１又は請求項２に記載のシリアル通信装置。
【請求項４】
連続Ａ／Ｄ変換要求のコマンドを受信した時、通信とは独立して該連続Ａ／Ｄ変換を行ってその結果を順次メモリに記憶し、その間に相手側の他のコマンドを実行し、連続Ａ／Ｄ変換の終了後、Ａ／Ｄ結果取り込みのコマンドを受信すると、前記Ａ／Ｄ変換の結果を送信する請求項１〜３の何れかに記載のシリアル通信装置。
【請求項５】
受信したコマンドが定義されていない不当コマンドであれば、それ以降の通信を強制停止させるべく停止信号を出力する請求項１〜４の何れかに記載のシリアル通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば車両用エンジンの電子制御装置（エンジンＥＣＵ）におけるシリアル通信技術に係り、複数のマイクロコンピュータ（マイコン）間でシリアル通信を行うシリアル通信装置に関する。
【０００２】
【従来の技術】
この種の従来技術として、特開平９−２８２２６５号公報の装置が知られており、同公報の装置はマスタ／スレーブの関係を有する２つのマイコン間で双方向にデータ（メッセージ）をシリアル通信するものとして構成されている。例えば、マスタ側マイコンは点火時期制御や燃料噴射制御等、主要なエンジン制御を司り、スレーブ側マイコンはエンジン制御に必要な各種センサによるセンシングデータのＡ／Ｄ変換、負荷演算やその他補助的な制御を行う。ここで、同公報の装置にあってはシリアル通信クロックに同期してメッセージが送信され、マイコン間で授受されるメッセージには、例えばＡ／Ｄ変換やＲＡＭ読み出しのデータの他に、それら各処理の要求コマンドが含まれる。
【０００３】
実際のデータ通信に際しては、クロックの最初の立ち下がりに同期して処理完了信号（同公報図６のＥＯＣＴ信号）がひとまず論理ハイレベルに立ち上げられると共に、各マイコンのシフトレジスタに各々セットされているメッセージが交換される。そして、１セット分のメッセージ交換が終了すると、クロックが一旦停止され、それに伴い処理完了信号（ＥＯＣＴ）が論理ローレベルに立ち下げられる。その後、スレーブ側マイコンは、マスタ側マイコンから受信したメッセージ内の要求コマンドに従いＡ／Ｄ変換、ＲＡＭデータ読み出し等、所定の処理を実行し、その処理が終了した時点で処理完了信号（ＥＯＣＴ）を再び論理ハイレベルに立ち上げる。マスタ側マイコンは、処理完了信号が論理ハイレベルに立ち上げられたことによりデータ送信の準備ができた旨を判断し、クロックを再起動させて次のメッセージをスレーブ側マイコンへ送信する。
【０００４】
【発明が解決しようとする課題】
ところで、上記特開平９−２８２２６５号公報の装置では、スレーブ側マイコンが要求コマンドに応じた所定の処理を実行している間（同公報の図６で言えば、ＥＯＣＴ＝Ｌの間）、クロックが停止して通信が中断される。特に、マスタ側マイコンからの要求がＡ／Ｄ変換である場合など、スレーブ側マイコンでの処理時間を要する場合には通信停止の時間が長くなる。従って、通信している時間に比べて通信が停止している時間が大きくなり、通信速度を向上させることが困難となる。またかかる装置では、スレーブ応答用通信線（ＥＯＣＴ線）が不可欠となり、構成の簡素化を図る上で不都合であった。
【０００５】
上記装置に対し、スレーブ応答用通信線（ＥＯＣＴ線）を用いず、一定時間の経過後に次のメッセージ（コマンド及びデータ）を送信する方法も考えられる。すなわち、スレーブ側マイコンでは、クロックに同期してメッセージを受信した後、要求コマンドに従って所定の処理（Ａ／Ｄ変換やＲＡＭ書き込みの処理）を行い、更にその後、当該スレーブ側マイコンの処理が確実に終了する一定時間（例えば４０μｓ）毎に次のメッセージを受信する。ここで、スレーブ側マイコンの処理が終了しようと終了しまいと、マスタ側マイコンは一定時間４０μｓ毎に次のメッセージを送信する。なお、スレーブ側マイコンでの処理が正しく終了したかどうかは、送信されてきたメッセージ内の識別ビットから判断される。
【０００６】
しかしこの場合、スレーブ応答用通信線（ＥＯＣＴ線）は不要となるものの、スレーブ側マイコンでの処理が確実に終了する一定時間（４０μｓ）を待ってから次のメッセージを送信する必要があるため、特開平９−２８２２６５号公報の装置よりも更に通信時間が長くなるという問題があった。
【０００７】
また既存の通信方法として、特開平９−２８２２６５号公報とは異なり、全てのメッセージの送信が終了するまでクロックを停止させないものもあるが、マスタ側マイコンからの要求コマンドがＲＡＭデータの読み出しや書き込みの他、Ａ／Ｄ変換等、処理時間を要するものを含む場合、スレーブ側マイコンでの処理時間を要し、実質上、適用が不可能となる。
【０００８】
因みに、他の従来技術として特許第２７１９７３４号公報のシリアル通信装置では、マスタ側及びスレーブ側の間にクロック、マスタデータ及びスレーブデータ用の各通信線と、同期初期化要求及びスレーブ応答用の各制御線とを設けている。そして、マスタ側装置は、マスタデータの送信開始時又はスレーブデータ受信開始時に同期初期化要求を送信し、他方、スレーブ側装置は、マスタデータの受信後とスレーブデータ送信前にスレーブ応答を送信する。ところが、かかる装置においても、コマンドの実施に際して通信が中断される、スレーブ応答用通信線を要する、といった問題があった。
【０００９】
本発明は、上記問題に着目してなされたものであって、第１の目的は、コマンドに対応する処理に時間を要する場合にも通信速度を向上させることができるシリアル通信装置を提供することである。また第２の目的は、構成の簡素化を図ることができるシリアル通信装置を提供することである。
【００１０】
【課題を解決するための手段】
本発明のシリアル通信装置では、一定周期で連続送信されるシリアル通信クロックに同期して、相手側のマイクロコンピュータからの処理コマンドを受信すると共に該処理コマンドに対応した処理結果を送信することを前提とする。
【００１６】
請求項１に記載の発明では、相手側のマイクロコンピュータとの間で通信データを送受信するための第１のレジスタと、所定クロック数分のデータをそれぞれ格納可能な一対のレジスタからなり、前記第１のレジスタの通信データを一時的に格納するための第２のレジスタと、第１のレジスタにて所定クロック数分のデータを受信すると、当該データを一方の第２のレジスタに読み出し、該読み出した処理コマンドの実施後、処理結果を他方の第２のレジスタにセットし、所定クロック数が経過した時点で、前記処理結果を第１のレジスタに書き込むと共に、次の受信データを第２のレジスタに読み出す通信制御手段と、を備える。
【００１７】
本発明によれば、第２のレジスタでは、所定クロック数分の受信データを読み出すと、該データ中における処理コマンドに従って処理が行われると共に、その処理結果がセットされる。そして、所定クロック数が経過した時点で、前記処理結果が第１のレジスタに書き込まれると共に、次の受信データが第２のレジスタに読み出される。その後、前記処理結果が第１のレジスタから相手側のマイクロコンピュータへ送信され、このデータ送信と引き替えに、所定クロック数分の新たなデータが第１のレジスタで受信される。
【００１８】
こうして通信専用の第１のレジスタと処理専用の第２のレジスタとを使い通信を行うことで、受信直後の処理コマンドを一時的に退避させ、その退避先で所定の処理を行わせることができる。従って、処理コマンドに対応する処理が例えばＡ／Ｄ変換であり、その処理に時間を要する場合であってもコマンド毎に通信が中断されることはなく、通信速度を向上させることができる。また更に、所定クロック数分の通信毎に通信準備が完了したかどうかをチェックする必要がないため、スレーブ応答用通信線（例えば特開平９−２８２２６５号公報のＥＯＣＴ線）が削除でき、構成の簡素化を図ることができる。
【００２０】
特に、第１のレジスタでの所定クロック数分のデータ受信が完了したタイミングでは、
・第１のレジスタの受信データを第２のレジスタに読み出す。
・第２のレジスタの処理結果を第１のレジスタに書き込む。
といった各処理を行うが、上記の如く一対の第２のレジスタを用いることで、それら各処理を効率良く行うことができる。
【００２１】
請求項２に記載の発明では、請求項１に記載の発明において、前記第１のレジスタは、所定クロック数分のデータを受信するための受信部と、同じく所定クロック数分のデータを送信するための送信部とを持つ。
【００２２】
上記構成によれば、第１のレジスタが受信部と送信部とを各々持つことで、第１のレジスタでのデータ受信後には、受信部の受信データが第２のレジスタに読み出され、それと同時に、第２のレジスタの処理結果が送信部に書き込まれる。つまり、これらデータ読み出し／書き込みの処理を同時に行うことができ、その処理時間が短縮される。従って、シリアル通信の更なる高速化が可能となる。
【００２３】
請求項３に記載の発明では、請求項１又は請求項２に記載の発明において、所定周期で通信同期のための通信同期初期化信号を受信する。本構成によれば、ノイズ等に起因してクロックのずれが発生しても、通信同期初期化信号を定期的に受信することでその不都合な状態が解消される。すなわち、通信の同期化が改めてなされ、適正なるシリアル通信が継続できる。
【００２４】
請求項４に記載の発明では、請求項１〜３の何れかに記載の発明において、連続Ａ／Ｄ変換要求のコマンドを受信した時、通信とは独立して該連続Ａ／Ｄ変換を行ってその結果を順次メモリに記憶し、その間に相手側の他のコマンドを実行し、連続Ａ／Ｄ変換の終了後、Ａ／Ｄ結果取り込みのコマンドを受信すると、前記Ａ／Ｄ変換の結果を送信する。
【００２５】
本構成によれば、連続Ａ／Ｄ変換の要求に伴い該Ａ／Ｄ変換に長い時間を要する場合にも、それにより通信が中断されることはなく、そのＡ／Ｄ変換時間を利用して相手側の他のコマンドが実施される。連続Ａ／Ｄ変換の結果はメモリに一旦記憶された後、取り込みコマンドに従い相手側に送信される。従って、通信の効率化並びに迅速化が実現できる。
【００２６】
請求項５に記載の発明では、請求項１〜４の何れかに記載の発明において、受信したコマンドが定義されていない不当コマンドであれば、それ以降の通信を強制停止させるべく停止信号を出力する。この場合、クロックずれ等に起因して不正な通信が行われ誤った処理が実施される、といった不具合が未然に防止できる。
【００２７】
【発明の実施の形態】
（第１の実施の形態）
以下、この発明のシリアル通信装置を具体化した一実施の形態を図面に従って説明する。
【００２８】
第１の実施の形態では、各種のエンジン制御を司る車両用電子制御ユニット（エンジンＥＣＵ）にあってマスタ／スレーブの関係にある２つのマイコンを備える。そして、同ＥＣＵでは、両マイコン間を接続する各種通信線を介してシリアル通信が行われる。先ずは図１を参照して、同実施の形態の装置が適用されるエンジンＥＣＵについてその全体の構成を説明する。
【００２９】
本通信システムにおいて、第１のマイコン１０は、図示しないエンジンの燃料噴射量制御や点火時期制御を行うマイコンであり、本シリアル通信の主導権を握るマスタ側マイコンとしての役割を担う。また、第２のマイコン２０は、エンジンに取り付けられた各種センサ（図示略）からそれらセンシングデータを取り込むと共に、例えばノック制御や負荷制御等の補助的な制御を主に実行するマイコンであり、スレーブ側マイコンとしての役割を担う。第２のマイコン２０には、空気流量や水温等、各種センシングデータのＡ／Ｄ変換を行うＡ／Ｄ変換器が内蔵されており、当該第２のマイコン２０は第１のマイコン１０からの要求に従いＡ／Ｄ変換を実施する。
【００３０】
なお因みに、例えば第２のマイコン２０によるノック制御の実施に際しては、車種毎に設定される仕様別データが第１のマイコン１０から第２のマイコン２０に送信され、この送信された仕様別データに基づきノック制御が実施される。つまり、本実施の形態のエンジンＥＣＵでは、車種毎の仕様変更に関係なく第２のマイコン２０が共通化されるようになっている。
【００３１】
第１のマイコン１０は、制御量としての燃料噴射量や点火時期等を演算するＣＰＵ１１、プログラムメモリとして用いられるＲＯＭ１２、データメモリとして用いられるＲＡＭ１３、点火信号や燃料噴射信号などを出力する出力バッファ１４をはじめ、クロック発生回路１５、通信制御部１６及びシリアル通信ブロック１７を備える。これらＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、出力バッファ１４及び通信制御部１６は、共通のバスＢ１を介して接続されている。
【００３２】
クロック発生回路１５は、所定の周波数でシリアル通信用のシフトクロックＳＣＬＫを発生する発振子１５１と、通信制御部１６によりオン／オフされるスイッチ１５２とを備える。通信制御部１６は、ＣＰＵ１１によって起動されることによりシリアル通信ブロック１７を操作し、ＲＯＭ１２やＲＡＭ１３に格納されているデータを第２のマイコン２０に転送したり、同第２のマイコン２０から必要なデータを取り込む部分である。
【００３３】
シリアル通信ブロック１７は、スイッチＳＷ１，ＳＷ２により切替可能な一対のシフトレジスタ１７ａ，１７ｂを備える。スイッチＳＷ１，ＳＷ２は通信制御部１６により切替操作され、１６クロック分のカウント毎に図のｃ側又はｄ側に切り替えられる。シフトレジスタ１７ａ，１７ｂは、一方がシリアル通信中、他方では前回受信したメッセージが解析されるものであるが、その詳細は後述する。
【００３４】
一方、第２のマイコン２０は、ノック制御や負荷制御にかかる制御量を演算するＣＰＵ２１、プログラムメモリとして用いられるＲＯＭ２２、データメモリとして用いられるＲＡＭ２３をはじめ、Ａ／Ｄ変換器２４、マルチプレクサ２５、入力バッファ２６、出力バッファ２７、通信制御部２８及びシリアル通信ブロック２９を備える。これらＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、Ａ／Ｄ変換器２４、入力バッファ２６、出力バッファ２７及び通信制御部２８は、共通のバスＢ２を介して接続されている。
【００３５】
ここで、空気流量や水温など、各種アナログ信号はアナログマルチプレクサ２５に一旦取り込まれ、上記ＣＰＵ２１或いは通信制御部２８によってＡ／Ｄ変換チャネルとして指定されたチャネルに対応する信号だけが該マルチプレクサ２５により選択されて、Ａ／Ｄ変換器２４によりアナログ／デジタル変換される。また、入力バッファ２６は、Ａ／Ｃ（エアコン）スイッチの状態やニュートラルスイッチの状態等を示す入力を一時格納し、出力バッファ２７は、Ｏ2 センサヒータに対するオン／オフ指令やウォーニングランプに対するオン／オフ指令等の出力を一時格納する。すなわち、各バッファ２６，２７は、ＰＢポート（入出力ポート）の状態を一時的に格納する。
【００３６】
通信制御部２８は、第１のマイコン１０側の通信制御部１６から受信される要求コマンドに基づき、Ａ／Ｄ変換器２４を起動してＡ／Ｄ変換処理やその処理結果の返信、並びにＲＡＭ２３へのデータ書き込みやＲＡＭ２３からのデータ読み出しにかかるメモリアクセス等を行う部分である。すなわち、通信制御部２８は、シフトクロックに基づくいわゆるハンドシェイクでのシリアルデータ交換に際し、その受信されたメッセージ中の要求コマンドを解析してＡ／Ｄ変換器２４やＲＡＭ２３に対するアクセスを実行する。
【００３７】
シリアル通信ブロック２９は、前記シリアル通信ブロック１７と同様の構成を持つ。すなわち、スイッチＳＷ３，ＳＷ４により切替可能な一対のシフトレジスタ２９ａ，２９ｂを備える。スイッチＳＷ３，ＳＷ４は通信制御部２８により切替操作され、１６クロック分のカウント毎に図のａ側又はｂ側に切り替えられる。シフトレジスタ２９ａ，２９ｂは、一方がシリアル通信中、他方では前回受信したメッセージが解析されるものであるが、その詳細は後述する。
【００３８】
第１，第２のマイコン１０，２０間は、シフトクロックＳＣＬＫを送信するためのクロック線や、その他、通信同期初期化信号ＩＯＲＥＳＢ，マスタ信号ＳＲＸＤ，スレーブ信号ＳＴＸＤ用の各種通信線を介して接続されている。ここで、通信制御部１６，２８にはクロック発生回路１５からシフトクロックＳＣＬＫが送信され、通信制御部１６から通信制御部２８に向けては通信同期初期化信号ＩＯＲＥＳＢが送信される。通信途中においてはシフトクロックＳＣＬＫは停止されることなく、一定周期で連続的に送信される。通信同期初期化信号ＩＯＲＥＳＢは、所定周期（例えば４ｍｓ毎）に送信される。
【００３９】
シリアル通信ブロック１７，２９の各シフトレジスタは、図示の態様でループ状に接続されており、シフトクロックＳＣＬＫに基づいて互いのデータが交換されるようになる。このとき、シリアル通信ブロック１７からシリアル通信ブロック２９に向けてはマスタ信号ＳＲＸＤが送信され、逆のシリアル通信ブロック２９からシリアル通信ブロック１７に向けてはそのマスタ信号ＳＲＸＤに応答するスレーブ信号ＳＴＸＤが送信される。
【００４０】
すなわちこれらシフトレジスタでは、シフトクロックＳＣＬＫの１クロック毎に例えば、
・シフトレジスタ１７ａのＭＳＢがシフトレジスタ２９ａのＬＳＢに転送される。
・シフトレジスタ２９ａのＭＳＢがシフトレジスタ１７ａのＬＳＢに転送される。
といったシフト動作が同時に実行され、ここでの例の場合、シフトクロックＳＣＬＫが１６クロック出力されることで、それら各シフトレジスタ１７ａ，２９ａにセットされている１６ビット分の信号（メッセージ）が全て交換されるようになる。
【００４１】
通信制御部１６において、シリアル通信ブロック１７のシフトレジスタ１７ａ，１７ｂにセットする１６ビットのマスタ信号ＳＲＸＤには、授受の対象となる通常１バイト（８ビット）からなるデータの他に、
（Ａ）Ａ／Ｄ変換要求コマンド
（Ｂ）ＲＡＭ２３へのデータ書き込み要求コマンド
（Ｃ）ＲＡＭ２３からのデータ読み出し要求コマンド
等のコマンドが含まれる。
【００４２】
以下に、同システムにおいて実行されるデータ通信の具体例について、上記各コマンドによる要求内容との対応のもとに順次列記する。また併せて、図２を参照し、上記（Ａ）〜（Ｃ）の各要求に際して第１のマイコン１０（マスタ側マイコン）のシフトレジスタ１７ａ，１７ｂにセットされるシリアルデータのデータ構造、並びに第２のマイコン２０（スレーブ側マイコン）のシフトレジスタ２９ａ，２９ｂにセットされるシリアルデータのデータ構造を説明する。
【００４３】
（Ａ）Ａ／Ｄ変換要求
第１のマイコン１０自身は、先の図１に示されるようにＡ／Ｄ変換器を持たない。このため、前述した燃料噴射量制御や点火時期制御に際して、例えば冷却水温等についてのセンシングデータを取り込む必要が生じた場合には、第２のマイコン２０に対してＡ／Ｄ変換要求を発し、前記Ａ／Ｄ変換器２４を通じてＡ／Ｄ変換処理された結果を転送してもらうこととなる。
【００４４】
こうしたＡ／Ｄ変換要求に際し、第１のマイコン１０から第２のマイコン２０へは図２（ａ）に示されるように、
・Ａ／Ｄ変換コマンド、
・Ａ／Ｄ変換の指定チャネル、
・ダミーデータ、
といったデータ構造にて１６ビットからなるマスタ信号ＳＲＸＤが送信される。
【００４５】
一方、上記信号ＳＲＸＤを受信した第２のマイコン２０からは図２（ｂ）に示されるように、
・指定されたＡ／Ｄ変換チャネル、
・当該Ａ／Ｄ変換が正常終了したか否かを示す識別ビットＦ、
・Ａ／Ｄ変換結果、
といったデータ構造にて、これも１６ビットからなるスレーブ信号ＳＴＸＤが返信される。
【００４６】
（Ｂ）ＲＡＭ２３へのデータ書き込み要求
第１のマイコン１０から第２のマイコン２０のＲＡＭ２３に対して書き込み要求されるデータとしては、例えば、
・ノック判定補正値のマップデータ、
・フェイル判定レベルのマップデータ、
・ゲート区間のマップデータ、
等からなるノック制御用のデータがあり、同制御データは第１のマイコン１０のＲＯＭ１２に予め登録されている。
【００４７】
同データ書き込み要求に際し、第１のマイコン１０から第２のマイコン２０へは図２（ｃ）に示されるように、
・ＲＡＭ書き込みコマンド、
・ＲＡＭ２３内の書き込みアドレス、
・各マップデータ等の書き込みデータ、
といったデータ構造にて１６ビットからなるマスタ信号ＳＲＸＤが送信される。
【００４８】
一方、上記信号ＳＲＸＤを受信した第２のマイコン２０からは図２（ｄ）に示されるように、
・ＲＡＭ書き込みコマンド、
・ＲＡＭ２３内の書き込みアドレス、
・当該データ書き込みが正常終了したか否かを示す識別ビットＦ、
・ダミーデータ
といったデータ構造にて、これも１６ビットからなるスレーブ信号ＳＴＸＤが返信される。
【００４９】
（Ｃ）ＲＡＭ２３からのデータ読み出し要求
第１のマイコン１０が第２のマイコン２０のＲＡＭ２３から読み出し要求するデータとしては、同第２のマイコン２０による例えば負荷状態等についての演算値がある。
【００５０】
同データ読み出し要求に際し、第１のマイコン１０から第２のマイコン２０へは図２（ｅ）に示されるように、
・ＲＡＭ読み出しコマンド、
・ＲＡＭ２３内の読み出しアドレス、
・ダミーデータ、
といったデータ構造にて１６ビットからなるマスタ信号ＳＲＸＤが送信される。
【００５１】
一方、上記信号ＳＲＸＤを受信した第２のマイコン２０からは図２（ｆ）に示されるように、
・ＲＡＭ読み出しコマンド、
・ＲＡＭ２３内の読み出しアドレス、
・当該データ読み出しが正常終了したか否かを示す識別ビットＦ、
・ＲＡＭ２３からの指定された読み出しデータ、
といったデータ構造にて、これも１６ビットからなるスレーブ信号ＳＴＸＤが返信される。
【００５２】
上記（Ａ），（Ｂ），（Ｃ）以外の要求を第２のマイコン２０が受信した場合、不当コマンドと処理され、第２のマイコン２０からは図２（ｇ）に示されるように、
・要求コマンド、
・要求アドレス、
・不当コマンドとして処理されたことを示す識別ビットＦ、
・ダミーデータ、
といったデータ構造にて、これも１６ビットからなるスレーブ信号ＳＴＸＤが返信される（但しこのとき、識別ビットＦ＝０である）。
【００５３】
図３は、第１のマイコン１０の通信用ＲＡＭについてその構造を模式的に示す図である。図３（ａ）に示されるように、送信用データを格納するＲＡＭは、各１６ビットのｍ〜ｍ＋ｋまでの複数の領域（ブロック）を有する。また、図３（ｂ）に示されるように、受信用データを格納するＲＡＭは、各１６ビットのｎ〜ｎ＋ｋまでの複数の領域（ブロック）を有する。
【００５４】
ところで、本実施の形態における装置では、既述の通りシフトクロックＳＣＬＫが通信途中に停止されることなく、一定周期で連続的に送信される。そして、Ａ／Ｄ変換など、コマンドに対応する処理に時間を要する場合にも、次のコマンド受信中に前回のコマンドに従って処理を行い、更にその次のコマンド受信時に全二重方式にて通信を行うことで、シフトクロックＳＣＬＫを止めることなく通信を行うこととしている。
【００５５】
上記装置の実現として、シリアル通信ブロック１７，２９内の各々２つのシフトレジスタのうち、一方を「送信用レジスタ」、他方を「処理用レジスタ」として用い、それら送信用及び処理用のレジスタを所定クロック毎に交互に切り替えることとする。この場合、送信用レジスタ側にて１６ビット分の信号（メッセージ）を全て交換した後、通信を止めることなくそれに引き続いて前記要求コマンドに応じたＡ／Ｄ変換等の処理を実施すべく、受信し終わった１６クロック分の信号を処理用レジスタ側に退避させる。
【００５６】
すなわち、送信用レジスタとしての一方のシフトレジスタでシリアル通信が行われる際、それと同時に、処理用レジスタとしての他方のシフトレジスタでは前回受信したコマンドが解析され、そのコマンドに従った所定の処理が行われる。そして、その処理結果が当該処理用レジスタにセットされ、送信用レジスタでの１６クロック分のシリアル通信が終了するのを待った後、それまでの処理用レジスタが送信用に切り替えられて該送信用レジスタから前記セットされた処理結果が送信される。また、１６クロック分のデータを受信したレジスタがその受信後に処理用レジスタに切り替えられることで、受信し終えたコマンド等のデータが非通信状態のレジスタに一旦退避される。従って、コマンド毎にデータ通信が途切れることはない。
【００５７】
上述したデータ構造を持つ各信号が第１，第２のマイコン１０，２０間で授受される際、図４に示されるように、例えば周波数１ＭＨｚで連続送信されるシフトクロックＳＣＬＫに同期して、同クロックＳＣＬＫの１６クロック分を１セットとしてデータ部分及びコマンド部分からなる信号が送信される。このとき、第１のマイコン１０から第２のマイコン２０へは、１６μｓ間に１６ビットのマスタ信号ＳＲＸＤが送信される。
【００５８】
図５は、第２のマイコン２０側の動作を主として、各マイコン１０，２０で上記データ構造を持つ各信号が授受されるデータ転送態様を示したタイムチャートであり、この図５を併せ参照して、シリアル通信の概要を説明する。なお、図５では、通信初期においてＡ／Ｄ変換データがシリアル通信され、その後、ＲＡＭデータやＰＢポートデータがシリアル通信されるようになっている。
【００５９】
通信開始当初において、第１のマイコン１０は、通信同期初期化信号ＩＯＲＥＳＢを一時的に論理ローレベルとし（時刻ｔ１）、それに伴いシリアル通信ブロック等のレジスタが初期化される。このとき、シリアル通信ブロック２９内のシフトレジスタ２９ａ，２９ｂには初期値（例えば００・・・０）が代入される。また、シフトレジスタ２９ａ，２９ｂのＭＳＢ，ＬＳＢ側のスイッチＳＷ３，ＳＷ４は何れもａ側に接続されており、この初期状態ではシフトレジスタ２９ａが送信用レジスタとなり、シフトレジスタ２９ｂが処理用レジスタとなる。
【００６０】
時刻ｔ２以降、１ＭＨｚのシフトクロックＳＣＬＫが発信され、第１のマイコン１０は、コマンド及びデータからなるマスタ信号ＳＲＸＤ（図の「ＡＤ要求１」）をシフトクロックＳＣＬＫに同期させて送信する。すなわち、このＡ／Ｄ変換要求に際し、前記図２（ａ）に示したデータ構造のマスタ信号ＳＲＸＤが第２のマイコン２０に送信される。このとき、同クロックＳＣＬＫの１６クロック出力に基づき、第１のマイコン１０からの送信データとシフトレジスタ２９ａ内のデータとが交換される。その結果、シフトレジスタ２９ａにおいては、Ａ／Ｄ変換要求コマンドをはじめ、Ａ／Ｄ変換の指定チャネルが受信される。
【００６１】
１６クロック分のデータ送受信が完了すると（時刻ｔ３）、スイッチＳＷ３，ＳＷ４がｂ側に切り替えられ、それまでとは逆に、シフトレジスタ２９ａが処理用レジスタとなり、シフトレジスタ２９ｂが送信用レジスタとなる。
【００６２】
時刻ｔ３以降、第１のマイコン１０は、シフトクロックＳＣＬＫを停止させることなく、前記同様、図２（ａ）に示したデータ構造のマスタ信号ＳＲＸＤ（図の「ＡＤ要求２」）を同クロックＳＣＬＫに同期させて送信する。その結果、シフトレジスタ２９ｂにおいては、Ａ／Ｄ変換要求コマンドをはじめ、Ａ／Ｄ変換の指定チャネルが受信される。
【００６３】
時刻ｔ３〜ｔ４の「ＡＤ要求２」の受信と同時に、第２のマイコン２０は、前記シフトレジスタ２９ａに受信した処理コマンドを解析してその処理コマンドに応じた所定の処理（ここではＡ／Ｄ変換処理）を行う。すなわち、Ａ／Ｄ変換器２４を起動してその指定されたチャネルのＡ／Ｄ変換を行わせ、その結果を取り込むなど、同要求に応ずるべく所定の処理を実行した後、前記図２（ｂ）に示したデータ構造のスレーブ信号ＳＴＸＤを処理用レジスタ（シフトレジスタ２９ａ）にセットする。そして、送信用レジスタ（シフトレジスタ２９ｂ）の通信終了を待つ。なおスレーブ信号ＳＴＸＤには、コマンドが正しかったか、処理が正しく終了したか等の判定結果を示す識別ビットＦも併せてセットされる。
【００６４】
１６クロック分のデータ送受信が完了すると（時刻ｔ４）、スイッチＳＷ３，ＳＷ４が再びａ側に切り替えられ、シフトレジスタ２９ａが送信用レジスタに戻り、シフトレジスタ２９ｂが処理用レジスタに戻る。
【００６５】
時刻ｔ４〜ｔ５でもやはり、第１のマイコン１０は、シフトクロックＳＣＬＫを停止させることなく、前記同様、図２（ａ）に示したデータ構造のマスタ信号ＳＲＸＤ（図の「ＡＤ要求３」）を同クロックＳＣＬＫに同期させて送信する。このとき、第２のマイコン２０は、Ａ／Ｄ変換要求コマンドをはじめ、Ａ／Ｄ変換の指定チャネル等をシフトレジスタ２９ａで受信すると共に、それと引き替えに、当該レジスタ２９ａに既にセットされているスレーブ信号ＳＴＸＤを第１のマイコン１０に送信する。このとき、前記「ＡＤ要求１」に応答したＡ／Ｄ変換結果をはじめ、Ａ／Ｄ変換チャネル、識別ビットＦが第１のマイコン１０に送信される。
【００６６】
第１のマイコン１０では、その時の送信用レジスタであるシフトレジスタ１７ａでスレーブ信号ＳＴＸＤを受信した後（時刻ｔ５後）、前記図１のスイッチＳＷ１，ＳＷ２の操作によりシフトレジスタ１７ａを処理用レジスタに切り替え、当該処理用レジスタ内のデータ（上記Ａ／Ｄ変換結果）を自身の通信用ＲＡＭに格納する。
【００６７】
以後は、通信の終了に伴い第１のマイコン１０からのシフトクロックＳＣＬＫが停止するまで、上記に準じた処理が繰り返し実行される。
要するに、例えば「ＡＤ要求１」に基づくデータ通信に着目すると、最初の１６クロック（時刻ｔ２〜ｔ３）で第１のマイコン１０からの要求コマンドが読み取られ、次の１６クロック（時刻ｔ３〜ｔ４）でそのコマンドに応じた処理が行われ、更にその次の１６クロック（時刻ｔ４〜ｔ５）で前記コマンドに対応した処理結果が第１のマイコン１０に返信されることとなる。
【００６８】
因みに図６において、例えば時刻ｔ１１〜ｔ１２，ｔ１２〜ｔ１３では、ＲＡＭ書き込み要求コマンドを含む、前記図２（ｃ）に示したデータ構造のマスタ信号ＳＲＸＤが、スイッチＳＷ３，ＳＷ４の状態に応じてシフトレジスタ２９ａ，２９ｂに交互に送信される。そして、時刻ｔ１２〜ｔ１３では、その直前の時刻ｔ１１〜ｔ１２で受信したＳＲＸＤ信号中のＲＡＭ書き込み要求コマンドに応答してＲＡＭ書き込み処理が実行されると共に、前記図２（ｄ）に示したデータ構造のスレーブ信号ＳＴＸＤがその時の処理用レジスタにセットされる。また、その次の時刻ｔ１３〜ｔ１４では、第１のマイコン１０からの新たな送信データと引き替えに、ＲＡＭ書き込みの処理結果を含むスレーブ信号ＳＴＸＤが第１のマイコン１０に送信される。
【００６９】
一連の通信処理を終えると最後に、第１のマイコン１０から２つのダミーデータが送信されてくる。従って、第２のマイコン２０は、そのダミーデータと引き替えに、シフトレジスタ２９ａ，２９ｂの最後の処理データを第１のマイコン１０へ送信する。
【００７０】
通信同期初期化信号ＩＯＲＥＳＢは、各マイコン１０，２０の通信の同期化を定期的に行う目的で、例えば４ｍｓ毎に論理ローレベルに操作される。これにより、基準タイミングがその都度調整され、ノイズ等に起因するクロック信号のずれが解消される。
【００７１】
次に、第１，第２のマイコン１０，２０を通じて実行される通信処理の詳細な内容を図６〜図９のフローチャートを参照しながら説明する（但し、実際にはこれと同等の処理がハードウェアによる論理演算によって実現される）。
【００７２】
図６は、各通信制御部１６，２８を通じて実行されるクロックエッジ割込み処理を示すフローチャートである。図６の処理では、シフトクロックＳＣＬＫの状態に基づいて相手側のマイコンからの受信メッセージの有無を常時監視しており、受信メッセージの到来があると、これに含まれるコマンドを解析し、該解析したコマンドの内容に従い上述した各要求に応じた処理を実行する。
【００７３】
詳細には、先ずステップ１０１において、今回の割込みがシフトクロックＳＣＬＫの立ち下がりエッジであるか否かを判別し、ＹＥＳであればステップ１０２に進み、送信用レジスタのＭＳＢデータを送信用端子より送信する。その後、本処理を一旦終了する。
【００７４】
ステップ１０１がＮＯであればステップ１０３に進み、今回の割込みがシフトクロックＳＣＬＫの立ち上がりエッジであるか否かを判別する。そして、ステップ１０３がＹＥＳであればステップ１０４に進み、送信用レジスタを上位ビット側（図１の左側）へシフトさせる。その後、ステップ１０５では、相手側のマイコンから受信したデータを送信用レジスタのＬＳＢにセットし、続くステップ１０６では、その時のクロックカウンタを「１」デクリメントする。
【００７５】
ステップ１０７では、クロックカウンタが「０」であるか否かを判別し、ＮＯであればそのまま本処理を終了する。つまり、カウンタ≠０の場合、上述した通り、
・送信用レジスタのＭＳＢデータを送信する（ステップ１０２）、
・受信データを送信用レジスタのＬＳＢへセットする（ステップ１０５）、
等の処理を繰り返し行う。
【００７６】
１６クロック分のデータ送受信が終了してステップ１０７がＹＥＳになるとステップ１０８に進み、クロックカウンタに「１６」をセットする。その後、ステップ１０９では、第１，第２のマイコン１０，２０について個々のデータ処理を起動させる。ここで、第１のマイコン１０については、後述する図７に示すデータ処理を起動させ、第２のマイコン２０については、後述する図８に示すデータ処理を起動させる。そして、データ処理の実施後、当該処理を一旦終了する。
【００７７】
第１のマイコン１０にて実行される図７のデータ処理において、先ずステップ２０１では、シリアル通信ブロック１７内のスイッチＳＷ１，ＳＷ２を操作して送信用レジスタと処理用レジスタとを入れ替える。ここで、例えばシフトレジスタ１７ａでの通信終了時には、当該レジスタ１７ａが処理用レジスタに切り替えられると共に、シフトレジスタ１７ｂが送信用レジスタに切り替えられることとなる。
【００７８】
その後、ステップ２０２では、処理用レジスタの内容を通信用ＲＡＭのｎブロックに保管し、続くステップ２０３では、通信用ＲＡＭのｍブロックの内容を処理用レジスタに書き込む。また、ステップ２０４では、通信用ＲＡＭのブロックをｎ＋１，ｍ＋１とし、本処理を終了する。
【００７９】
次に、第２のマイコン２０にて実行されるデータ処理手順を、図８のフローチャートに従い説明する。
ステップ３０１では、シリアル通信ブロック２９内のスイッチＳＷ３，ＳＷ４を操作して送信用レジスタと処理用レジスタとを入れ替える。ここで、例えばシフトレジスタ２９ａでの通信終了時には、当該レジスタ２９ａが処理用レジスタに切り替えられると共に、シフトレジスタ２９ｂが送信用レジスタに切り替えられることとなる。
【００８０】
その後、ステップ３０２では、処理用レジスタ中のコマンドを解析し、続くステップ３０３では、コマンドの内容を判定する。ここでは、
（Ａ）Ａ／Ｄ変換要求コマンド
（Ｂ）ＲＡＭ２３へのデータ書き込み要求コマンド
（Ｃ）ＲＡＭ２３からのデータ読み出し要求コマンド
の何れであるかを判定する。そして、各コマンドにそれぞれ対応した処理を実行する。
【００８１】
すなわちいま、上記解析したコマンドが「Ａ／Ｄ変換要求」であった場合、ステップ３０４に進み、処理用レジスタ中のデータに指定されているＡ／Ｄ変換チャネル（ｃｈ）を選択し、Ａ／Ｄ変換器２４を起動する。続くステップ３０５では、Ａ／Ｄ変換チャネル（ｃｈ）とＡ／Ｄ変換結果と識別ビットＦとを処理用レジスタにセットし、当該処理を一旦終了する。
【００８２】
また、上記解析したコマンドが「ＲＡＭ２３へのデータ書き込み要求」であった場合、ステップ３０６に進み、処理用レジスタ中のデータに含まれる書き込みアドレスと書き込みデータとに従いＲＡＭ２３への書き込みを行う。続くステップ３０７では、書き込みアドレスと識別ビットＦとを処理用レジスタにセットし、当該処理を一旦終了する。
【００８３】
更に、上記解析したコマンドが「ＲＡＭ２３からのデータ読み出し要求」であった場合、ステップ３０８に進み、処理用レジスタ中のデータに含まれる読み出しアドレスに従いＲＡＭ２３からのデータ読み出しを行う。続くステップ３０９では、読み出しアドレスと読み出しデータと識別ビットＦとを処理用レジスタにセットし、当該処理を一旦終了する。
【００８４】
図９は、第１マイコン１０での一定周期毎（例えば４ｍｓ毎）の割込み処理を示すフローチャートである。同処理によれば、各マイコンの通信の同期化が行われる。先ずステップ４０１では、通信同期初期化信号ＩＯＲＥＳＢを論理ローレベルとし、続くステップ４０２ではそのままの状態で所定時間（例えば１０μｓ）待つ。その後、ステップ４０３では、通信同期初期化信号ＩＯＲＥＳＢを論理ハイレベルに戻す。更に、ステップ４０４では、シフトクロックＳＣＬＫを起動させ、当該処理を一旦終了する。
【００８５】
以上詳述した本実施の形態によれば、以下に示す効果が得られる。
（ａ）シフトクロックＳＣＬＫに同期して処理コマンドの受信と、該処理コマンドに対応した処理結果の送信とを行うシリアル通信に際し、クロックが途切れたり、それに伴い通信が中断されたりすることがないので通信速度が向上する。つまり、処理コマンドに対応する処理が例えばＡ／Ｄ変換であり、その処理に時間を要する場合であってもコマンド毎に通信が中断されることはなく、通信速度を向上させることができる。この場合、同一の通信時間で比較すると、従来の通信方法よりも大量のデータ転送が可能となる。
【００８６】
（ｂ）通信／非通信の状態で交互に切り替えられる一対のシフトレジスタを用いたので、受信直後の処理コマンドを一時的に退避させ、その退避先で所定の処理を行わせることができる。従って、処理コマンドに対応する処理が例えばＡ／Ｄ変換であり、その処理に時間を要する場合であってもコマンド毎に通信が中断されることはなく、通信速度を向上させることができる。
【００８７】
（ｃ）また上記構成では、１６クロック分の通信毎に通信準備が完了したかどうかをチェックする必要がないため、スレーブ応答用通信線（例えば特開平９−２８２２６５号公報のＥＯＣＴ線）が削除でき、構成の簡素化を図ることができる。
【００８８】
（ｄ）所定周期で通信同期初期化信号ＩＯＲＥＳＢを受信するので、ノイズ等に起因してクロックのずれが発生してもその不都合な状態が解消される。すなわち、通信の同期化が改めてなされ、適正なるシリアル通信が継続できる。
【００８９】
次に、本発明における第２〜第５の実施の形態を説明する。但し、以下の各実施の形態の構成において、上述した第１の実施の形態と同等であるものについては図面に同一の記号を付すと共にその説明を簡略化する。そして、以下には第１の実施の形態との相違点を中心に説明する。
【００９０】
（第２の実施の形態）
本第２の実施の形態は、要求コマンドに応じたスレーブ側マイコンでの処理時間が所定クロック数分の所要時間よりも長くなる場合にも、通信を中断させることなく継続して実施するためのシリアル通信装置に関する。すなわち、
・連続Ａ／Ｄ変換要求により複数のＡ／Ｄ変換が連続して行われる場合、
・Ａ／Ｄ変換時間（２０μｓ）＞１６クロックの時間（１６μｓ）の場合、
・複数の装置にてＡ／Ｄ変換器を共有するため、Ａ／Ｄ変換処理が待たされる場合、
等においても、シリアル通信を好適に行うためのシリアル通信装置を提案する。
【００９１】
ここでは、連続Ａ／Ｄ変換要求が到来する場合を例にとり、その要求時において、通信とは独立させて連続Ａ／Ｄ変換を行わせる。つまり、第１，第２のマイコン１０，２０間の通信には、Ａ／Ｄ変換データ以外に、ＲＡＭデータ（ノック制御の適合値など）の通信がある。そこで、そのＲＡＭデータの通信時間を有効に利用して、当該通信とは独立したバックグランドで連続Ａ／Ｄ変換を行わせることとする。
【００９２】
上記連続Ａ／Ｄ変換が実施される場合、第１のマイコン１０から送信されるマスタ信号ＳＲＸＤには、
・連続Ａ／Ｄ変換要求コマンド、
・連続Ａ／Ｄ変換結果の取り出し要求コマンド、
等のコマンドが含まれる。
【００９３】
より詳細には、第１のマイコン１０から第２のマイコン２０に向けて連続Ａ／Ｄ変換要求が出力される際、第１のマイコン１０からは図１０（ａ）に示されるように、
・連続Ａ／Ｄ変換要求コマンド、
・Ａ／Ｄ変換開始の指定チャネル、
・Ａ／Ｄ変換の指定チャネル数、
・ダミーデータ、
といったデータ構造にて１６ビットからなるマスタ信号ＳＲＸＤが送信される。
【００９４】
また、連続Ａ／Ｄ変換の処理終了後におけるＡ／Ｄ変換結果の取り込み要求に際し、同じく第１のマイコン１０からは図１０（ｂ）に示されるように、
・連続Ａ／Ｄ変換結果の取り出し要求コマンド、
・連続Ａ／Ｄ変換結果の取り出しチャネル、
・ダミーデータ、
といったデータ構造にて１６ビットからなるマスタ信号ＳＲＸＤが送信される。
【００９５】
一方、上記マスタ信号ＳＲＸＤを受信した第２のマイコン２０からは図１０（ｃ）に示されるように、
・連続Ａ／Ｄ変換結果の取り出しチャネル、
・連続Ａ／Ｄ変換が正常終了したか否かを示す識別ビットＦ、
・連続Ａ／Ｄ変換結果、
といったデータ構造にて、これも１６ビットからなるスレーブ信号ＳＴＸＤが返信される。
【００９６】
図１１は、第２のマイコン２０側の動作を主として、各マイコン１０，２０で上記データ構造を持つ各信号が授受されるデータ転送態様を示したタイムチャートである。以下、前記図５との相違点を中心に説明する。
【００９７】
通信同期初期化信号ＩＯＲＥＳＢのリセット後、時刻ｔ２１〜ｔ２２では、第１のマイコン１０は、連続Ａ／Ｄ変換要求コマンドを含む、前記図１０（ａ）に示したデータ構造のマスタ信号ＳＲＸＤをシフトクロックＳＣＬＫに同期させて第２のマイコン２０に送信する。例えば「ｃｈ１〜ｃｈ４までＡ／Ｄ変換を実行」というコマンドを送信する。
【００９８】
このとき、第１のマイコン１０からの送信データとシフトレジスタ２９ａ（送信用レジスタ）内のデータとが交換され、シフトレジスタ２９ａには、連続Ａ／Ｄ変換要求コマンドをはじめ、Ａ／Ｄ変換開始の指定チャネル、Ａ／Ｄ変換の指定チャネル数が受信される。
【００９９】
１６クロック分のデータ送受信が完了すると（時刻ｔ２２）、スイッチＳＷ３，ＳＷ４がａ側からｂ側に切り替えられ、それまでとは逆に、シフトレジスタ２９ａが処理用レジスタとなり、シフトレジスタ２９ｂが送信用レジスタとなる。
【０１００】
その後、時刻ｔ２２〜ｔ２３，ｔ２３〜ｔ２４では、ＲＡＭ書き込み要求コマンドを含む、前記図２（ｃ）に示したデータ構造のマスタ信号ＳＲＸＤが、スイッチＳＷ３，ＳＷ４の状態に応じてシフトレジスタ２９ａ，２９ｂに交互に送信される。そして、時刻ｔ２３〜ｔ２４では、その直前の時刻ｔ２２〜ｔ２３で受信したＳＲＸＤ信号中のＲＡＭ書き込み要求コマンドに応答してＲＡＭ書き込み処理が実行されると共に、前記図２（ｄ）に示したデータ構造のスレーブ信号ＳＴＸＤがその時の処理用レジスタにセットされる。また、その次の時刻ｔ２４〜ｔ２５では、第１のマイコン１０からの新たな送信データと引き替えに、ＲＡＭ書き込みの処理結果を含むスレーブ信号ＳＴＸＤが第１のマイコン１０に送信される。
【０１０１】
また時刻ｔ２２以降、第２のマイコン２０は、通信とは独立したバックグランドにて、前記時刻ｔ２１〜ｔ２２にて受信したマスタ信号ＳＲＸＤ中のＡ／Ｄ変換開始の指定チャネルやＡ／Ｄ変換の指定チャネル数に従い、「ＡＤ１，ＡＤ２，ＡＤ３・・・」といった連続Ａ／Ｄ変換処理を行う。そして、該Ａ／Ｄ変換した結果を順次ＲＡＭ２３に格納していく。
【０１０２】
ＲＡＭ書き込み要求等に応じた一連の通信が終了すると、第１のマイコン１０は、次に連続Ａ／Ｄ変換結果の取り込みを行う。すなわち、時刻ｔ２６〜ｔ２７では、第１のマイコン１０は、連続Ａ／Ｄ変換結果の取り出し要求コマンドを含む、前記図１０（ｂ）に示したデータ構造のマスタ信号ＳＲＸＤ（図の「ＡＤ結果取出し要求１」）をシフトクロックＳＣＬＫに同期させて第２のマイコン２０に送信する。このとき、第１のマイコン１０からの送信データとシフトレジスタ２９ａ（送信用レジスタ）内のデータとが交換され、シフトレジスタ２９ａには、連続Ａ／Ｄ変換結果の取り出し要求コマンドをはじめ、連続Ａ／Ｄ変換結果の取り出しチャネルが受信される。
【０１０３】
その後、時刻ｔ２７では送信用と処理用のレジスタが切り替えられる。また、時刻ｔ２７〜ｔ２８では、前記時刻ｔ２６〜ｔ２７と同様、第１のマイコン１０は、連続Ａ／Ｄ変換結果の取り出し要求コマンドを含む、前記図１０（ｂ）に示したデータ構造のマスタ信号ＳＲＸＤ（図の「ＡＤ結果取出し要求２」）をシフトクロックＳＣＬＫに同期させて第２のマイコン２０に送信する。このとき、第１のマイコン１０からの送信データとシフトレジスタ２９ｂ（送信用レジスタ）内のデータとが交換され、シフトレジスタ２９ｂには、連続Ａ／Ｄ変換結果の取り出し要求コマンドをはじめ、連続Ａ／Ｄ変換結果の取り出しチャネルが受信される。
【０１０４】
時刻ｔ２７〜ｔ２８の「ＡＤ結果取出し要求２」の受信と同時に、第２のマイコン２０は、その直前の時刻ｔ２６〜ｔ２７で受信した処理コマンドに従いＡ／Ｄ変換結果の取り出し処理を行う。すなわち、前記ＲＡＭ２３に格納した連続Ａ／Ｄ変換結果を読み出し、それを前記図１０（ｃ）に示したデータ構造のスレーブ信号ＳＴＸＤとして、処理用レジスタ（シフトレジスタ２９ａ）にセットする。そして、送信用レジスタ（シフトレジスタ２９ｂ）の通信終了を待つ。
【０１０５】
時刻ｔ２８では、再び送信用と処理用のレジスタが切り替えられる。また、時刻ｔ２８〜ｔ２９では、第２のマイコン２０は、送信用レジスタ（シフトレジスタ２９ａ）にセットされているスレーブ信号ＳＴＸＤを第１のマイコン１０に送信する。すなわち、連続Ａ／Ｄ変換結果等が第１のマイコン１０に送信される。第１のマイコン１０では、スレーブ信号ＳＴＸＤを受信した後、上記連続Ａ／Ｄ変換結果を自身の通信用ＲＡＭに格納する。
【０１０６】
次に、第２のマイコン２０にて実行されるデータ処理手順を、図１２のフローチャートに従い説明する。この処理は、例えば前記図８の処理に置き替えて実行される。
【０１０７】
ステップ５０１では、シリアル通信ブロック２９内の送信用レジスタと処理用レジスタとを入れ替える（前記図８のステップ３０１に同じ）。その後、ステップ５０２では、処理用レジスタ中のコマンドを解析し、続くステップ５０３では、コマンドの内容を判定する。ここでは、
・Ａ／Ｄ変換要求コマンド、
・ＲＡＭへのデータ書き込み要求コマンド、
・ＲＡＭからのデータ読み出し要求コマンド、
といった、前記図８で判定した各コマンドに加えその他に、
・連続Ａ／Ｄ変換要求コマンド、
・連続Ａ／Ｄ変換結果の取り出し要求コマンド、
の何れであるかを判定する。そして、各要求にそれぞれ対応した処理を実行する。
【０１０８】
すなわちいま、上記解析したコマンドが「連続Ａ／Ｄ変換要求」であった場合、ステップ５０４に進み、処理用レジスタ中のデータに指定されているＡ／Ｄ変換開始の指定チャネル（ｃｈ）と指定チャネル数とをセットし、順次Ａ／Ｄ変換器２４を起動する。続くステップ５０５では、同じくＡ／Ｄ変換開始の指定チャネル（ｃｈ）と指定チャネル数と識別ビットＦとを処理用レジスタにセットし、当該処理を一旦終了する。
【０１０９】
また、上記解析したコマンドが「連続Ａ／Ｄ変換結果の取り出し要求」であった場合、ステップ５０６に進み、処理用レジスタ中のデータに含まれる連続Ａ／Ｄ変換結果の取り出しチャネルに対応させつつ、Ａ／Ｄ変換結果をＲＡＭ２３から読み出す。その後、ステップ５０７では、連続Ａ／Ｄ変換結果の取り出しチャネルと連続Ａ／Ｄ変換結果と識別ビットＦとを処理用レジスタにセットし、当該処理を一旦終了する。
【０１１０】
以上第２の実施の形態によれば、連続Ａ／Ｄ変換の要求に伴い該Ａ／Ｄ変換に長い時間を要する場合にも、それにより通信が中断されることはなく、そのＡ／Ｄ変換時間を利用して第１のマイコン１０からの他のコマンドが実施される。従って、通信の効率化並びに迅速化が実現できる。
【０１１１】
（第３の実施の形態）
複数のマイコン間のシリアル通信では、ノイズ等によりシフトクロックＳＣＬＫが１個でもずれると、不当コマンドか、全く異なった処理を行うコマンドとなってしまう。そこで本実施の形態では、定義されていない不当コマンドを一度でも受信したら、それ以降の通信を強制的に停止させ、誤った処理の実行を未然に防止する。
【０１１２】
図１３は、本実施の形態におけるエンジンＥＣＵの構成を示すブロック図である。前記図１の構成との相違として図１３では、第２のマイコン２０から第１のマイコン１０に対してチェック信号ＣＨＫを送信する。このチェック信号ＣＨＫは、第２のマイコン２０が不当コマンド等を受信した際、それ以降の通信を強制停止させるものである。
【０１１３】
図１４は、第２のマイコン２０側の動作を主として、各マイコン１０，２０でのデータ転送態様を示したタイムチャートである。以下、前記図５との相違点を中心に説明する。
【０１１４】
時刻ｔ３１では、通信同期初期化信号ＩＯＲＥＳＢのリセットに伴い、チェック信号ＣＨＫも一旦リセットされる。信号ＩＯＲＥＳＢ，ＣＨＫのリセット動作により、これら各信号の通信線が断線しているかどうかが第１のマイコン１０にて確認される。
【０１１５】
時刻ｔ３２〜ｔ３３，ｔ３３〜ｔ３４，ｔ３４〜ｔ３５の各期間では、前記図５の時刻ｔ２〜ｔ３，ｔ３〜ｔ４，ｔ４〜ｔ５の各期間と同様に、第１のマイコン１０は、１ＭＨｚで連続発信されるシフトクロックＳＣＬＫに同期させて、Ａ／Ｄ変換要求コマンドを含む、マスタ信号ＳＲＸＤ（図の「ＡＤ要求１，２，３」）を順次送信する。また、１６クロック毎に送信用レジスタと処理用レジスタとを切り替え、第２のマイコン２０では、その時々の送信用レジスタにてＡ／Ｄ変換要求コマンドを受け取ると共に、当該レジスタが処理用レジスタに切り替わった際、要求コマンドに応じた処理結果（Ａ／Ｄ変換結果等）をその処理用レジスタにセットする。そして、処理用レジスタが送信用レジスタに戻ると、第２のマイコン２０は、前記処理結果を第１のマイコン１０へ送信する。
【０１１６】
その後、時刻ｔ４１において、ノイズ等によりシフトクロックＳＣＬＫが数個分だけずれると、第２のマイコン２０では、受信したコマンドが不当コマンドとして認識される（時刻ｔ４２）。同時刻ｔ４２において、第２のマイコン２０はチェック信号ＣＨＫを論理ローレベルに立ち下げる。第１のマイコン１０では、チェック信号ＣＨＫの立ち下がりエッジを受け、シリアル通信を強制的に停止させると共に、通信同期初期化信号ＩＯＲＥＳＢを論理ローレベルに立ち下げる。
【０１１７】
その後、時刻ｔ４３では、通信同期初期化信号ＩＯＲＥＳＢを論理ローレベルから論理ハイレベルに立ち上げる。これにより、チェック信号ＣＨＫも同時に論理ハイレベルに復帰する。
【０１１８】
次に、第２のマイコン２０にて実行されるデータ処理の一部を、図１５のフローチャートに従い説明する。この処理は、例えば前記図８のステップ３０２の直後（又は前記図１２のステップ５０２の直後）に実行される。
【０１１９】
ステップ６０１では、受信したコマンドが不当コマンドであるか否かを判別し、ＮＯであれば、そのまま図示しない後続の処理（図８のステップ３０３、又は図１２のステップ５０３）に進む。また、不当コマンドであればステップ６０２に進み、チェック信号ＣＨＫを論理ローレベルとし、続くステップ６０３で異常発生の旨を表す識別ビットを処理用レジスタにセットする。
【０１２０】
また、第１のマイコン１０では、前記チェック信号ＣＨＫの立ち下げに伴い、図１６の割込み処理を起動させる。すなわち、図１６において先ずステップ７０１では、その時のチェック信号ＣＨＫが論理ローレベルであるか否かを判別する。仮にＣＨＫ＝Ｈの場合、チェック信号ＣＨＫの立ち下げ時であると誤検出されたのであるから、ステップ７０２に進んで異常割込み発生の旨を判定し、所定のフェイルセーフ処理を実行する。
【０１２１】
また、ＣＨＫ＝Ｌであればステップ７０３に進み、強制的に通信を終了させる。続くステップ７０４では、通信同期初期化信号ＩＯＲＥＳＢを論理ローレベルに立ち下げ、当該処理を終了する。
【０１２２】
一方、第１のマイコン１０は、一定周期毎（例えば４ｍｓ毎）に図１７に示す処理を起動させる。この処理は、例えば前記図９の処理に置き替えて実行される。図１７において、ステップ８０１では、通信同期初期化信号ＩＯＲＥＳＢを論理ローレベルとし、続くステップ８０２では、第２のマイコン２０から送信されてくる前記チェック信号ＣＨＫが論理ローレベルか否かを判別する。通常はＩＯＲＥＳＢ＝Ｌに伴いＣＨＫ＝Ｌとなる筈であるため、ステップ８０２がＮＯ（ＣＨＫ＝Ｈ）であればステップ８０３に進み、チェック線断線（Ｈ固定）とみなして当該異常に対するフェイルセーフ処理を実行する。
【０１２３】
また、ステップ８０２がＹＥＳ（ＣＨＫ＝Ｌ）であればステップ８０４に進み、通信同期初期化信号ＩＯＲＥＳＢを論理ハイレベルに戻し、続くステップ８０５では、前記チェック信号ＣＨＫが論理ハイレベルか否かを判別する。通常はＩＯＲＥＳＢ＝Ｈに伴いＣＨＫ＝Ｈとなる筈であるため、ステップ８０５がＮＯ（ＣＨＫ＝Ｌ）であればステップ８０６に進み、チェック線断線（Ｌ固定）とみなして当該異常に対するフェイルセーフ処理を実行する。
【０１２４】
また、ステップ８０５がＹＥＳ（ＣＨＫ＝Ｌ）であればステップ８０７に進み、シフトクロックＳＣＬＫを起動させ、本処理を一旦終了する。こうした図１５の処理によれば、定期的にクロックが再起動される。
【０１２５】
以上本実施の形態によれば、クロックずれ等が原因で通信が不正状態に陥り誤った処理が実施される、といった不具合が未然に防止できる。また、仮に前記図１４のタイムチャートで示した通り一時的にクロックずれが発生し、それに伴いチェック信号ＣＨＫが論理ローレベルに立ち下げられても、すなわち通信が強制停止されても、定期的な同期初期化の処理（図１７の処理）により通信の正常復帰が可能となる。
【０１２６】
（第４の実施の形態）
上記各実施の形態では、各マイコンのシリアル通信ブロック内に一対のシフトレジスタを設け、それらの通信／非通信の状態（送信用レジスタ及び処理用レジスタとなる状態）を所定クロック数毎に切り替えていたが、本実施の形態では同シリアル通信ブロックの構成を変更する。
【０１２７】
図１８に示されるように、例えば第２のマイコン２０側のシリアル通信ブロック３１は、「第１のレジスタ」としての１つのシフトレジスタ３１ａと、「第２のレジスタ」としての２つの処理用レジスタ３１ｂ，３１ｃとを備える。これら各レジスタは何れも１６ビットで構成される。ここで、通信制御部２８は、シフトレジスタ３１ａで受信した１６クロック分のデータを一方の処理用レジスタ３１ｂに読み出し、更にその後、要求コマンドに対応した処理結果を他方の処理用レジスタ３１ｃにセットし、１６クロック経過のタイミングで同処理結果をシフトレジスタ３１ａに書き込むものである。
【０１２８】
詳細には、以下に示す一連の通信処理が行われる。なお、通信の基本動作は前記図５と同じであるため、ここでは図５を併せ参照しながら動作を説明する（但し、図５中のＳＷ３，ＳＷ４の動作は無関係である）。
（１）シフトクロックＳＣＬＫに同期して、１６クロック分のデータがシフトレジスタ３１ａにて受信される（時刻ｔ２〜ｔ３）。
（２）１６クロック分のデータ受信が完了すると、
・シフトレジスタ３１ａのデータが処理用レジスタ３１ｂに瞬時に読み出され、・処理用レジスタ３１ｃのデータがシフトレジスタ３１ａに瞬時に書き込まれる（時刻ｔ３）。
（３）処理用レジスタ３１ｂに入っているコマンドに対応する処理（指定チャネルのＡ／Ｄ変換、ＲＡＭ書き込み、ＲＡＭ読み出し等）が行われ、処理結果が処理用レジスタ３１ｃにセットされる（時刻ｔ３〜ｔ４）。
（４）前記（３）と同時に、次の１６クロック分の送信データがシフトレジスタ３１ａにて受信される（時刻ｔ３〜ｔ４）。
（５）更に１６クロックが経過すると、前記（２）と同じく、
・シフトレジスタ３１ａのデータが処理用レジスタ３１ｂに瞬時に読み出され、・処理用レジスタ３１ｃのデータがシフトレジスタ３１ａに瞬時に書き込まれる（時刻ｔ４）。
（６）前記（３）と同じく、処理用レジスタ３１ｂに入っているコマンドに対応する処理が行われ、処理結果が処理用レジスタ３１ｃにセットされる（時刻ｔ４〜ｔ５）。
（７）前記（６）と同時に、次の１６クロック分の送信データがシフトレジスタ３１ａにて受信され、それと引き替えに、前記処理結果が第１のマイコン１０に送信される。以降、上記（５）〜（７）の動作が、シフトクロックＳＣＬＫが停止するまで繰り返し実行される。
【０１２９】
以上第４の実施の形態によれば、シフトレジスタ３１ａと処理用レジスタ３１ｂ，３１ｃとを使い通信を行うことで、受信直後の処理コマンドを一時的に退避させ、その退避先で所定の処理を行わせることができる。従って、上記第１の実施の形態と同様に、処理コマンドに対応する処理に時間を要する場合であってもコマンド毎に通信が中断されることはなく、通信速度を向上させることができる。また更に、１６クロック分の通信毎に通信準備が完了したかどうかをチェックする必要がないため、スレーブ応答用通信線（例えば特開平９−２８２２６５号公報のＥＯＣＴ線）が削除でき、構成の簡素化を図ることができる。特に本実施の形態では、上記の如く一対の処理用レジスタ３１ｂ，３１ｃを用いるので、データ読み出し／書き込みの処理を効率良く行うことができる。
【０１３０】
（第５の実施の形態）
第５の実施の形態では、上記第４の実施の形態の一部を変更してシリアル通信装置を具体化する。上記第４の実施の形態では既述の通り、クロック数が１６クロックに達すると、
・シフトレジスタ３１ａのデータを処理用レジスタ３１ｂに瞬時に読み出す。
・処理用レジスタ３１ｃのデータをシフトレジスタ３１ａに瞬時に書き込む。
といった２つの処理を順次実施したが、それら「シフトレジスタ⇔処理用レジスタ間」の処理は、シフトクロックＳＣＬＫの立ち上がりから次の立ち下がりまでの極短時間（ＳＣＬＫ＝１ＭＨｚの場合、０．５μｓ以内）にて実施しなくてはならず、かなりの高速処理が強いられる。そこで本実施の形態では、「シフトレジスタ⇔処理用レジスタ間」のデータ処理を早期に行うことのできる通信装置について説明する。
【０１３１】
図１９は、本実施の形態におけるシリアル通信ブロックの構成を示す図である。第２のマイコン２０のシリアル通信ブロック４１は、「第１のレジスタ」としての３２ビットのシフトレジスタ４１ａと、「第２のレジスタ」としての１６ビットの処理用レジスタ４１ｂ，４１ｃとを備える。また、シフトレジスタ４１ａは、上位側１６ビットの送信部αと下位側１６ビットの受信部βとからなる。下位側の受信部βでは、第１のマイコン１０から送信されてくるマスタ信号ＳＲＸＤが取り込まれ、同信号が１６クロック毎に処理用レジスタ４１ｂに読み出される。また、上位側の送信部αでは、処理用レジスタ４１ｃから処理後のデータが書き込まれ、該データがスレーブ信号ＳＴＸＤとして第１のマイコン１０に送信される。
【０１３２】
詳細には、以下に示す一連の通信処理が行われる。なお、通信の基本動作は前記図５と同じであるため、ここでは図５を併せ参照しながら動作を説明する（但し、図５中のＳＷ３，ＳＷ４の動作は無関係である）。
（１）シフトクロックＳＣＬＫに同期して、１６クロック分のデータがシフトレジスタ４１ａの受信部βにて受信される（時刻ｔ２〜ｔ３）。このとき、送信データはシフトレジスタ４１ａのＬＳＢに入り、シフトレジスタ４１ａのＭＳＢのデータが第１のマイコン１０に送信される。
（２）クロック数が１６クロックに達し、レジスタ４１ａのデータの半分が入れ替わると、
・受信部βのデータが処理用レジスタ４１ｂに瞬時に読み出され、
・それと同時に、処理用レジスタ４１ｃのデータが送信部αに瞬時に書き込まれる（時刻ｔ３）。
（３）処理用レジスタ４１ｂに入っているコマンドに対応する処理（指定チャネルのＡ／Ｄ変換、ＲＡＭ書き込み、ＲＡＭ読み出し等）が行われ、処理結果が処理用レジスタ４１ｃにセットされる（時刻ｔ３〜ｔ４）。
（４）前記（３）と同時に、次の１６クロック分の送信データが受信部βにて受信される（時刻ｔ３〜ｔ４）。
（５）更に１６クロックが経過すると、前記（２）と同じく、
・受信部βのデータが処理用レジスタ４１ｂに瞬時に読み出され、
・それと同時に、処理用レジスタ４１ｃのデータが送信部αに瞬時に書き込まれる（時刻ｔ４）。
（６）前記（３）と同じく、処理用レジスタ４１ｂに入っているコマンドに対応する処理が行われ、処理結果が処理用レジスタ４１ｃにセットされる（時刻ｔ４〜ｔ５）。
（７）前記（６）と同時に、次の１６クロック分の送信データが受信部βにて受信され、それと引き替えに、前記処理結果が第１のマイコン１０に送信される。以降、上記（５）〜（７）の動作が、シフトクロックＳＣＬＫが停止するまで繰り返し実行される。
【０１３３】
なお、前記（１）で受信部βに入ってきた１６ビットデータ（処理要求）は、（２）で処理用レジスタ４１ｂに瞬時に読み出されるが、その際、受信部βのデータは消えないため、（４）の処理にて送信部α側にシフトする。その後、（５）の処理にて処理用レジスタ４１ｃのデータが送信部αに書き込まれ、スレーブ信号ＳＴＸＤとして出力される。
【０１３４】
以上第５の実施の形態によれば、シフトレジスタ４１が送信部αと受信部βとを各々持つことで、受信部βから処理用レジスタ４１ｂへのデータ読み出しと、処理用レジスタ４１ｃから送信部αへのデータ書き込みとを同時に行うことができ、その処理時間が短縮される。従って、シリアル通信の更なる高速化が可能となる。
【０１３５】
なお本発明は、上記以外に次の形態にて具体化できる。
上記第４，第５の実施の形態においても既述の通り、
・第２のマイコン２０は、所定周期で通信同期初期化信号ＩＯＲＥＳＢを受信する。
・第２のマイコン２０は、受信データ中の不当コマンドを認識すると、チェック信号ＣＨＫをＨ→Ｌとし、通信を強制停止させる。
といった各処理を併せて行うようにしてもよい。
【０１３６】
シリアル通信ブロック内に設けたシフトレジスタは、リングバッファ構成であってもよい。このリングバッファは１６個の記憶領域を持ち、１６クロック毎に全領域のデータを取り替える構成となる。
【０１３７】
上記各実施の形態では、車両用エンジンＥＣＵを例にとり、本発明のシリアル通信装置を具体化したが、勿論それに限定されることなく、他の通信システムに適用してもよい。すなわち、一定周期で連続送信されるシリアル通信クロックに同期して、相手側のマイコンからの処理コマンドを受信すると共に該処理コマンドに対応した処理結果を送信するシリアル通信システムであれば、他の如何なるシステムにも本発明が適用できる。
【図面の簡単な説明】
【図１】発明の実施の形態におけるエンジンＥＣＵの概要を示す構成図。
【図２】各種要求時のシリアルデータ構造例を示す略図。
【図３】ＲＡＭ構造を示す模式図。
【図４】データ転送の基本動作を示すタイムチャート。
【図５】処理要求時のデータ転送態様を示すタイムチャート。
【図６】クロックエッジ割込み処理を示すフローチャート。
【図７】第１のマイコンによるデータ処理を示すフローチャート。
【図８】第２のマイコンによるデータ処理を示すフローチャート。
【図９】第１のマイコンによる一定周期毎の割込み処理を示すフローチャート。
【図１０】連続Ａ／Ｄ変換要求時のシリアルデータ構造例を示す略図。
【図１１】第２の実施の形態においてデータ転送態様を示すタイムチャート。
【図１２】第２の実施の形態において第２のマイコンによるデータ処理を示すフローチャート。
【図１３】第３の実施の形態において各マイコンの構成図。
【図１４】第３の実施の形態においてデータ転送態様を示すタイムチャート。
【図１５】第３の実施の形態において第２のマイコンによるデータ処理の一部を示すフローチャート。
【図１６】第３の実施の形態においてチェック信号立ち下げ時の割込み処理を示すフローチャート。
【図１７】第３の実施の形態において一定周期毎の割込み処理を示すフローチャート。
【図１８】第４の実施の形態においてシリアル通信ブロックの構成を示す図。
【図１９】第５の実施の形態においてシリアル通信ブロックの構成を示す図。
【符号の説明】
１０…第１のマイコン、１１…ＣＰＵ、１５…クロック発生回路、１６…通信制御手段としての通信制御部、１７…シリアル通信ブロック、１７ａ，１７ｂ…シフトレジスタ、２０…第２のマイコン、２１…ＣＰＵ、２８…通信制御手段としての通信制御部、２９…シリアル通信ブロック、２９ａ，２９ｂ…シフトレジスタ、３１，４１…シリアル通信ブロック、３１ａ，４１ａ…第１のレジスタとしてのシフトレジスタ、３１ｂ，３１ｃ，４１ｂ，４１ｃ…第２のレジスタとしての処理用レジスタ、α…送信部、β…受信部、ＳＷ１〜ＳＷ４…切替手段としてのスイッチ。
【図１】
0004006871.tif 000002
【図２】
0004006871.tif 000003
【図３】
0004006871.tif 000004
【図４】
0004006871.tif 000005
【図５】
0004006871.tif 000006
【図６】
0004006871.tif 000007
【図７】
0004006871.tif 000008
【図８】
0004006871.tif 000009
【図９】
0004006871.tif 000010
【図１０】
0004006871.tif 000011
【図１１】
0004006871.tif 000012
【図１２】
0004006871.tif 000013
【図１３】
0004006871.tif 000014
【図１４】
0004006871.tif 000015
【図１５】
0004006871.tif 000016
【図１６】
0004006871.tif 000017
【図１７】
0004006871.tif 000018
【図１８】
0004006871.tif 000019
【図１９】
0004006871.tif 000020