(57)【特許請求の範囲】
【請求項１】
送信データが書き込まれる送信レジスタと、
複数の送信先から１つの送信先を指定する送信先指定手段と、
送信先に送信データをシリアル送信する送信制御手段と、
送信待ちの送信データ及び各送信データに対応付けられた優先度情報を蓄積する送信データバッファと、
前記送信レジスタに書き込まれた送信データと前記送信データバッファに蓄積されている送信データの送信先が同じ場合、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする送信データ制御手段と、を有し、
前記送信データ制御手段は、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする頻度に応じて前記優先度情報を決定して、前記送信データバッファに上書きされた送信データに対応付けて前記送信データバッファに書き込む、通信装置。
【請求項２】
前記優先度情報が大きいほど優先度が高い場合、
前記送信データ制御手段は、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする際、
前記送信データバッファに蓄積されている送信データの前記優先度情報よりも大きい前記優先度情報を、前記送信レジスタに書き込まれた送信データの前記優先度情報に設定して上書きする、ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記送信データ制御手段は、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする際、
上書きする回数が多くなるほど、大きい前記優先度情報を前記送信レジスタに書き込まれた送信データの前記優先度情報に設定して上書きする、ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記送信データバッファは、前記送信制御手段が送信対象とする送信データが記憶される次送信データバッファと、次送信データバッファに書き込まれるまで１つ以上の送信データが蓄積される送信待ち送信データバッファとを有し、
前記送信レジスタに書き込まれた送信データと前記次送信データバッファに蓄積されている送信データの送信先が同じ場合、
前記送信データ制御手段は、前記次送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする、
ことを特徴とする請求項１〜３いずれか１項に記載の通信装置。
【請求項５】
前記送信データバッファは、前記送信制御手段が送信対象とする送信データが記憶される次送信データバッファと、次送信データバッファに書き込まれるまで１つ以上の送信データが蓄積される送信待ち送信データバッファとを有し、
前記送信待ち送信データバッファに蓄積されている送信データを、決定された前記優先度情報とともに前記送信レジスタに書き込まれた送信データで上書きしたことで、
前記送信待ち送信データバッファの送信データの前記優先度情報の方が、前記次送信データバッファの送信データの前記優先度情報よりも高くなった場合、
前記送信データ制御手段は、前記送信待ち送信データバッファの最も前記優先度情報が高い送信データと、前記次送信データバッファの送信データを入れ替える、
ことを特徴とする請求項１〜３いずれか１項記載の通信装置。
【請求項６】
前記優先度情報の初期値はゼロ又は前記送信レジスタに送信データが書き込まれる際に任意に設定される、ことを特徴とする請求項１〜５いずれか１項記載の通信装置。
【請求項７】
請求項１〜６いずれか１項に記載の通信装置と、
ＣＰＵと、
前記ＣＰＵが実行するためのプログラムであって、前記プログラムを実行した前記ＣＰＵが前記送信レジスタに送信先と送信データを書き込むプログラムを記憶するプログラム記憶手段と、を有し、
前記ＣＰＵは前記送信レジスタに送信先と送信データを書き込む、情報処理装置。
【請求項８】
送信データが書き込まれる送信レジスタと、
複数の送信先から１つの送信先を指定する送信先指定手段と、
送信先に送信データをシリアル送信する送信制御手段と、
送信待ちの送信データ及び各送信データに対応付けられた優先度情報を蓄積する送信データバッファと、を有する通信装置のデータ送信方法であって、
前記送信レジスタに書き込まれた送信データと前記送信データバッファに蓄積されている送信データの送信先が同じ場合、送信データ制御手段が、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きするステップと、
前記送信データ制御手段が、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする頻度に応じて前記優先度情報を決定して、前記送信データバッファに上書きされた送信データに対応付けて前記送信データバッファに書き込むステップと、を有することを特徴とするデータ送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信先にデータを送信する通信装置に関し、特に、チップセレクトにより送信先を切り換える通信装置に関する。
【背景技術】
【０００２】
マイコン内のチップやマイコンと周辺のＩＣがシリアル通信することでデータを送受信することがある。このようなシリアル通信において、送信側と受信側が１対多の関係になると、送信側（以下、単に通信装置という）にはチップセレクト機能が搭載されることが一般的である。また、マイコンでは周辺の各ＩＣへのデータ送信要求が不定期に発生するため、あるＩＣへのデータ送信中に別のＩＣへのデータ送信要求が生じてもよいように、通信装置には送信バッファが設けられる。
【０００３】
この送信バッファに複数の送信データが蓄積された場合に、送信制御をどのように行うかについていくつかの手法が知られている。例えば、ＦＩＦＯ（First  In  First  Out）方式により送信データの送信順を管理することができる。しかし、ＦＩＦＯでは、送信バッファにすでに多くのデータが蓄積されている場合、マイコンが新たに送信要求した送信データが送信されるまでの時間保証が困難になる。
【０００４】
また、例えば、通信装置が優先度を管理する手法が知られている。この場合、通信装置は、ＩＣ毎に優先度を設定しておいたり、ソフトウェア等により動的に優先度を決定する、などの優先度管理が必要になる。しかし、ＩＣ毎に優先度を設定すると、優先度の低いＩＣに送信される送信データの時間保証が困難になる。また、ソフトウェア等により動的に優先度を設定する手法では、処理が複雑になるという問題がある（例えば、特許文献１参照。）。特許文献１には、複数のレジスタにデータを書き込むレジスタ書き込み部において、複数のレジスタへのデータの書き込みタイミングが競合した場合、生成される内部クロック信号に基づいてデータ書き込みの優先順位を決定するレジスタ書き込み部が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１４０２１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された技術では、クロック周波数を利用するなどして優先度を決定するので、処理が複雑である点に変わりはない。また、ＩＣの数が多くなった場合に対応しきれないという問題がある。
【０００７】
本発明は、上記課題に鑑み、複雑な優先度制御を行うことなく、複数の周辺回路に送信されるデータの時間保証が可能な通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題に鑑み、本発明は、送信データが書き込まれる送信レジスタと、複数の送信先から１つの送信先を指定する送信先指定手段と、送信先に送信データをシリアル送信する送信制御手段と、送信待ちの送信データ及び各送信データに対応付けられた優先度情報を蓄積する送信データバッファと、前記送信レジスタに書き込まれた送信データと前記送信データバッファに蓄積されている送信データの送信先が同じ場合、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする送信データ制御手段と、を有し、前記送信データ制御手段は、前記送信データバッファに蓄積されている送信データを前記送信レジスタに書き込まれた送信データで上書きする頻度に応じて前記優先度情報を決定して、前記送信データバッファに上書きされた送信データに対応付けて前記送信データバッファに書き込む、ことをする通信装置を提供する。
【発明の効果】
【０００９】
複雑な優先度制御を行うことなく、複数の周辺回路に送信されるデータの時間保証が可能な通信装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の通信装置がデータを送信する手順を模式的に説明する図の一例である。
【図２】ＥＣＵの概略構成図の一例である。
【図３】従来の通信装置の構成図の一例とレジスタフォーマットの一例を示す図である。
【図４】本実施形態の通信装置の構成図の一例を示す図である。
【図５】本実施形態のレジスタフォーマットの一例を示す図である。
【図６】従来の通信装置のタイミングチャート図の一例である。
【図７】従来の通信装置のシーケンス図の一例である。
【図８】通信装置のタイミングチャート図の一例である。
【図９】通信装置のシーケンス図の一例である。
【図１０】送信データ制御部の処理手順を示すフローチャート図の一例である。
【図１１】優先度の遷移例を説明する図の一例である。
【図１２】優先度の遷移例を説明する図の一例である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１は、本実施形態の通信装置が送信データを送信する手順を模式的に説明する図の一例である。
図１（ａ）に示すように、送信データバッファには送信データ１〜３が順番に書き込まれる。図では送信デーファバッファの下の送信データほど先に書き込まれたものとする。送信データバッファには優先度の設定が可能になっている。
【００１２】
通信装置は、次送信データバッファが空いていれば、次送信データバッファに送信データを書き込む。優先度が同じ場合、書き込む送信データはＦＩＦＯ（First In First Out）により決定される。このため、次送信データバッファの送信データ１は送信用のレジスタに書き込まれ、送信先に送信される。
図１（ｂ）に示すように、次送信データバッファの送信データ１がなくなると、通信装置は送信データ１の次に古い送信データ２を次送信データバッファに書き込む。ここで、次送信データバッファに送信データ２が存在する状態で、送信レジスタに送信データ３ａが書き込まれたとする。送信データ３と送信データ３ａは送信先が同じ送信データである。
図１（ｃ）に示すように、通信装置は、送信レジスタの送信データと同じ送信先の送信データが送信データバッファ又は次送信データバッファに存在すると、先に書き込まれた送信データの優先度を読み出し、１つインクリメントして、後から書き込まれた送信データの優先度を置き換える。つまり、送信データ３の優先度が“０”の場合、送信データ３ａの優先度が“１”となる。これは、短時間に同じ送信先に送信される送信データは優先度が高いと考えられるためである。
図１（ｄ）に示すように、通信装置は送信データバッファから送信データ３を消去し、送信データ３ａを書き込む。これにより、後から送信される送信データを優先して送信することができる。
図１（ｅ）に示すように、通信装置は次送信データバッファの送信データと送信データバッファの送信データの優先度を比較する。すなわち、送信データ２の優先度０と送信データ３ａの優先度１を比較する。この場合、優先度の高い方を優先すべきと考えられる。
図１（ｆ）に示すように、送信データバッファの送信データの方が優先度が高い場合、通信装置は次送信データバッファの送信データと送信データバッファの送信データを入れ替える。すなわち、送信データ２と送信データ３ａを入れ替える。
【００１３】
このように、通信装置は、同じ送信先の送信データの送信要求が頻繁に発生すると、該送信データの優先度を高くする。また、送信データバッファ又は次送データバッファに存在する送信先が同じ送信データを、後に書き込まれた送信データで上書きする。この結果、同じ送信先の送信データは１つになるので、時間保証がしやすくなる。
【００１４】
また、送信データバッファの送信データは、送信の頻度に応じて優先度が調整されているので、後から書き込まれた送信データでも、頻繁に書き込まれる送信先の送信データは優先度が高くなり確実に時間保証される。
【００１５】
また、同じ送信先の送信データは送信データバッファに１つだけになるので、送信データバッファのレジスタ数は送信先の数とすればよい（チップセレクト数）。このため、送信データバッファの容量を低減できる。従来の技術では、最大通信負荷を考慮して送信先毎に２つ以上のレジスタが用意することが一般的なので、本実施形態では、送信データバッファの容量を半分程度かそれ以下にすることができる。
【００１６】
また、同じ送信先の送信データは１つしかないので、送信データ間の優先度管理が容易になる。このため、最大通信負荷を考慮した複雑な優先度管理が不要になる。また、１つの送信先に必要なレジスタ数が１つでよいので、送信データバッファを大きく取ることができない場合でも、送信先を増加させることが容易になる。
【００１７】
〔構成例〕
図２は、ＥＣＵの概略構成図の一例を示す。ＥＣＵ（electronic  control  unit）３００はマイコン２００や周辺の回路を有する。周辺の回路は、例えば、ＩＣ１０１（以下、区別する場合ＩＣ１〜４という）であり、マイコン２００に付加的な機能を提供する。本実施形態の通信装置１００はこのＩＣ１〜４と通信する。
【００１８】
マイコン２００は、メインバス１９に接続されたＣＰＵ１１、ＲＡＭ１２、ＲＯＭ１３、ＩＮＴＣ１４、ＤＭＡＣ１５、及び、バスコントローラ１６を有する。また、マイコン２００は、周辺バス２０に接続されたＴｉｍｅｒ（以下、区別する場合Timer1、Timer0という）１７、ＡＤＣ１８、及び、通信装置１００を有する。ＣＰＵ１１は、シングルコア又はマルチコアのＣＰＵである。または、ハードウェアマルチスレッド（ＨＭＴ）型のＣＰＵでもよい。ＣＰＵ１１はＲＡＭ１２を作業メモリにしてプログラムを実行する。ＲＯＭ１３はフラッシュメモリなどの不揮発メモリであり、ＣＰＵ１１が実行するプログラムや静的なデータを記憶している。プログラムは、デバイスドライバ、ＯＳ、マイコン２００に特有のアプリ、などである。アプリは１つとは限らず、例えば機能統合されたＥＣＵ３００では制御対象の異なる複数のアプリが記憶されることがある。
【００１９】
ＤＭＡＣ１５は、ＣＰＵ１１からの指示によりＲＡＭ１２やＲＯＭ１３のデータをＴｉｍｅｒ１７やＡＤＣ１８、通信装置１００、又は、不図示のＣＡＮコントローラに送信する。また、ＤＭＡＣ１５は、これらの回路からＩＮＴＣ１４を介して割り込みされたＣＰＵ１１から指示を受けて、Ｔｉｍｅｒ１７やＡＤＣ１８、通信装置１００からデータを受け取り、ＲＡＭ１２に書き込む。
【００２０】
ＩＮＴＣ１４はＩＲＱやその他の割り込み端子を介してＴｉｍｅｒ１７、ＡＤＣ１８、又は、通信装置１００から入力された割り込み要求を、周辺機器の優先順位に基づき調停してＣＰＵ１１に通知する。これによりＣＰＵ１１は割り込みした周辺機器に応じて決まった処理を実行する。
【００２１】
バスコントローラ１６は、メインバス１９と周辺バス２０との間のバス本数や周波数の違いを吸収して相互にデータを受け渡す。
【００２２】
周辺バス２０には、実行速度の比較的おそい周辺回路が接続されており、Ｔｉｍｅｒ１７は、例えばＣＰＵ１１が設定した値をカウントし終わるとＩＮＴＣ１４を介してＣＰＵ１１に割り込みすることでＣＰＵ１１に通知する。通知によりＣＰＵ１１は例えば定期的に所定のプログラムを実行することができる。
【００２３】
通信装置１００は、ＩＣ１〜４とそれぞれ接続されている。具体的には、クロック信号線、データ送信線、データ受信線、及び、Ｃ／Ｓ線によりＩＣ１〜４とそれぞれ接続されている。通信装置１００と１つのマルチプレクサを接続し、マルチプレクサからＩＣ１〜４をそれぞれ接続してもよい。
【００２４】
ＩＣ１〜４は、マイコン２００が使用するリソースの一つである。これらは、マイコン２００内のリソース（ＡＤＣやＴｉｍｅｒ）ではリソースが不十分な場合や、マイコン２００が備えていない機能でマイコン２００が必要とする機能を提供するために配置される。ＩＣ１〜４は、例えば、ＡＤＣ、ＤＡＣ、別のマイコン等である。そして、通信装置１００は、マイコン２００が選択的にＩＣ１〜４と通信することを可能にする。例えば、マイコン２００が十分な数のＩ／Ｏポートを有していない場合に有効である。ＩＣ１がＡＤＣであれば、マイコン２００はＩＣ１にＡ／Ｄ変換を要求する際に、ＩＣ１を送信先に指定して通信装置１００に変換対象の送信データを書き込む。また、例えば、ＩＣ２が他のマイコンであれば、マイコン２００は他のマイコンを送信先に指定して通信装置１００に送信対象の送信データを書き込む。
【００２５】
逆に、ＩＣ１〜４が通信装置１００に送信した送信データは、通信装置１００がＩＮＴＣ１４を介してＣＰＵ１１に割り込みすることで、受信したことが通知される。ＣＰＵ１１がＤＭＡＣ１５を制御すると、ＩＣ１〜４の送信データがＲＡＭ１２に書き込まれる。
【００２６】
〔通信装置の構成例〕
図３は、比較のために従来の通信装置１００の構成図の一例（図３（ａ））とレジスタフォーマット（図３（ｂ））を、図４は本実施形態の通信装置１００の構成図の一例を、図５は本実施形態のレジスタフォーマットの一例を、それぞれ示す。
【００２７】
図３（ａ）と図４を比較すると、本実施形態の通信装置１００は、次送信データバッファ３９と送信データ制御部４０とを有する点で異なっている。また、送信データバッファ３６と送信データ制御部４０が接続されることで、時間保障された送信データの送信制御が可能になる。
【００２８】
＜レジスタフォーマット＞
まず、レジスタフォーマットについて説明する。
・送信レジスタ３５のレジスタフォーマットは、送信先チップセレクト指定ビットと送信データを有する。送信レジスタ３５のレジスタフォーマットは従来から変更がない。
・受信レジスタ３８のレジスタフォーマットは、受信チップセレクト番号ビットと受信データを有する。受信レジスタ３８のレジスタフォーマットは従来から変更がない。
・送信データバッファ３６のレジスタフォーマットは、プライオリティビット、送信先チップセレクト指定ビット、送信データを有する。本実施形態の送信データバッファ３６のレジスタフォーマットにはプライオリティビットが追加されている。
・次送信データバッファ３９のレジスタフォーマットは、送信データバッファ３６のレジスタフォーマットと同じである。
【００２９】
また、従来の送信データバッファ３６が、送信先が４つしかなくても例えば３０段必要であるのに対し、本実施形態の送信データバッファ３６は最小では４段あればまかなえる。これは、送信先が同じ送信データにおいては、過去の送信データの優先度が、より新しい送信データに反映され、過去の送信データは上書きされるためである。
【００３０】
また、各レジスタに設定される情報は以下のとおりである。
・送信先チップセレクト指定ビット：ＩＣ１〜４を選択するための情報
・送信データ：ＩＣ１〜４に送信されるデータ（データにはコマンドも含まれる）
・プライオリティビット：送信データの優先度情報（値が大きいほど優先度が高いとする）
・受信チップセレクト番号ビット：ＩＣ１〜４のうち送信データを受信レジスタ３８に書き込んだＩＣの識別情報
・受信データ：ＩＣ１〜４から受信されたデータ
また、各レジスタに送信データ等を設定する回路は以下のようになる。
・送信レジスタ：ＣＰＵ１１
・受信レジスタ：ＩＣ１〜ＩＣ４（シリアル通信制御部）
・送信データバッファ：送信データ制御部４０
・次送信データバッファ：送信データ制御部４０
・送受信制御レジスタ：ＣＰＵ１１
＜通信装置の各ブロック＞
クロック制御レジスタ３１には、クロック周波数を制御するためのクロック制御情報（例えば分周比）が設定される。マイコン２００は例えば電源オンの直後の初期設定などでクロック制御情報をクロック制御レジスタ３１に設定する。シリアルクロック制御部３２は、クロック制御情報に基づき例えばＰＬＬと分周器を用いてクロック周波数を生成する。なお、このクロック周波数は、ＩＣ１〜４と同期を取るための信号であり、クロック信号線４１を介してＩＣ１〜４に供給される。シリアルクロック制御部３２は、シリアル通信制御部３３やマイコン２００内の周辺機器にクロック周波数を供給する。
【００３１】
シリアル通信制御部３３は、シリアル出力信号線４２とシリアル入力信号線４３を有する。シリアル出力信号線４２、シリアル入力信号線４３はいずれもＩＣ１〜４と接続されている。シリアル出力信号線４２は、通信装置１００からＩＣ１〜４のいずれかに送信データを送信するための信号線であり、シリアル入力信号線４３は、ＩＣ１〜４のいずれかから通信装置１００が送信データを受信するための信号線である。なお、シリアル通信制御部３３は、次送信データバッファ３９、送受信制御レジスタ３７、及び、受信レジスタ３８と接続されている。
【００３２】
シリアル通信制御部３３は、不図示のデータバッファ（送信用、受信用）を有し、次送信データバッファ３９の送信データをデータバッファに移動してから送信する。また、シリアル通信制御部３３はＩＣ１〜４から受信した送信データをデータバッファに蓄積し、１つの送信データを受信し終わると受信レジスタ３８に移動する。なお、シリアル通信制御部３３は、送信データの送信時、送信先のＩＣ１〜４から受信データを受信する。受信された受信データは送信データのエコーや、受信状態を通知するためのデータである。
【００３３】
チップセレクト制御部３４は、チェネル数分のチップセレクト信号線を有する。すなわち、各チップセレクト信号線４４がＩＣ１〜４のいずれかと接続されている。チップセレクト制御部３４は、次送信データバッファ３９の送信先チップセレクト指定ビットを読み出し、この送信先チップセレクト指定ビットに基づきＩＣ１〜４のいずれかと接続されたチップセレクト信号線４４をアサートする（負論理正論理のいずれでもよい）。
【００３４】
送信レジスタ３５には、送信対象の送信データが書き込まれる。マイコン２００のＣＰＵ１１は、プログラムを実行することでＩＣ１〜４のいずれかに送信データを送信する命令を実行すると、送信レジスタ３５に送信データを書き込む。プログラムにとって、送信先チップセレクト指定ビットと送信データは引数などにより指定されている。
【００３５】
送信データ制御部４０は、送信レジスタ３５、送信データバッファ３６、及び、次送信データバッファ３９と接続されている。送信データ制御部４０は、送信データバッファ３６においてプライオリティビットが付与されてない送信用のデータにプライオリティビットを付与する。プライオリティビットの初期値はゼロとする。また、送信データ制御部４０は、送信データバッファ３６において送信先が同じ送信データの検出、プライオリティビットの書き換え、送信先が同じ送信データのうち古い送信データの消去、次送信データバッファ３９と送信データバッファ３６のプライオリティビットの比較、比較結果に基づく送信データの入れ換え等を行う。詳しい制御は後述する。
【００３６】
本実施形態の送信データバッファ３６は、少なくとも送信先数と同じ数のレジスタを有する。送信先数よりも多い数のレジスタを有していてもよい。送信先数より多いレジスタを搭載することで、ＣＰＵ１１が短時間に同じ送信先の送信データを送信レジスタ３５に書き込んだ場合に複数の送信データを送信データバッファ３６に記憶できるので、マイコン２００の待機状態を減らすことができる。
【００３７】
送信データ制御部４０は、プライオリティビットの高い送信データから優先して送信データバッファ３６から読み出すが、プライオリティビットが同じなら古い送信データから読み出す。この意味で、送信データバッファ３６はＦＩＦＯ型の性質を有する。
【００３８】
なお、従来の送信データバッファ３６は、書き込み開始アドレスを示すライトポインタと、読み出し開始アドレスを示すリードポインタを有する。ライトポインタは送信データバッファ３６に最後に送信データが書き込まれたレジスタの次のレジスタのアドレスを示し、リードポインタはシリアル通信制御部３３に読み取られた送信データが記憶されていたレジスタの次のレジスタのアドレスを示す。送信データバッファ３６の送信データがシリアル通信制御部３３により送信されると、ライトポインタとリードポインタは同じレジスタのアドレスを示す。したがって、リードポインタの方がライトポインタよりも小さいアドレスを示す場合、シリアル通信制御部３３が送信すべき送信データが送信データバッファ３６に記憶されていることになる。
【００３９】
次送信データバッファ３９は、原則的に、次に、シリアル通信制御部３３が送信する送信データが記憶されるバッファである。原則的にと書いたのは、シリアル通信制御部３３に取り込まれる前であれば、優先度によって次送信データバッファ３９から送信データバッファ３６に移動する場合があるためである。いったん、シリアル通信制御部３３に送信された送信データが次送信データバッファ３９に戻ることはない。
【００４０】
送受信制御レジスタ３７は、マイコン２００のＣＰＵ１１が送信許可又は受信許可を設定するためのレジスタである。ＣＰＵ１１は、例えば、送信レジスタ３５に送信データを書き込み終わると送信許可を送受信制御レジスタ３７に設定し、送受信完了割り込みを受け取ると受信許可を送受信制御レジスタ３７に設定する。
【００４１】
受信レジスタ３８はシリアル通信制御部３３とチップセレクト制御部３４と接続されている。受信レジスタ３８には、チップセレクト制御部３４がアサートしているチャネル情報により受信チップセレクト番号、及び、シリアル通信制御部３３が受信した受信データが書き込まれる。シリアル通信制御部３３がＣＰＵ１１に送受信完了割り込みすると、ＣＰＵ１１は受信レジスタ３８から受信データを読み出す。
【００４２】
〔送信データについて〕
図１にて説明したように、本実施形態の通信装置１００は送信先が同じ送信データのうち後の送信データのみを送信することになる。このため、送信データは相対値ではなく絶対値に制限される。例えば、状態そのものではなく状態の反転を要求する送信データ（例えば、“１”を送る度に開閉を判定する送信データ）は相対値が送信されるため、同じ送信先の送信データのうち奇数個が欠けると制御と状態が逆になってしまう。
【００４３】
これに対し、Ｈｉｇｈ又はＬｏｗ、オン又はオフ、開又は閉などのように、数値そのものが含まれる送信データは絶対値が送信されるため、同じ送信先の送信データのうち１つ以上が欠けても、最後の絶対値が有効なのでＣＰＵ１１が指示したとおりの制御や状態が得られる。したがって、本実施形態のＣＰＵ１１はこのような絶対値の送信データを送信するように設計されている。
【００４４】
〔従来の送信例〕
図６は、比較のために説明する従来の通信装置１００のタイミングチャート図の一例を、図７はシーケンス図の一例をそれぞれ示す。
ｓ１：ＣＰＵ１１は、送信データ１を送信レジスタ３５に書き込む。
ｓ２：送信データバッファ３６は送信レジスタ３５への書き込みをフラグなどで検出して、送信データ１をレジスタに記憶する。なお、送信データバッファ３６は、新たに記憶したレジスタの次のレジスタを示すようにライトポインタを更新する。この結果、ライトポインタとリードポインタが不一致となる。
ｓ３：ＣＰＵ１１は送信データ１を送信レジスタ３５に書き込むと、送受信制御レジスタ３７に送信許可を設定する。
ｓ４：シリアル通信制御部３３は、ライトポインタとリードポインタの不一致を検出して、送信データバッファ３６のリードポインタが示すレジスタから送信データ１を読み出す。
ｓ５：シリアル通信制御部３３は、送受信制御レジスタ３７に送信許可が設定されているので、送信データ１の送信を開始する。なお、シリアル通信制御部３３は、読み出したレジスタの次のレジスタを示すようにリードポインタを更新する。この結果、ライトポインタとリードポインタは一致する。
ｓ６：シリアル通信制御部３３が送信データ１を送信している間に、ＣＰＵ１１が送信データ２を送信レジスタ３５に書き込む。
ｓ７：送信データバッファ３６は送信レジスタ３５への書き込みをフラグなどで検出して、レジスタに記憶する。
ｓ８：シリアル通信制御部３３が送信データ１を送信している間に、ＣＰＵ１１が送信データ３を送信レジスタ３５に書き込む。
ｓ９：送信データバッファ３６は送信レジスタ３５への書き込みをフラグなどで検出して、レジスタに記憶する。ｓ６〜ｓ７においてもライトポインタが更新される。
ｓ１０：シリアル通信制御部３３は送信データ１の送信が完了すると受信レジスタ３８に受信データを書き込む。
ｓ１１：また、シリアル通信制御部３３は送信データ１の送信が完了すると、ＣＰＵ１１に送受信完了割り込みを行う。
ｓ１２：シリアル通信制御部３３は、ライトポインタとリードポインタの不一致を検出して、送信データバッファ３６のリードポインタが示すレジスタから送信データ２を読み出す。
ｓ１３：シリアル通信制御部３３は、送受信制御レジスタ３７に送信許可が設定されているので、送信データ２の送信を開始する。なお、シリアル通信制御部３３は、読み出したレジスタの次のレジスタを示すようにリードポインタを更新する。この次点では、ライトポインタとリードポインタは不一致のままである。
ｓ１４：シリアル通信制御部３３は送信データ２の送信が完了すると受信レジスタ３８に受信データを書き込む。
ｓ１５：また、シリアル通信制御部３３は送信データ２の送信が完了すると、ＣＰＵ１１に送受信完了割り込みを行う。
ｓ１６：シリアル通信制御部３３は、ライトポインタとリードポインタの不一致を検出して、送信データバッファ３６のリードポインタが示すレジスタから送信データ３を読み出す。
ｓ１７：シリアル通信制御部３３は、送受信制御レジスタ３７に送信許可が設定されているので、送信データ３の送信を開始する。なお、シリアル通信制御部３３は、読み出したレジスタの次のレジスタを示すようにリードポインタを更新する。これにより、ライトポインタとリードポインタが一致する。
ｓ１８：シリアル通信制御部３３は送信データ３の送信が完了すると受信レジスタ３８に受信データを書き込む。
ｓ１９：また、シリアル通信制御部３３は送信データ３の送信が完了すると、ＣＰＵ１１に送受信完了割り込みを行う。
【００４５】
〔本実施形態の送信例〕
図８は、本実施形態の通信装置１００のタイミングチャート図の一例を、図９はシーケンス図の一例をそれぞれ示す。
ｓ２１：ＣＰＵ１１は、送信データ１を送信レジスタ３５に書き込む。
ｓ２２：送信データ制御部４０は、送信レジスタ３５への書き込みをフラグなどで検出して、送信レジスタ３５から送信データ１を読み出す。
ｓ２３：送信データ制御部４０は、送信データバッファ３６から各送信データの送信先チップセレクト指定ビットを読み出す。この時はまだ送信データバッファ３６に送信データはない。
ｓ２４：送信データ制御部４０は、次送信データバッファ３９に記憶されている送信データの送信先チップセレクト指定ビットを読み出す。この時はまだ次送信データバッファ３９に送信データはない。
ｓ２５：送信データ制御部４０は、送信レジスタ３５から読み出した送信データ１と、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ３６又は次送信データバッファ３９にあるか否かを判定する。
ｓ２６：ここでは、送信データバッファ３６と次送信データバッファ３９に送信データが記憶されていないので、送信データ制御部４０は送信データ１を次送信データバッファ３９に書き込む。
ｓ２７：ＣＰＵ１１が送信データ２を送信レジスタ３５に書き込む。
ｓ２８：ＣＰＵ１１が送信データ３を送信レジスタ３５に書き込む。
ｓ２９：送信データ制御部４０は、送信レジスタ３５への書き込みをフラグなどで検出して、送信レジスタ３５から送信データ２を読み出す。
ｓ３０：送信データ制御部４０は、送信データバッファ３６から各送信データの送信先チップセレクト指定ビットを読み出す。送信データバッファ３６にはまだ送信データがない。
ｓ３１：送信データ制御部４０は、次送信データバッファ３９に記憶されている送信データの送信先チップセレクト指定ビットを読み出す。次送信データバッファ３９には送信データ１が記憶されているので、送信データ１の送信先チップセレクト指定ビットを読み出す。
ｓ３２：送信データ制御部４０は、送信レジスタ３５から読み出した送信データ２と、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ３６又は次送信データバッファ３９にあるか否かを判定する。
ｓ３３：送信データ１と送信データ２は、送信先チップセレクト指定ビットが一致しないので、送信データ制御部４０は送信データ２を送信データバッファ３６に書き込む。
ｓ３４：送信データ制御部４０は、送信レジスタ３５への書き込みをフラグなどで検出して、送信レジスタ３５から送信データ３を読み出す。
ｓ３５：送信データ制御部４０は、送信データバッファ３６から各送信データの送信先チップセレクト指定ビットを読み出す。送信データバッファ３６から送信データ２の送信先チップセレクト指定ビットが読み出される。
ｓ３６：送信データ制御部４０は、次送信データバッファ３９に記憶されている送信データの送信先チップセレクト指定ビットを読み出す。次送信データバッファ３９には送信データ１が記憶されているので、送信データ１の送信先チップセレクト指定ビットを読み出す。
ｓ３７：送信データ制御部４０は、送信レジスタ３５から読み出した送信データ３と、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ３６又は次送信データバッファ３９にあるか否かを判定する。
ｓ３８：送信データ３と、送信データ１又は送信データ２は、送信先チップセレクト指定ビットが一致しないので、送信データ制御部４０は送信データ３を送信データバッファ３６に書き込む。
ｓ３９：ＣＰＵ１１は送受信制御レジスタ３７に送信許可を設定する。
ｓ４０：シリアル通信制御部３３は、次送信データバッファ３９の送信データがあることをフラグなどで検知し、送信データ１を次送信データバッファ３６から読み出す。次送信データバッファ３９の送信データの下位の１６ビットはシリアル通信制御部３３に移動する。また、次送信データバッファ３９の送信データの上位の４ビットはチップセレクト制御部３４に移動する。
ｓ４１：シリアル通信制御部３３は、送受信制御レジスタ３７に送信許可が設定されているので、送信データ１の送信を開始する。
ｓ４２：送信データ制御部４０は、次送信データバッファ３９の送信データがシリアル通信制御部３３に移動したことを検知して、送信データバッファ３６から送信データ２を読み出し、次送信データバッファ３９に書き込む。なお、送信データ２は送信データバッファ３６から消去される。
ｓ４３：そして、シリアル通信制御部３３が送信データ１を送信している間に、ＣＰＵ１１が送信データ３ａを送信レジスタ３５に書き込む。送信データ３ａと送信データ３は送信先が同じである。
ｓ４４：送信データ制御部４０は、送信レジスタ３５への書き込みをフラグなどで検出して、送信レジスタ３５から送信データ３ａを読み出す。
ｓ４５：送信データ制御部４０は、送信データバッファ３６から各送信データの送信先チップセレクト指定ビットを読み出す。ここでは送信データ３の送信先チップセレクト指定ビットが読み出される。
ｓ４６：送信データ制御部４０は、次送信データバッファ３９に記憶されている送信データ２の送信先チップセレクト指定ビットを読み出す。ここでは、送信データ２の送信先チップセレクト指定ビットを読み出す。
ｓ４７：送信データ制御部４０は、送信レジスタ３５から読み出した送信データ３ａと、送信先チップセレクト指定ビットが同じ送信データが送信データバッファ３６又は次送信データバッファ３９にあるか否かを判定する。
ｓ４８：送信データ３ａと送信データ３は、送信先チップセレクト指定ビットが一致するので、送信データ制御部４０は、送信データバッファ３６の送信データ３のプライオリティビットを読み出す。
ｓ４９：送信データ制御部４０は、読み出したプライオリティビットを１インクリメントする。
ｓ５０：送信データ制御部４０は、１インクリメントしたプライオリティビットを、送信データ３ａのプライオリティビットに設定する。
ｓ５１：送信データ制御部４０は、送信データバッファ３６の送信データ３を、送信データ３ａにより置き換える。
ｓ５２：送信データ制御部４０は、次送信データバッファ３９から送信データ２のプライオリティビットを読み出す。
ｓ５３：送信データ制御部４０は、送信データバッファ３６から送信データ３ａのプライオリティビットを読み出す。
ｓ５４：送信データ制御部４０は、送信データ３ａと送信データ２のプライオリティビットを比較する。
ｓ５５：送信データ３ａの方がプライオリティビットが大きいので、送信データ制御部４０は次送信データバッファ３９の送信データ２を送信データバッファ３６に退避する。
ｓ５６：送信データバッファ３６の送信データ３ａを次送信データバッファ３９に書き込む（送信データ２と送信データ３ａを入れ替える）。
ｓ５７：シリアル通信制御部３３は送信データ１の送信が完了すると受信レジスタ３８に受信データを書き込む。
ｓ５８：また、シリアル通信制御部３３は送信データ１の送信が完了すると、ＣＰＵ１１に送受信完了割り込みを行う。
ｓ５９：シリアル通信制御部３３は、次送信データバッファ３９に送信データがあることをフラグなどで検知し、また、送受信制御レジスタ３７に送信許可が設定されているので、送信データ３ａを読み出す。
ｓ６０：シリアル通信制御部３３は送信データ３ａの送信を開始する。これにより、次送信データバッファ３９の送信データ３ａの下位１６ビットはシリアル通信制御部３３に移動する。また、次送信データバッファ３９の送信データ３ａの上位の４ビットはチップセレクト制御部３４に移動する。
【００４６】
この後、送信データ制御部４０は、次送信データバッファ３９の送信データ３ａがシリアル通信制御部３３に移動したことを検知して、送信データバッファ３６から送信データ２を読み出し、次送信データバッファ３９に書き込む。送信データ２は、シリアル通信制御部３３が送信データ３ａを送信したら、シリアル通信制御部３３により送信される。
【００４７】
このように本実施形態の通信装置１００は、送信データの優先度に応じて、送信順をソートして優先度の高い順に送信することができる。また、頻繁に送信されるデータほど優先度を高くすることができる。
【００４８】
＜送信データ制御部の処理手順＞
図１０は、送信データ制御部４０の処理手順を示すフローチャート図の一例である。処理手順の一部がシーケンス図の説明と重複する。
【００４９】
送信データ制御部４０は送信レジスタ３５を監視し、送信レジスタ３５に書き込みがあるか否かを判定している（Ｓ１１０）。
【００５０】
送信レジスタ３５に書き込みがあった場合（Ｓ１１０のＹｅｓ）、送信データ制御部４０は送信レジスタ３５から送信データを読み出す（Ｓ１２０）。
【００５１】
送信データ制御部４０は、次送信データバッファ３９に同じ送信先の送信データがあるか否かを判定する（Ｓ１３０）。次送信データバッファ３９にそもそも送信データがない場合、又は、次送信データバッファ３９に送信データがあっても送信先チップセレクト指定ビットが一致しない場合、Ｓ１３０の判定はＮｏになる。
【００５２】
次送信データバッファ３９に同じ送信先の送信データがある場合（Ｓ１３０のＹｅｓ）、送信データ制御部４０は、次送信データバッファ３９のデータ部分（下位１６ビット）を、送信レジスタ３５から読み出した送信データのデータ部分で置き換える（Ｓ１４０）。これにより、後から同じ送信先に送信されるデータのみを送信でき、時間保証が容易になる。
【００５３】
次に、送信データ制御部４０は、次送信データバッファ３９のプライオリティビットを１インクリメントする（Ｓ１５０）。これにより、頻繁に送信される送信データの優先度を大きくすることができる。
【００５４】
次送信データバッファ３９に同じ送信先の送信データがない場合（Ｓ１３０のＮｏ）、送信データ制御部４０は、送信データバッファ３６に同じ送信先の送信データがあるか否かを判定する（Ｓ１６０）。なお、次送信データバッファ３９と送信データバッファ３６に同じ送信先の送信データが記憶されることはない。また、次送信データバッファ３９に送信データが書き込まれていないのに、送信データバッファ３６に送信データが書き込まれている状況は生じない。
【００５５】
送信データバッファ３６に同じ送信先の送信データがある場合（Ｓ１６０のＹｅｓ）、送信データ制御部４０は、送信データバッファ３６の送信先が同じ送信データからプライオリティビットを取得する（Ｓ１７０）。
【００５６】
送信データ制御部４０は、取得したプライオリティビットを１インクリメントする（Ｓ１８０）。これにより、頻繁に送信される送信データの優先度を大きくすることができる。
【００５７】
送信データ制御部４０は、１インクリメントしたプライオリティビットを、送信先レジスタから読み出した送信データのプライオリティビットに設定する（Ｓ１９０）。
【００５８】
そして、プライオリティビットが新たに設定された送信データを、送信データ制御部４０は送信データバッファ３６の送信先が同じ送信データに上書きする（Ｓ２００）。これにより、後から同じ送信先に送信されるデータのみを送信できる。
【００５９】
送信データ制御部４０は、次送信データバッファ３９のプライオリティビットが、上書きした送信データバッファ３６の送信データのプライオリティビット以上か否かを判定する（Ｓ２１０）。プライオリティビットが等しい場合は、先に次送信データバッファ３９に書き込まれている送信データが優先される。このため、次送信データバッファ３９のプライオリティビットが、上書きした送信データバッファ３６の送信データのプライオリティビット以上の場合（Ｓ２１０のＹｅｓ）、処理は終了する。
【００６０】
次送信データバッファ３９のプライオリティビットが、上書きした送信データバッファ３６の送信データのプライオリティビット以上でない場合（Ｓ２１０のＮｏ）、上書きした送信データバッファ３６の送信データのプライオリティビットが最も大きいことになる。このため、送信データ制御部４０は、送信データバッファ３６の上書きされた送信データと、次送信データバッファ３９の送信データを入れ替える（Ｓ２２０）。これにより、頻繁に送信される送信データを優先的に送信することができる。
【００６１】
一方、ステップＳ１６０において、送信データバッファ３６に同じ送信先の送信データがない場合（Ｓ１６０のＮｏ）、送信データ制御部４０は、次送信データバッファ３９に送信データが書き込まれているか否かを判定する（Ｓ２３０）。なお、この判定はＳ１３０で判定しておくこともできる。
【００６２】
次送信データバッファ３９に送信データが書き込まれている場合（Ｓ２３０のＹｅｓ）、次送信データバッファ３９に送信データを書き込めないので、送信データ制御部４０は、送信レジスタ３５から読み出した送信データを送信データバッファ３６に書き込む（Ｓ２４０）。
【００６３】
次送信データバッファ３９に送信データが書き込まれていない場合（Ｓ２３０のＮｏ）、次送信データバッファ３９に送信データを書き込めるので、送信データ制御部４０は、送信レジスタ３５から読み出した送信データを次送信データバッファ３９に書き込む（Ｓ２５０）。
【００６４】
〔優先度の遷移について〕
図１１は、優先度の遷移例を説明する図の一例である。図１１（ａ）に示すように、次送信データバッファ３９に送信データ３が書き込まれた状態で、送信レジスタ３５にデータ３ａが書き込まれると、図１１（ｂ）に示すように、優先度が１つ大きくなった送信データ３ａが次送信データバッファ３９に書き込まれる（Ｓ１４０，Ｓ１５０の処理）。
【００６５】
ＣＰＵ１１が次々と同じ送信先に送信データ３ｂを送信する状況が生じた場合を想定すると、まず、図１１（ｃ）（ｄ）に示すように、送信データ３ｂの優先度が送信データ３ａに対し１つ大きくなり、次送信データバッファ３９に送信データ３ｂが書き込まれる。
【００６６】
次に、送信レジスタ３５に送信データ３ｃが書き込まれた場合も、同様に、図１１（ｅ）（ｆ）に示すように、送信データ３ｃの優先度が送信データ３ｂに対し１つ大きくなり、次送信データバッファ３９に送信データ３ｃが書き込まれる。
【００６７】
図１２は、優先度の遷移例を説明する図の別の一例である。送信データバッファ３６の送信データ２と同じ送信先に、ＣＰＵ１１が次々と送信データを送信する状況が生じたとする。この場合、次送信データバッファ３９の送信データと送信データバッファ３６の送信データのプライオリティビットが逆転した時に、次送信データバッファ３９の送信データと送信データバッファ３６の送信データが入れ替わる。
【００６８】
図１２（ａ）（ｂ）は図１１（ａ）（ｂ）と同じ状態である。そして、例えば図１２（ｃ）において、送信レジスタ３５に送信データ２ａが書き込まれた場合、送信データ２ａの優先度が送信データ２に対し１つ大きくなり、図１２（ｄ）に示すように、送信データバッファ３６に送信データ２ａが書き込まれる（Ｓ１７０〜Ｓ２００の処理）。この次点では、次送信データバッファ３９の送信データ３ａと送信データバッファ３６の送信データ２ａのプライオリティビットが等しい。
【００６９】
次に、図１２（ｅ）において、送信レジスタ３５に送信データ２ｂが書き込まれた場合、送信データ２ｂの優先度が送信データ２ａに対し１つ大きくなり、図１２（ｆ）に示すように、送信データバッファ３６に送信データ２ｂが書き込まれる。
【００７０】
この次点で、次送信データバッファ３９の送信データ３ａと送信データバッファ３６の送信データ２ｂのプライオリティビットが逆転するので、次送信データバッファ３９の送信データ３ｂと送信データバッファ３６の送信データ２ｂの入れ替えが発生する。
【００７１】
〔その他〕
上記の実施形態では、プライオリティビットの初期値をゼロとしたが、送信データ制御部４０はゼロ以外のプライオリティビットを設定することもできる。例えば、送信データ制御部４０は、過去の所定時間（例えば、数秒）の送信先毎の送信頻度を監視し、送信頻度の小さい送信データのプライオリティビットを大きくして、初期値として送信データバッファ３６に設定する。たまにしか送信されない送信先の送信データのプライオリティビットの初期値が大きくなるので、高頻度に送信されるためプライオリティビットが大きくなった送信データに対し、たまにしか送信されない送信先データに対しても時間保証しやすくなる。
【００７２】
また、プライオリティビットは送信データ制御部４０が設定するとしたが、ＣＰＵ１１が設定可能としてもよい。この場合、ＣＰＵ１１が実行するソフトウェアは、送信先毎に、又は、同じ送信先でもイベントの種類によってプライオリティビットを増減する。したがって、他の送信データが高頻度で送信されているため優先度が高くなっても、ＣＰＵ１１が早く送信したい送信データを優先的に送信することができる。
【符号の説明】
【００７３】
１１        ＣＰＵ
３１        クロック制御レジスタ
３２        シリアルクロック制御部
３３        シリアル通信制御部
３４        チップセレクト制御部
３５        送信レジスタ
３６        送信データバッファ
３７        送受信制御レジスタ
３８        受信レジスタ
３９        次送信データバッファ
４０        送信データ制御部
１００      通信装置
１０１      ＩＣ
２００      マイコン
３００      ＥＣＵ
【図１】
0005708273.tif 000002
【図２】
0005708273.tif 000003
【図３】
0005708273.tif 000004
【図４】
0005708273.tif 000005
【図５】
0005708273.tif 000006
【図６】
0005708273.tif 000007
【図７】
0005708273.tif 000008
【図８】
0005708273.tif 000009
【図９】
0005708273.tif 000010
【図１０】
0005708273.tif 000011
【図１１】
0005708273.tif 000012
【図１２】
0005708273.tif 000013