(57)【要約】【課題】コマンドフレーム送信時のＣＰＵ負荷を低減【解決手段】ＥＣＵ１は、ＣＰＵ１１と、マイクロセカンドバス４を介してデータをシリアル通信により送信するＭＳＢコントローラ（以下、ＭＳＢＣという）１６と、ＭＳＢＣ１６とシリアル通信可能に接続されたＭＳＢＣ２１とを備える。ＭＳＢＣ１６は、一定周期毎にデータフレームをＭＳＢＣ２１へ送信する。ＭＳＢＣ１６では、送信バッファ１６３に、コマンドフレームとして送信するためのコマンドフレーム送信用データが格納され、送信要求が発生した場合に、送信バッファ１６３に格納されているコマンドフレーム送信用データをコマンドフレームとしてＭＳＢＣ２１へ送信する。そして、ＣＰＵ１１とは別にＤＭＡコントローラ１５を備え、これは、コマンドフレーム送信用データを送信バッファ１６３へ転送する処理と、送信要求を発生させる処理とを実行することが可能に構成される。【選択図】図１
2014095944.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（１１）と、
通信バスを介してデータをシリアル通信により送信する第１通信部（１６）と、
前記通信バスを介して前記第１通信部とシリアル通信可能に接続された第２通信部（２１）とを備える電子制御装置（１）であって、
前記第１通信部は、
予め設定された送信周期毎に、制御対象を制御するための制御データを示すデータフレームを前記第２通信部へ送信するデータフレーム送信手段（Ｓ３５０，Ｓ７５０）と、
前記第２通信部に対して予め設定された処理の実行を指示するコマンドフレームとして送信するためのコマンドフレーム用データが格納される格納手段（１６３）と、
前記コマンドフレームの送信を要求するためのコマンドフレーム送信要求が発生した場合に、前記格納手段に格納されている前記コマンドフレーム用データを前記コマンドフレームとして前記第２通信部へ送信するコマンドフレーム送信手段（Ｓ３３０，Ｓ５４０，Ｓ７３０）とを備え、
当該電子制御装置は、前記ＣＰＵとは別に、
前記コマンドフレーム用データを前記格納手段へ転送する処理と、前記コマンドフレーム送信要求を発生させる処理とを実行することが可能に構成されたハードウェア（１５，１６６）を備える
ことを特徴とする電子制御装置。
【請求項２】
前記ハードウェアは、前記ＣＰＵによる処理を行うことなく前記コマンドフレーム用データを前記格納手段へ転送する第１転送部（１５）であり、
前記コマンドフレーム用データを複数に分割して、分割された複数の前記コマンドフレーム用データのそれぞれを分割データとして、
前記ＣＰＵは、
複数の前記分割データのそれぞれを前記コマンドフレームとして複数回にわたって送信する場合に、複数の前記分割データのうち、前記コマンドフレームとして最も早く送信するデータを第１送信データとして、前記第１送信データを前記格納手段へ転送する転送処理（Ｓ７０）と、
前記転送処理が完了した後に、前記コマンドフレームの送信を要求するための送信要求信号を前記第１通信部へ出力する出力処理（Ｓ９０）と
を実行するように構成され、
前記第１通信部の前記コマンドフレーム送信手段は、
前記送信要求信号が前記第１通信部に入力すると、前記コマンドフレーム送信要求が発生したと判断し、
前記第１通信部は、更に、
前記コマンドフレームを前記第２通信部へ送信した後に、その旨を示す送信完了信号を前記第１転送部へ出力する第１出力手段（Ｓ３４０）を備え、
前記第１転送部は、
前記送信完了信号が前記第１転送部に入力する毎に、複数の前記分割データのうち前記格納手段へ転送されていない前記分割データを１つ選択して、選択した前記分割データを前記格納手段へ転送し、
前記分割データを転送した後に、その旨を示す転送完了信号を前記第１通信部へ出力する第２出力手段（Ｓ２４０）を備え、
前記第１通信部の前記コマンドフレーム送信手段は、更に、
前記転送完了信号が前記第１通信部に入力すると、前記コマンドフレーム送信要求が発生したと判断する
ことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記ハードウェアは、前記ＣＰＵによる処理を行うことなく前記コマンドフレーム用データを前記格納手段へ転送する第２転送部（１６６）であり、
前記コマンドフレーム用データを複数に分割して、分割された複数の前記コマンドフレーム用データのそれぞれを分割データとして、
前記コマンドフレーム送信手段は、前記格納手段に新たに前記分割データが格納されると、前記コマンドフレーム送信要求が発生したと判断し、
前記第１通信部は、更に、
前記コマンドフレーム送信手段が前記コマンドフレームを送信した後に、前記格納手段に格納されている前記分割データを消去する消去手段（Ｓ７４０）を備え、
前記第２転送部は、
複数の前記分割データを格納するとともに、前記消去手段により前記分割データが消去される毎に、複数の前記分割データのうち前記格納手段へ転送されていない前記分割データを、当該第２転送部に格納された順に１つ選択して、選択した前記分割データを前記格納手段へ転送する
ことを特徴とする請求項１に記載の電子制御装置。
【請求項４】
前記コマンドフレーム送信手段（Ｓ５４０）は、前記データフレームの送信が完了した後に、前記コマンドフレームを送信し、
前記送信周期は、前記データフレームを送信するのに要するデータフレーム送信時間と、前記コマンドフレームを送信するのに要するコマンドフレーム送信時間との和よりも長い
ことを特徴とする請求項１〜請求項３の何れか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアル通信を行う電子制御装置に関する。
【背景技術】
【０００２】
マイクロセカンドバスは、シリアル通信のスタンダードとして広くパワーＡＳＩＣや多チャンネルスイッチ製品に採用されているＳＰＩ（Serial Peripheral Interface）通信に変わる通信方式として提案されている（例えば、特許文献１を参照）。
【０００３】
このマイクロセカンドバスは、データフレームとコマンドフレームを送信するように構成されている。データフレームは、予め設定された一定周期毎に到来するフレーム送信タイミングで定期的に送信される。コマンドフレームは、任意のタイミングでコマンドフレーム送信要求が発生したときに送信される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００４／０２１７３８５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、コマンドフレームは、１フレームで送信することができるデータ量に上限がある。このため、コマンドフレームで送信するデータ量がこの上限を超える場合には、複数のコマンドフレームを送信する必要がある。すなわち、ソフトウェアによりコマンドフレーム送信要求を発生させる処理を複数回実行する必要がある。これにより、コマンドフレーム送信要求を発生させる処理を実行するＣＰＵの負荷が高くなり、ＣＰＵで実行される他の処理に影響を及ぼすおそれがあるという問題があった。
【０００６】
本発明は、こうした問題に鑑みてなされたものであり、コマンドフレームを送信するときのＣＰＵの負荷を低減することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた請求項１に記載の電子制御装置は、ＣＰＵと、通信バスを介してデータをシリアル通信により送信する第１通信部と、通信バスを介して第１通信部とシリアル通信可能に接続された第２通信部とを備える。そして第１通信部では、データフレーム送信手段が、予め設定された送信周期毎に、制御対象を制御するための制御データを示すデータフレームを第２通信部へ送信する。
【０００８】
また第１通信部では、格納手段に、第２通信部に対して予め設定された処理の実行を指示するコマンドフレームとして送信するためのコマンドフレーム用データが格納され、コマンドフレーム送信手段が、コマンドフレームの送信を要求するためのコマンドフレーム送信要求が発生した場合に、格納手段に格納されているコマンドフレーム用データをコマンドフレームとして第２通信部へ送信する。
【０００９】
そして当該電子制御装置は、ＣＰＵとは別にハードウェアを備え、このハードウェアは、コマンドフレーム用データを格納手段へ転送する処理と、コマンドフレーム送信要求を発生させる処理とを実行することが可能に構成される。
【００１０】
このように構成された電子制御装置では、コマンドフレームを送信するために、コマンドフレーム用データを格納手段へ転送し、その後に、コマンドフレーム送信要求を発生させる必要がある。そして、請求項１に記載の電子制御装置では、これらの処理を、ＣＰＵとは別に設けられたハードウェアで実行させることができる。これにより、ＣＰＵは、コマンドフレームを送信するときに、コマンドフレーム用データを格納手段へ転送し、その後に、コマンドフレーム送信要求を発生させる必要がなくなる。このため、コマンドフレームを送信するときのＣＰＵの負荷を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】ＥＣＵ１の構成を示すブロック図である。
【図２】第１実施形態のコマンドフレームの送信タイミングを示すタイミングチャートである。
【図３】ＲＡＭ１３、ＤＭＡコントローラ１５およびＭＳＢコントローラ１６の構成を示すブロック図である。
【図４】第１実施形態のＣＰＵフレーム送信処理を示すフローチャートである。
【図５】ＤＭＡＣフレーム送信処理を示すフローチャートである。
【図６】第１実施形態のＭＳＢＣフレーム送信処理を示すフローチャートである。
【図７】第１実施形態のコマンドフレームの送信手順を示すフローチャートである。
【図８】第２実施形態のＭＳＢＣフレーム送信処理を示すフローチャートである。
【図９】第２実施形態のコマンドフレームの送信タイミングを示すタイミングチャートである。
【図１０】第３実施形態のＭＳＢコントローラ１６の構成を示すブロック図である。
【図１１】第３実施形態のＣＰＵフレーム送信処理を示すフローチャートである。
【図１２】第３実施形態のＭＳＢＣフレーム送信処理を示すフローチャートである。
【図１３】第３実施形態のコマンドフレームの送信手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（第１実施形態）
以下に本発明の第１実施形態を図面とともに説明する。
本実施形態の電子制御装置（以下、ＥＣＵという）１は、車両に搭載され、車両のエンジン（不図示）の制御を行う。
【００１３】
ＥＣＵ１は、図１に示すように、マイクロコンピュータ（以下、マイコンという）２と、パワーデバイス３と、マイクロセカンドバス（Micro Second Bus）４とを備える。
マイコン２は、エンジンを制御するための処理を実行し、車両に取り付けられた電気負荷（インジェクタ等）を制御するための制御信号を出力する。
【００１４】
マイコン２は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、タイマ１４、ＤＭＡ（Direct Memory Access）コントローラ１５およびマイクロセカンドバス（以下、ＭＳＢという）コントローラ１６と、これらを相互に接続するバス１７とを備える。
【００１５】
ＣＰＵ１１は、エンジンを制御するためのプログラムに基づいて処理を実行する。ＲＯＭ１２は、ＣＰＵ１１によって実行されるプログラムを格納するための不揮発性メモリである。ＲＡＭ１３は、ＣＰＵ１１の演算結果等を一時格納するための揮発性メモリである。
【００１６】
タイマ１４は、図１では１つのみ示しているが、予め設定されたオンタイミングとオフタイミングとの間でハイレベルになるパルス信号を生成して出力する機能を有するタイマ、および、入力したパルスの立ち上がり時刻から立下り時刻までの時間を計測する機能を有するタイマなど複数設けられている。
【００１７】
ＤＭＡコントローラ１５は、データ転送を要求する信号を入力すると、ＲＡＭ１３に記憶されているデータをＣＰＵ１１の処理を介すことなく転送するＤＭＡ転送を実行する機能を有する。
ＭＳＢコントローラ１６は、マイコン２とパワーデバイス３との間に設けられたマイクロセカンドバス４を介してパワーデバイス３との間で行う高速シリアル通信を制御する。そしてＭＳＢコントローラ１６は、入力したパラレルデータをシリアルデータに変換して出力するシリアライザ１６１と、入力したシリアルデータをパラレルデータに変換して出力するデシリアライザ１６２とを備える。
【００１８】
次にパワーデバイス３は、マイクロセカンドバス（ＭＳＢ）コントローラ２１、駆動回路群２２およびレジスタ２３を備える。
ＭＳＢコントローラ２１は、マイクロセカンドバス４を介してマイコン２との間で行う高速シリアル通信を制御する。そしてＭＳＢコントローラ２１は、入力したパラレルデータをシリアルデータに変換してＭＳＢコントローラ１６のデシリアライザ１６２へ出力するシリアライザ２１１と、ＭＳＢコントローラ１６のシリアライザ１６１から入力したシリアルデータをパラレルデータに変換して出力するデシリアライザ２１２とを備える。
【００１９】
駆動回路群２２は、複数の駆動回路で構成されており、ＭＳＢコントローラ２１のデシリアライザを介してマイコン２から入力した上記制御信号に基づいて、車両に取り付けられた電気負荷を駆動するための駆動信号を生成して出力する。図１では一例として、インジェクタ駆動回路２２１、バルブ駆動回路２２２、ヒータ駆動回路２２３、リレー駆動回路２２４およびプリドライバ回路２２５を示している。インジェクタ駆動回路２２１は、インジェクタ（不図示）を駆動する駆動信号を生成する。またバルブ駆動回路２２２は、インジェクタへの燃料供給を調整するバルブ（不図示）を駆動する駆動信号を生成する。またヒータ駆動回路２２３は、Ｏ2センサヒータ（不図示）を駆動する駆動信号を生成する。またリレー駆動回路２２４は、メインリレー（不図示）をオン／オフする駆動信号を生成する。またプリドライバ回路２２５は、高電圧または大電流を必要とするパワー素子を駆動する駆動回路を動作させるための信号を生成する。
【００２０】
レジスタ２３は、パワーデバイス３の設定を示す情報と、パワーデバイス３の状態を示す情報を記憶する。
マイクロセカンドバス４は、ダウンストリームバス３１と、アップストリームバス３２と、通信クロックバス３３とを備える。
【００２１】
ダウンストリームバス３１は、ＭＳＢコントローラ１６からＭＳＢコントローラ２１へシリアルデータを送信するためのバスである。
アップストリームバス３２は、ＭＳＢコントローラ２１からＭＳＢコントローラ１６へシリアルデータを送信するためのバスである。
【００２２】
通信クロックバス３３は、ＭＳＢコントローラ１６からＭＳＢコントローラ２１へクロック信号を送信するためのバスである。
そしてマイクロセカンドバス４では、ダウンストリームバス３１およびアップストリームバス３２の両方で、通信クロックバス３３で送信される通信クロックに同期した通信が行われる。なお、マイクロセカンドバス４の最大クロック周波数は４０ＭＨｚである。また、最大の有効データは６４ｂｉｔである。
【００２３】
このように構成されたＥＣＵ１において、マイコン２は、図２に示すように、予め設定された一定周期Ｔｃ毎に到来するフレーム送信タイミングＴｆで定期的に、データフレームをダウンストリームバス３１を介してＭＳＢコントローラ２１へ送信する（図２のデータフレームＤＦを参照）。データフレームには、上記制御信号を示すデータが含まれる。
【００２４】
ただしマイコン２は、ＣＰＵ１１により実行される処理により任意のタイミングでコマンドフレーム送信要求（図２のコマンドフレーム送信要求ＴＲ１を参照）が発生したときに、その直後のフレーム送信タイミングＴｆで、データフレームに代えて、コマンドフレームを、ダウンストリームバス３１を介してＭＳＢコントローラ２１へ送信する（図２のコマンドフレームＣＦを参照）。コマンドフレームは、レジスタ２３へのリード／ライトを行う場合に使用される。
【００２５】
なお、上記一定周期Ｔｃ内において、上記データフレームおよび上記コマンドフレームの何れも送信されていないときに送信されているフレームは、データとして無効なフレームであり、パッシブフレームという（図２のパッシブフレームＰＦを参照）。
【００２６】
また図３に示すように、ＭＳＢコントローラ１６は、上述のシリアライザ１６１およびデシリアライザ１６２（図３では不図示）に加えて、コマンドフレーム送信バッファ１６３、データフレーム送信バッファ１６４およびマルチプレクサ１６５を備える。
【００２７】
コマンドフレーム送信バッファ１６３は、コマンドフレームとして送信されるデータを一時的に格納する。データフレーム送信バッファ１６４は、データフレームとして送信されるデータを一時的に格納する。
【００２８】
マルチプレクサ１６５は、コマンドフレーム送信時にはコマンドフレーム送信バッファ１６３に格納されているデータを選択し、データフレーム送信時にはデータフレーム送信バッファ１６４に格納されているデータを選択して、シリアライザ１６１に出力する。
【００２９】
次に、フレームを送信するためにＣＰＵ１１が実行する処理（以下、ＣＰＵフレーム送信処理という）の手順を説明する。このＣＰＵフレーム送信処理は、マイコン２の動作中に繰り返し実行される処理である。
【００３０】
ＣＰＵフレーム送信処理が実行されると、ＣＰＵ１１は、図４に示すように、まずＳ１０にて、コマンドフレームとして送信されるデータ（以下、コマンドフレーム送信用データという）がＲＡＭ１３に新たに記憶されたか否かを判断する。ここで、コマンドフレーム送信用データがＲＡＭ１３に新たに記憶されていない場合には（Ｓ１０：ＮＯ）、ＣＰＵフレーム送信処理を一旦終了する。
【００３１】
一方、コマンドフレーム送信用データがＲＡＭ１３に新たに記憶されている場合には（Ｓ１０：ＹＥＳ）、Ｓ２０にて、ＲＡＭ１３に記憶されているコマンドフレーム送信用データをコマンドフレームとして送信する場合の送信回数ｎ（ｎは正の整数）を決定する。具体的には、例えば、コマンドフレーム送信用データを、１回のコマンドフレームで送信することができる最大データ量（本実施形態では３２ｂｉｔ）毎に分割することにより、送信回数ｎを決定することができる。なお図３では、ＲＡＭ１３に記憶されているコマンドフレーム送信用データＤＣが、第１送信データＤＣ１、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎ（ｎは正の整数）に分割されている状態を示している。
【００３２】
そしてＳ３０にて、ＤＭＡ転送が完了したことを示すＤＭＡ完了割込信号がＤＭＡコントローラ１５からＭＳＢコントローラ１６に入力した場合に、コマンドフレーム送信要求が発生したとＭＳＢコントローラ１６が判断するように、ＭＳＢコントローラ１６に対して設定を行う。
【００３３】
さらにＳ４０にて、ＤＭＡ転送が完了した後に、その旨を示すＤＭＡ完了割込信号を出力するように、ＤＭＡコントローラ１５に対して設定を行うとともに、Ｓ５０にて、ＤＭＡコントローラ１５において、ＤＭＡコントローラ１５の起動回数を、送信回数ｎから１を減算した値（すなわち、（ｎ−１）回）に設定する。またＳ６０にて、ＤＭＡコントローラ１５において、後述の転送データ指示アドレスを、ＲＡＭ１３に記憶されているコマンドフレーム送信用データの先頭アドレスと、上記先頭アドレスに上記最大データ量（本実施形態では３２ｂｉｔ）とを加算した値（図３では、第２送信データＤＣ２の先頭アドレス）に設定する。
【００３４】
その後Ｓ７０にて、ＲＡＭ１３に記憶されているコマンドフレーム送信用データのうち、上記先頭アドレスと、上記先頭アドレスに上記最大データ量（本実施形態では３２ｂｉｔ）を加算したアドレスとの間に格納されているデータ（図３では、第１送信データＤＣ１）を、コマンドフレーム送信バッファ１６３へ転送する（図３の矢印ＹＴ１を参照）。
【００３５】
そしてＳ８０にて、コマンドフレームの送信が完了した後に、その旨を示す送信完了割込信号を出力するように、ＭＳＢコントローラ１６に対して設定を行う。
その後Ｓ９０にて、コマンドフレームの送信をＭＳＢコントローラ１６に要求する旨を示すフレーム送信要求信号をＭＳＢコントローラ１６へ出力し、ＣＰＵフレーム送信処理を一旦終了する。
【００３６】
次に、フレームを送信するためにＤＭＡコントローラ１５が実行する処理（以下、ＤＭＡＣフレーム送信処理という）の手順を説明する。このＤＭＡＣフレーム送信処理は、マイコン２の動作中に繰り返し実行される処理である。
【００３７】
ＤＭＡＣフレーム送信処理が実行されると、ＤＭＡコントローラ１５は、図５に示すように、まずＳ２１０にて、ＭＳＢコントローラ１６から送信完了割込信号が入力したか否かを判断する。ここで、送信完了割込信号が入力していない場合には（Ｓ２１０：ＮＯ）、ＤＭＡＣフレーム送信処理を一旦終了する。
【００３８】
一方、送信完了割込信号が入力した場合には（Ｓ２１０：ＹＥＳ）、Ｓ２２０にて、ＤＭＡ転送の回数を示す転送回数カウンタの値（以下、転送回数Ｃｔという）が上記の起動回数（すなわち、（ｎ−１）回）以上であるか否かを判断する。
【００３９】
ここで、転送回数Ｃｔが起動回数未満である場合には（Ｓ２２０：ＮＯ）、Ｓ２３０にて、上記転送データ指示アドレスと、上記転送データ指示アドレスに上記最大データ量（本実施形態では３２ｂｉｔ）を加算したアドレスとの間に格納されているデータ（図３では、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎの中の何れか１つの送信データ）をコマンドフレーム送信バッファ１６３へ転送する（図３の矢印ＹＴ２，ＹＴ２，・・・，ＹＴｎを参照）。その後Ｓ２４０にて、ＭＳＢコントローラ１６へＤＭＡ完了割込信号を出力する。
【００４０】
そしてＳ２５０にて、転送回数カウンタをインクリメント（１加算）する。さらにＳ２６０にて、次に転送するデータの先頭アドレスを指示するように転送データ指示アドレスを更新して、ＤＭＡＣフレーム送信処理を一旦終了する。具体的には、転送データ指示アドレスに設定されている値と、上記最大データ量（本実施形態では３２ｂｉｔ）とを加算した値を、新たに転送データ指示アドレスとして設定する。
【００４１】
またＳ２２０にて、転送回数Ｃｔが起動回数以上である場合には（Ｓ２２０：ＹＥＳ）、Ｓ２７０にて、転送回数カウンタをリセット（０に設定）して、ＤＭＡＣフレーム送信処理を一旦終了する。
次に、フレームを送信するためにＭＳＢコントローラ１６が実行する処理（以下、ＭＳＢＣフレーム送信処理という）の手順を説明する。このＭＳＢＣフレーム送信処理は、マイコン２の動作中に繰り返し実行される処理である。
【００４２】
ＭＳＢＣフレーム送信処理が実行されると、ＭＳＢコントローラ１６は、図６に示すように、まずＳ３１０にて、フレーム送信タイミングが到来したか否かを判断する。ここで、フレーム送信タイミングが到来していない場合には（Ｓ３１０：ＮＯ）、ＭＳＢＣフレーム送信処理を一旦終了する。
【００４３】
一方、フレーム送信タイミングが到来した場合には（Ｓ３１０：ＹＥＳ）、Ｓ３２０にて、コマンドフレーム送信要求が発生したか否かを判断する。なおＳ３２０では、ＣＰＵ１１からフレーム送信要求信号が入力した場合、またはＤＭＡコントローラ１５からＤＭＡ完了割込信号が入力した場合に、コマンドフレーム送信要求が発生したと判断する。
【００４４】
ここで、コマンドフレーム送信要求が発生したと判断した場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０にて、コマンドフレーム送信バッファ１６３に格納されているデータをコマンドフレームとして送信し、その後Ｓ３４０にて、ＤＭＡコントローラ１５へ送信完了割込信号を出力し、ＭＳＢＣフレーム送信処理を一旦終了する。
【００４５】
一方、コマンドフレーム送信要求が発生していないと判断した場合には（Ｓ３２０：ＮＯ）、Ｓ３５０にて、データフレーム送信バッファ１６４に格納されているデータをデータフレームとして送信し、ＭＳＢＣフレーム送信処理を一旦終了する。
【００４６】
次に、このように構成されたＥＣＵ１において、コマンドフレームを連続して送信する場合に行われる処理の順序を図３と図７を用いて説明する。なお図７では、コマンドフレームを３回連続して送信する場合の処理順序を示している。そして図７では、Ｓ４１０〜Ｓ５２０の処理ブロックのうち、実線の矩形で示されるブロックはソフトウェアによる処理であることを示し、破線の矩形で示されるブロックはハードウェアによる処理であることを示す。
【００４７】
図７に示すように、まずＳ４１０にて、ＣＰＵ１１が、ＤＭＡコントローラ１５の起動回数を２回に設定する。そしてＳ４２０にて、ＣＰＵ１１が、第１送信データＤＣ１（図３を参照）をコマンドフレーム送信バッファ１６３へ転送する（図３の矢印ＹＴ１を参照）。その後Ｓ４３０にて、ＣＰＵ１１が、フレーム送信要求信号をＭＳＢコントローラ１６へ出力する。
【００４８】
そしてＳ４４０にて、ＭＳＢコントローラ１６が、第１送信データＤＣ１のコマンドフレームを送信する。その後Ｓ４５０にて、ＭＳＢコントローラ１６が送信完了割込信号を出力し（図３の矢印ＹＩ１を参照）、ＤＭＡコントローラ１５が起動する。
【００４９】
そしてＳ４６０にて、ＤＭＡコントローラ１５が、第２送信データＤＣ２（図３を参照）をコマンドフレーム送信バッファ１６３へ転送する（図３の矢印ＹＴ２を参照）。その後Ｓ４７０にて、ＤＭＡコントローラ１５が、ＭＳＢコントローラ１６へＤＭＡ完了割込信号を出力すると（図３の矢印ＹＩ２を参照）、Ｓ４８０にて、ＭＳＢコントローラ１６が、第２送信データＤＣ２のコマンドフレームを送信する。
【００５０】
その後Ｓ４９０にて、ＭＳＢコントローラ１６が送信完了割込信号を出力し（図３の矢印ＹＩ１を参照）、ＤＭＡコントローラ１５が起動する。そしてＳ５００にて、ＤＭＡコントローラ１５が、第３送信データＤＣ３（図３を参照）をコマンドフレーム送信バッファ１６３へ転送する（図３の矢印ＹＴ３を参照）。その後Ｓ５１０にて、ＤＭＡコントローラ１５が、ＭＳＢコントローラ１６へＤＭＡ完了割込信号を出力すると（図３の矢印ＹＩ２を参照）、Ｓ５２０にて、ＭＳＢコントローラ１６が、第３送信データＤＣ３のコマンドフレームを送信する。
【００５１】
このように構成されたＥＣＵ１は、ＣＰＵ１１と、マイクロセカンドバス４を介してデータをシリアル通信により送信するＭＳＢコントローラ１６と、マイクロセカンドバス４を介してＭＳＢコントローラ１６とシリアル通信可能に接続されたＭＳＢコントローラ２１とを備える。そしてＭＳＢコントローラ１６では、予め設定された一定周期Ｔｃ毎に、エンジンを制御するための制御データを示すデータフレームをＭＳＢコントローラ２１へ送信する（Ｓ３５０）。
【００５２】
またＭＳＢコントローラ１６では、コマンドフレーム送信バッファ１６３に、コマンドフレームとして送信するためのコマンドフレーム送信用データが格納され、コマンドフレーム送信要求が発生した場合に（Ｓ３２０：ＹＥＳ）、コマンドフレーム送信バッファ１６３に格納されているコマンドフレーム送信用データをコマンドフレームとしてＭＳＢコントローラ２１へ送信する（Ｓ３３０）。
【００５３】
そしてＥＣＵ１は、ＣＰＵ１１とは別にＤＭＡコントローラ１５を備え、このＤＭＡコントローラ１５は、コマンドフレーム送信用データをコマンドフレーム送信バッファ１６３へ転送する処理（Ｓ２３０）と、コマンドフレーム送信要求を発生させる処理（Ｓ２４０）とを実行することが可能に構成される。
【００５４】
このように構成されたＥＣＵ１では、コマンドフレームを送信するために、コマンドフレーム送信用データをコマンドフレーム送信バッファ１６３へ転送し、その後に、コマンドフレーム送信要求を発生させる必要がある。そしてＥＣＵ１では、これらの処理を、ＣＰＵ１１とは別に設けられたハードウェアで実行させることができる。これにより、ＣＰＵ１１は、コマンドフレームを送信するときに、コマンドフレーム送信用データをコマンドフレーム送信バッファ１６３へ転送し、その後に、コマンドフレーム送信要求を発生させる必要がなくなる。このため、コマンドフレームを送信するときのＣＰＵ１１の負荷を低減することができる。
【００５５】
また、コマンドフレーム送信用データを複数に分割して、分割された複数のコマンドフレーム送信用データのそれぞれを、第１送信データＤＣ１、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎ（ｎは正の整数）として、ＣＰＵ１１は、これら複数の送信データのそれぞれをコマンドフレームとして複数回にわたって送信する場合に、これら複数の送信データのうち、コマンドフレームとして最も早く送信する第１送信データＤＣ１をコマンドフレーム送信バッファ１６３へ転送する転送処理（Ｓ７０）と、この転送処理が完了した後に、フレーム送信要求信号をＭＳＢコントローラ１６へ出力する出力処理（Ｓ９０）とを実行するように構成されている。
【００５６】
またＭＳＢコントローラ１６は、フレーム送信要求信号がＭＳＢコントローラ１６に入力すると、コマンドフレーム送信要求が発生したと判断し（Ｓ３２０）、更に、コマンドフレームをＭＳＢコントローラ２１へ送信した後に、送信完了割込信号をＤＭＡコントローラ１５へ出力する（Ｓ３４０）。
【００５７】
またＤＭＡコントローラ１５は、送信完了割込信号がＤＭＡコントローラ１５に入力する毎に、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎのうちコマンドフレーム送信バッファ１６３へ転送されていない送信データを１つ選択して、選択した送信データをコマンドフレーム送信バッファ１６３へ転送し（Ｓ２３０）、転送した後に、ＤＭＡ完了割込信号をＭＳＢコントローラ１６へ出力する（Ｓ２４０）。
【００５８】
またＭＳＢコントローラ１６は、更に、ＤＭＡ完了割込信号がＭＳＢコントローラ１６に入力すると、コマンドフレーム送信要求が発生したと判断する（Ｓ３２０）。
このように構成されたＥＣＵ１では、第１送信データＤＣ１をコマンドフレーム送信バッファ１６３へ転送する転送処理と、この転送処理が完了した後に、フレーム送信要求信号をＭＳＢコントローラ１６へ出力する出力処理をＣＰＵ１１が行うことにより、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎをコマンドフレーム送信バッファ１６３へ転送する処理と、この転送処理が完了した後に、コマンドフレーム送信要求を発生させる処理をＤＭＡコントローラ１５が実行する。
【００５９】
すなわち、コマンドフレームをｎ回にわたって送信する場合に、（ｎ−１）回の送信においてＣＰＵ１１が上記転送処理および上記出力処理を行う必要がなくなる。このため、コマンドフレームを複数回にわたって連続して送信する場合に、ＣＰＵ１１の負荷を低減することができる。
【００６０】
以上説明した実施形態において、マイクロセカンドバス４は本発明における通信バス、ＭＳＢコントローラ１６は本発明における第１通信部、ＭＳＢコントローラ２１は本発明における第２通信部、Ｓ３５０の処理は本発明におけるデータフレーム送信手段、コマンドフレーム送信バッファ１６３は本発明における格納手段、Ｓ３３０の処理は本発明におけるコマンドフレーム送信手段である。
【００６１】
また、ＤＭＡコントローラ１５は本発明における第１転送部、第ｉ送信データ（ｉ＝１，２，３，・・・，ｎ）は本発明における分割データ、Ｓ７０の処理は本発明における転送処理、Ｓ９０の処理は本発明における出力処理、Ｓ３４０の処理は本発明における第１出力手段、Ｓ２４０の処理は本発明における第２出力手段、送信完了割込信号は本発明における送信完了信号、ＤＭＡ完了割込信号は本発明における転送完了信号である。
【００６２】
（第２実施形態）
以下に本発明の第２実施形態を図面とともに説明する。なお第２実施形態では、第１実施形態と異なる部分を説明する。
【００６３】
第２実施形態のＥＣＵ１は、ＭＳＢＣフレーム送信処理が変更された点以外は第１実施形態と同じである。
次に、第２実施形態のＭＳＢＣフレーム送信処理の手順を説明する。このＭＳＢＣフレーム送信処理は、マイコン２の動作中に繰り返し実行される処理である。
【００６４】
ＭＳＢＣフレーム送信処理が実行されると、ＭＳＢコントローラ１６は、図８に示すように、まずＳ５１０にて、フレーム送信タイミングが到来したか否かを判断する。ここで、フレーム送信タイミングが到来していない場合には（Ｓ５１０：ＮＯ）、ＭＳＢＣフレーム送信処理を一旦終了する。
【００６５】
一方、フレーム送信タイミングが到来した場合には（Ｓ５１０：ＹＥＳ）、Ｓ５２０にて、データフレーム送信バッファ１６４に格納されているデータをデータフレームとして送信する。
その後Ｓ５３０にて、コマンドフレーム送信要求が発生したか否かを判断する。なおＳ３２０では、ＣＰＵ１１からフレーム送信要求信号が入力した場合、またはＤＭＡコントローラ１５からＤＭＡ完了割込信号が入力した場合に、コマンドフレーム送信要求が発生したと判断する。
【００６６】
ここで、コマンドフレーム送信要求が発生したと判断した場合には（Ｓ５３０：ＹＥＳ）、Ｓ５４０にて、コマンドフレーム送信バッファ１６３に格納されているデータをコマンドフレームとして送信し、ＭＳＢＣフレーム送信処理を一旦終了する。一方、コマンドフレーム送信要求が発生していないと判断した場合には（Ｓ５３０：ＮＯ）、ＭＳＢＣフレーム送信処理を一旦終了する。
【００６７】
これによりＭＳＢコントローラ１６は、図９に示すように、一定周期ＴｃでデータフレームＤＦが送信される場合において、コマンドフレーム送信要求ＴＲが発生すると、その直後のデータフレーム送信が完了した後に、コマンドフレームＣＦを送信する。なお本実施形態では、一定周期Ｔｃは、データフレームＤＦを送信するのに要する時間と、コマンドフレームＣＦを送信するのに要する時間との和よりも長くなるように設定されている。
【００６８】
このように構成されたＥＣＵ１では、ＭＳＢコントローラ１６は、データフレームの送信が完了した後に、コマンドフレームを送信する（Ｓ５４０）。これにより、データフレームの代わりにコマンドフレームを送信することがなく、データフレームの送信を遅らせることなくコマンドフレームを送信することができる。
【００６９】
以上説明した実施形態において、Ｓ５４０の処理は本発明におけるコマンドフレーム送信手段である。
（第３実施形態）
以下に本発明の第３実施形態を図面とともに説明する。なお第３実施形態では、第１実施形態と異なる部分を説明する。
【００７０】
第３実施形態のＥＣＵ１は、図１０に示すように、ＤＭＡコントローラ１５を省略して、ＭＳＢコントローラ１６がＦＩＦＯ（First In First Out）メモリ１６６を備えるように変更された点以外は第１実施形態と同じである。
【００７１】
ＦＩＦＯメモリ１６６は、データが格納された順に、格納されたデータを出力することができるように構成されている。またＦＩＦＯメモリ１６６は、コマンドフレーム送信バッファ１６３にデータが格納されていない場合に、ＦＩＦＯメモリ１６６に格納されているデータを出力するように構成されている。
【００７２】
次に、フレームを送信するためにＣＰＵ１１が実行する処理（以下、ＣＰＵフレーム送信処理という）の手順を説明する。このＣＰＵフレーム送信処理は、マイコン２の動作中に繰り返し実行される処理である。
【００７３】
ＣＰＵフレーム送信処理が実行されると、ＣＰＵ１１は、図１１に示すように、まずＳ６１０にて、コマンドフレームとして送信されるデータ（以下、コマンドフレーム送信用データという）がＲＡＭ１３に新たに記憶されたか否かを判断する。ここで、コマンドフレーム送信用データがＲＡＭ１３に新たに記憶されていない場合には（Ｓ６１０：ＮＯ）、ＣＰＵフレーム送信処理を一旦終了する。
【００７４】
一方、コマンドフレーム送信用データがＲＡＭ１３に新たに記憶されている場合には（Ｓ６１０：ＹＥＳ）、Ｓ６２０にて、ＦＩＦＯメモリ１６６からコマンドフレーム送信バッファ１６３にデータが転送されると自動でコマンドフレームを送信するように、ＭＳＢコントローラ１６に対して設定を行う。
【００７５】
そしてＳ６３０にて、ＲＡＭ１３に記憶されているコマンドフレーム送信用データを、１回のコマンドフレームで送信することができる最大データ量（本実施形態では３２ｂｉｔ）毎に分割する。その後Ｓ６４０にて、コマンドフレーム送信用データを分割することにより生成された第１送信データＤＣ１、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎ（ｎは正の整数）を、ＦＩＦＯメモリ１６６へ転送して、ＣＰＵフレーム送信処理を一旦終了する。なおＳ６４０では、第１送信データＤＣ１、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎの順にＦＩＦＯメモリ１６６へ転送される（図１０を参照）。
【００７６】
次に、フレームを送信するためにＭＳＢコントローラ１６が実行する処理（以下、ＭＳＢＣフレーム送信処理という）の手順を説明する。このＭＳＢＣフレーム送信処理は、マイコン２の動作中に繰り返し実行される処理である。
【００７７】
ＭＳＢＣフレーム送信処理が実行されると、ＭＳＢコントローラ１６は、図１２に示すように、まずＳ７１０にて、フレーム送信タイミングが到来したか否かを判断する。ここで、フレーム送信タイミングが到来していない場合には（Ｓ７１０：ＮＯ）、ＭＳＢＣフレーム送信処理を一旦終了する。
【００７８】
一方、フレーム送信タイミングが到来した場合には（Ｓ７１０：ＹＥＳ）、Ｓ７２０にて、コマンドフレーム送信バッファ１６３にデータが格納されているか否かを判断する。ここで、コマンドフレーム送信バッファ１６３にデータが格納されている場合には（Ｓ７２０：ＹＥＳ）、Ｓ７３０にて、コマンドフレーム送信バッファ１６３に格納されているデータをコマンドフレームとして送信し、その後Ｓ７４０にて、コマンドフレーム送信バッファ１６３に格納されているデータを消去して、ＭＳＢＣフレーム送信処理を一旦終了する。
【００７９】
一方、コマンドフレーム送信バッファ１６３にデータが格納されていない場合には（Ｓ７２０：ＮＯ）、Ｓ７５０にて、データフレーム送信バッファ１６４に格納されているデータをデータフレームとして送信し、ＭＳＢＣフレーム送信処理を一旦終了する。
【００８０】
次に、このように構成されたＥＣＵ１において、ＦＩＦＯメモリ１６６を用いてコマンドフレームを連続して送信する場合に行われる処理の順序を図１０と図１３を用いて説明する。なお図１３では、コマンドフレームを３回連続して送信する場合の処理順序を示している。そして図１３では、Ｓ６１０〜Ｓ６８０の処理ブロックのうち、実線の矩形で示されるブロックはソフトウェアによる処理であることを示し、破線の矩形で示されるブロックはハードウェアによる処理であることを示す。
【００８１】
図１３に示すように、まずＳ８１０にて、ＣＰＵ１１が、ＦＩＦＯメモリ１６６からコマンドフレーム送信バッファ１６３にデータが転送されると自動でコマンドフレームを送信するように、ＭＳＢコントローラ１６に対して設定を行う。
【００８２】
その後Ｓ８２０にて、ＣＰＵ１１が、第１送信データＤＣ１、第２送信データＤＣ２および第３送信データＤＣ３をＦＩＦＯメモリ１６６に配置する。そしてＳ８３０にて、ＦＩＦＯメモリ１６６が、第１送信データＤＣ１をコマンドフレーム送信バッファ１６３へ転送する（図１０の矢印ＹＴ１１を参照）。なお、第１送信データＤＣ１が送信されることにより、第１送信データＤＣ１が格納されていた領域に第２送信データＤＣ２が格納される（図１０の矢印ＹＴ１２を参照）とともに、第２送信データＤＣ２が格納されていた領域に第３送信データＤＣ３が格納される（図１０の矢印ＹＴ１３を参照）。
【００８３】
その後Ｓ８４０にて、ＭＳＢコントローラ１６が、第１送信データＤＣ１のコマンドフレームを送信する。
そしてＳ８５０にて、ＦＩＦＯメモリ１６６が、空になったコマンドフレーム送信バッファ１６３へ第２送信データＤＣ２を転送する。なお、第２送信データＤＣ２が送信されることにより、第２送信データＤＣ２が格納されていた領域に第３送信データＤＣ３が格納される。その後Ｓ８６０にて、ＭＳＢコントローラ１６が、第２送信データＤＣ２のコマンドフレームを送信する。
【００８４】
さらにＳ８７０にて、ＦＩＦＯメモリ１６６が、空になったコマンドフレーム送信バッファ１６３へ第３送信データＤＣ３を転送する。これによりＳ８８０にて、ＭＳＢコントローラ１６が、第３送信データＤＣ３のコマンドフレームを送信する。
【００８５】
このように構成されたＥＣＵ１は、ＣＰＵ１１と、マイクロセカンドバス４を介してデータをシリアル通信により送信するＭＳＢコントローラ１６と、マイクロセカンドバス４を介してＭＳＢコントローラ１６とシリアル通信可能に接続されたＭＳＢコントローラ２１とを備える。そしてＭＳＢコントローラ１６では、予め設定された一定周期Ｔｃ毎に、エンジンを制御するための制御データを示すデータフレームをＭＳＢコントローラ２１へ送信する（Ｓ７５０）。
【００８６】
またＭＳＢコントローラ１６では、コマンドフレーム送信バッファ１６３に、コマンドフレームとして送信するためのコマンドフレーム送信用データが格納され、コマンドフレーム送信バッファ１６３にデータが格納されている場合に（Ｓ７２０：ＹＥＳ）、コマンドフレーム送信バッファ１６３に格納されているコマンドフレーム送信用データをコマンドフレームとしてＭＳＢコントローラ２１へ送信する（Ｓ７３０）。
【００８７】
そしてＥＣＵ１は、ＣＰＵ１１とは別にＦＩＦＯメモリ１６６を備え、このＦＩＦＯメモリ１６６は、ＣＰＵ１１による処理を行うことなくコマンドフレーム送信用データをコマンドフレーム送信バッファ１６３へ転送する。
【００８８】
またＭＳＢコントローラ１６は、コマンドフレーム送信バッファ１６３に新たにコマンドフレーム送信用データが格納されると、コマンドフレーム送信要求が発生したと判断し（Ｓ７２０：ＹＥＳ）、コマンドフレームを送信する（Ｓ７３０）。すなわち、ＦＩＦＯメモリ１６６がコマンドフレーム送信用データをコマンドフレーム送信バッファ１６３へ転送する処理は、コマンドフレーム送信要求を発生させる処理に相当する。
【００８９】
このように構成されたＥＣＵ１では、コマンドフレームを送信するために、コマンドフレーム送信用データをコマンドフレーム送信バッファ１６３へ転送し、その後に、コマンドフレーム送信要求を発生させる必要がある。そしてＥＣＵ１では、これらの処理を、ＣＰＵ１１とは別に設けられたハードウェアで実行させることができる。これにより、ＣＰＵ１１は、コマンドフレームを送信するときに、コマンドフレーム送信用データをコマンドフレーム送信バッファ１６３へ転送し、その後に、コマンドフレーム送信要求を発生させる必要がなくなる。このため、コマンドフレームを送信するときのＣＰＵ１１の負荷を低減することができる。
【００９０】
また、コマンドフレーム送信用データを複数に分割して、分割された複数のコマンドフレーム送信用データのそれぞれを、第１送信データＤＣ１、第２送信データＤＣ２、第３送信データＤＣ３、・・・、第ｎ送信データＤＣｎ（ｎは正の整数）として、ＭＳＢコントローラ１６は、コマンドフレーム送信バッファ１６３に新たに第ｉ送信データ（ｉ＝１，２，３，・・・，ｎ）が格納されると、コマンドフレーム送信要求が発生したと判断する（Ｓ７２０：ＹＥＳ）。
【００９１】
またＭＳＢコントローラ１６は、コマンドフレームを送信した後に、コマンドフレーム送信バッファ１６３に格納されている第ｉ送信データを消去する（Ｓ７４０）。
またＦＩＦＯメモリ１６６は、複数の第ｉ送信データを格納するとともに、コマンドフレーム送信バッファ１６３に格納された第ｉ送信データが消去される毎に、複数の第ｉ送信データのうちコマンドフレーム送信バッファ１６３へ転送されていない第ｉ送信データを、ＦＩＦＯメモリ１６６に格納された順に１つ選択して、選択した第ｉ送信データをコマンドフレーム送信バッファ１６３へ転送する。
【００９２】
このように構成されたＥＣＵ１では、ＣＰＵ１１が、第１〜ｎ送信データＤＣ１〜ｎをＦＩＦＯメモリ１６６に格納する処理を行うことにより、その後、ＦＩＦＯメモリ１６６が、第１〜ｎ送信データＤＣ１〜ｎをコマンドフレーム送信バッファ１６３へ転送する処理と、コマンドフレーム送信要求を発生させる処理を実行するようにすることができる。
【００９３】
すなわち、コマンドフレームをｎ回にわたって送信する場合に、ｎ回の送信においてＣＰＵ１１が、第１〜ｎ送信データＤＣ１〜ｎをコマンドフレーム送信バッファ１６３へ転送する処理と、コマンドフレーム送信要求を発生させる処理を行う必要がなくなる。このため、コマンドフレームを複数回にわたって連続して送信する場合に、ＣＰＵ１１の負荷を低減することができる。
【００９４】
以上説明した実施形態において、Ｓ７５０の処理は本発明におけるデータフレーム送信手段、Ｓ７３０の処理は本発明におけるコマンドフレーム送信手段、ＦＩＦＯメモリ１６６は本発明における第２転送部、Ｓ７４０の処理は本発明における消去手段である。
【００９５】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
【符号の説明】
【００９６】
１…ＥＣＵ、４…マイクロセカンドバス、１１…ＣＰＵ、１５…ＤＭＡコントローラ、１６,２１…ＭＳＢコントローラ、１６３…コマンドフレーム送信バッファ、１６６…ＦＩＦＯメモリ
【図１】
2014095944.tif 000003
【図２】
2014095944.tif 000004
【図３】
2014095944.tif 000005
【図４】
2014095944.tif 000006
【図５】
2014095944.tif 000007
【図６】
2014095944.tif 000008
【図７】
2014095944.tif 000009
【図８】
2014095944.tif 000010
【図９】
2014095944.tif 000011
【図１０】
2014095944.tif 000012
【図１１】
2014095944.tif 000013
【図１２】
2014095944.tif 000014
【図１３】
2014095944.tif 000015